Skip to content
View in the app

A better way to browse. Learn more.

Armbian Community Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

HW H.265 And H.264 Codec On H3

Featured Replies

Hi everybody

I'm using Orange PI One with OS Armbian Debian GNU/Linux 8 (jessie) 3.4.112-sun8i (Server)

I need to convert some videos for make video stream(H264) but it works so slowy(3~10 fps) when I use  ffmpeg.

I think ffmpeg works slowly because it doesn't use HW Codec so how can I enable it in H3 CPU and use it in ffmpeg?

https://github.com/uboborov/ffmpeg_h264_H3

 

To give you some idea, I get ~24FPS encoding 1080p h264 into 1080p h264 using cedrus.

 

I doubt you will get much improved performance because SW decode h265 will be very slow

 

I think a raspberry pi is better for video because the openmax platform has more support and allows hw decode too.

 

I think a raspberry pi is better for video because the openmax platform has more support and allows hw decode too.

 

Pardon? RPi's outdated VideoCore IV does h.264 decoding HW accelerated but not h.265. While more recent Allwinner SoCs can do that at least with 8 bit (no 10 bit support): http://linux-sunxi.org/Cedrus#Supported_codec_matrix (you can add H5 here too -- progress with this SoC is mostly missing in linux-sunxi wiki yet)

 

Instead of recommending those boring and outdated Raspberries it would help if people would start contributing support for better platforms.

Pardon? RPi's outdated VideoCore IV does h.264 decoding HW accelerated but not h.265. While more recent Allwinner SoCs can do that at least with 8 bit (no 10 bit support): http://linux-sunxi.org/Cedrus#Supported_codec_matrix (you can add H5 here too -- progress with this SoC is mostly missing in linux-sunxi wiki yet)

 

Instead of recommending those boring and outdated Raspberries it would help if people would start contributing support for better platforms.

 

You're right, I edited my post.

  • Author

thank you for reply  :rolleyes:

I got FFmpeg  Cedrus from it's originally Source  and added this patch (ffmpeg_h264_H3) and make configured it with below Command

./configure --prefix=/usr --enable-nonfree --enable-gpl --enable-version3 --enable-vdpau --enable-libx264 --enable-libmp3lame --enable-libpulse --enable-libv4l2

when it compiled and installed I got this version:

$ ffmpeg -version

ffmpeg version git-2015-01-22-f86a076 Copyright (c) 2000-2014 the FFmpeg developers
built on Feb  7 2017 10:05:28 with gcc 4.9.2 (Debian 4.9.2-10)
configuration: --prefix=/usr --enable-nonfree --enable-gpl --enable-version3 --enable-vdpau --enable-libx264 --enable-libmp3lame --enable-libpulse --enable-libv4l2
libavutil      54.  6.100 / 54.  6.100
libavcodec     56.  0.101 / 56.  0.101
libavformat    56.  2.100 / 56.  2.100
libavdevice    56.  0.100 / 56.  0.100
libavfilter     5.  0.102 /  5.  0.102
libswscale      3.  0.100 /  3.  0.100
libswresample   1.  1.100 /  1.  1.100
libpostproc    53.  0.100 / 53.  0.100

but when I try encode video I get this error:  [cedrus264 @ 0x12a1760] VE Open error.

agape@orangepione:~/ffmpegtest$ ffmpeg -i jellyfish-5-mbps-hd-h264.mkv -pix_fmt nv12 -c:v cedrus264 -f null /dev/null
ffmpeg version git-2015-01-22-f86a076 Copyright (c) 2000-2014 the FFmpeg developers
  built on Feb  7 2017 10:05:28 with gcc 4.9.2 (Debian 4.9.2-10)
  configuration: --prefix=/usr --enable-nonfree --enable-gpl --enable-version3 --enable-vdpau --enable-libx264 --enable-libmp3lame --enable-libpulse --enable-libv4l2
  libavutil      54.  6.100 / 54.  6.100
  libavcodec     56.  0.101 / 56.  0.101
  libavformat    56.  2.100 / 56.  2.100
  libavdevice    56.  0.100 / 56.  0.100
  libavfilter     5.  0.102 /  5.  0.102
  libswscale      3.  0.100 /  3.  0.100
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  0.100 / 53.  0.100
Input #0, matroska,webm, from 'jellyfish-5-mbps-hd-h264.mkv':
  Metadata:
    encoder         : libebml v1.2.0 + libmatroska v1.1.0
    creation_time   : 2016-02-06 04:00:51
  Duration: 00:00:30.03, start: 0.000000, bitrate: 4976 kb/s
    Stream #0:0(eng): Video: h264 (High), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 1k tbn, 59.94 tbc (default)
[cedrus264 @ 0x12a1760] VE Open error.
Output #0, null, to '/dev/null':
  Metadata:
    encoder         : libebml v1.2.0 + libmatroska v1.1.0
    Stream #0:0(eng): Video: h264, q=2-31, 128 kb/s, SAR 1:1 DAR 0:0, 29.97 fps (default)
    Metadata:
      encoder         : Lavc56.0.101 cedrus264
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (cedrus264))
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

Hello everybody!

I use NanoPi Neo Air with Allwinner H3

I've installed cedrus264 encoder and tried to use it for webcam streaming with ffmpeg.

I used htop to control cpu load and found, that ffmpeg uses too much memory! Is it normal for hardware encoding?

oron@nanopiair:~/FFmpeg-Cedrus-master$ sudo ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -pix_fmt nv12 -r 25 -c:v cedrus264 -f mpegts udp://192.168.10.236:1234
ffmpeg version 2.3.git Copyright (c) 2000-2014 the FFmpeg developers
  built on Feb  9 2017 11:10:38 with gcc 5.4.0 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 20160609
  configuration: --prefix=/usr --enable-nonfree --enable-gpl --enable-version3 --enable-vdpau --enable-libx264 --enable-libmp3lame --enable-libpulse --enable-libv4l2
  libavutil      54.  6.100 / 54.  6.100
  libavcodec     56.  0.101 / 56.  0.101
  libavformat    56.  2.100 / 56.  2.100
  libavdevice    56.  0.100 / 56.  0.100
  libavfilter     5.  0.102 /  5.  0.102
  libswscale      3.  0.100 /  3.  0.100
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  0.100 / 53.  0.100
Input #0, video4linux2,v4l2, from '/dev/video0':
  Duration: N/A, start: 7107.486161, bitrate: 147456 kb/s
    Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 147456 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc
[VDPAU SUNXI] VE version 0x1680 opened.
Output #0, mpegts, to 'udp://192.168.10.236:1234':
  Metadata:
    encoder         : Lavf56.2.100
    Stream #0:0: Video: h264 (cedrus264), nv12, 640x480, q=2-31, 200 kb/s, 25 fps, 90k tbn, 25 tbc
    Metadata:
      encoder         : Lavc56.0.101 cedrus264
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (cedrus264))
Press [q] to stop, [?] for help
frame= 5698 fps= 25 q=30.0 Lsize=   46445kB time=00:03:47.92 bitrate=1669.3kbits/s dup=5 drop=123    
 

Htop results:

 

Screenshot_from_2017_02_10_15_54_17.png

Hi everybody

I encoded stream to h264 with success, but I have troubles with streaming it using ffserver. I'm using orange pi zero with Debian GNU/Linux 8 (jessie) 3.4.113-sun8i. Any suggestions?

Guest
This topic is now closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.