FFmpeg Cedrus H.264 Codec On H3
Cedrus – проект программного обеспечения, который является полностью 100% открытым исходным кодом драйвера для использования аппаратного ускорения видео.
Сборка FFmpeg с поддержкой Cedrus H.264
тестировал на ARMBIAN 5.25 stable Debian GNU/Linux 8 (jessie) 3.4.113-sun8i
git clone https://github.com/stulluk/FFmpeg-Cedrus.git
Применяем патч:
git clone https://github.com/uboborov/ffmpeg_h264_H3.git
cp /root/ffmpeg_h264_H3/cedrus264.c /root/FFmpeg-Cedrus/libavcodec/cedrus264.c
cp -R /root/ffmpeg_h264_H3/sunxi /root/FFmpeg-Cedrus/libavcodec/arm
apt-get install libpulse-dev libv4l-dev libmp3lame-dev libx264-dev
cd FFmpeg-Cedrus
./configure --prefix=/usr --enable-nonfree --enable-gpl --enable-version3 --enable-vdpau --enable-libx264 --enable-libmp3lame --enable-libpulse --enable-libv4l2
make -j 4
make install
ffmpeg -version
ffmpeg version git-2015-01-22-f86a076 Copyright (c) 2000-2014 the FFmpeg developers
built on Feb 11 2017 10:31:03 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 enable-librtmp
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
проверка :
ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -pix_fmt nv12 -r 25 -c:v cedrus264 -f mpegts udp://localhost:1234
root@orangepipc:~# ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -pix_fmt nv12 -r 25 -c:v cedrus264 -f mpegts udp://192.168.0.4:8092
ffmpeg version git-2015-01-22-f86a076 Copyright (c) 2000-2014 the FFmpeg developers
built on Feb 11 2017 12:57:57 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, video4linux2,v4l2, from ‘/dev/video0’:
Duration: N/A, start: 11274.796209, 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.0.4:8092’:
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= 1085 fps= 25 q=30.0 Lsize= 5250kB time=00:00:43.40 bitrate= 991.0kbits/s dup=0 drop=210
fps= 25, h264-codec, приемлимая нагрузка на CPU
для проверки запустим VLC на удалённой машине и пытаемся там воспроизвести эту ахинею:
udp://@:1234 или udp://@0.0.0.0:1234
только после этого запускаем ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -pix_fmt nv12 -r 25 -c:v cedrus264 -f mpegts udp://localhost:1234, вместо localhost указываем адрес удаленной машины с VLC. На роутере надо пробросить порт 1234.
Добавить комментарий