树莓派编译ffmpeg支持x264硬解码播放视频

树莓派编译ffmpeg支持h264_mmal硬解码

1,x264源码编译
1.1下载x264源码,解压
1.2添加一个脚本文件config_x264_rpi.sh ,放入1.1解压之后的文件夹中
1.3脚本内容
#!/bin/sh
./configure \
--disable-shared --enable-static \
--enable-strip \
--disable-cli
1.4执行完脚本后
sudo make -j4
sudo make install 
1.5你会在/usr/local/include  /usr/local/lib 中看到x264相关的内容
1.6将编好的库文件名x264加入项目的CMakeLists中


2,安装usrland
2.1下载usrland源码,解压
2.2直接运行脚本buildme
2.3你会在/opt/vc 中找到mmal的相关头文件和依动态赖库
2.6将编好的库文件名    
    libmmal.so
    libmmal_components.so
    libmmal_core.so
    libmmal_util.so
    libmmal_vc_client.so
    libbcm_host.so
    加入项目的CMakeLists中,动态库需要加上扩展名.so
2.7cmakelist中加入set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -latomic")

3编译ffmpeg
3.1下载ffmpeg源码,解压
3.2添加脚本文件config_ffmpeg_rpi.sh,放入3.1解压后的文件中
3.3脚本内容
#!/bin/sh
PREFIX=/usr/local
./configure \
--enable-gpl    --enable-version3 --enable-nonfree \
--enable-static --disable-shared \
\
--prefix=$PREFIX \
\
--disable-opencl \
--disable-thumb \
--disable-pic \
--disable-stripping \
\
--enable-small \
\
--enable-ffmpeg \
--enable-ffplay \
--enable-ffprobe \
\
--disable-doc \
--disable-htmlpages \
--disable-podpages \
--disable-txtpages \
--disable-manpages \
\
--disable-everything \
\
--enable-libx264 \
--enable-encoder=libx264 \
--enable-decoder=h264 \
--enable-encoder=aac \
--enable-decoder=aac \
--enable-encoder=ac3 \
--enable-decoder=ac3 \
--enable-encoder=rawvideo \
--enable-decoder=rawvideo \
--enable-encoder=mjpeg \
--enable-decoder=mjpeg \
\
--enable-demuxer=concat \
--enable-muxer=flv \
--enable-demuxer=flv \
--enable-demuxer=live_flv \
--enable-muxer=hls \
--enable-muxer=segment \
--enable-muxer=stream_segment \
--enable-muxer=mov \
--enable-demuxer=mov \
--enable-muxer=mp4 \
--enable-muxer=mpegts \
--enable-demuxer=mpegts \
--enable-demuxer=mpegvideo \
--enable-muxer=matroska \
--enable-demuxer=matroska \
--enable-muxer=wav \
--enable-demuxer=wav \
--enable-muxer=pcm* \
--enable-demuxer=pcm* \
--enable-muxer=rawvideo \
--enable-demuxer=rawvideo \
--enable-muxer=rtsp \
--enable-demuxer=rtsp \
--enable-muxer=rtsp \
--enable-demuxer=sdp \
--enable-muxer=fifo \
--enable-muxer=tee \
\
--enable-parser=h264 \
--enable-parser=aac \
\
--enable-protocol=file \
--enable-protocol=tcp \
--enable-protocol=rtmp \
--enable-protocol=cache \
--enable-protocol=pipe \
\
--enable-filter=aresample \
--enable-filter=allyuv \
--enable-filter=scale \
--enable-libfreetype \
\
--enable-indev=v4l2 \
--enable-indev=alsa \
\
--enable-omx \
--enable-omx-rpi \
--enable-encoder=h264_omx \
\
--enable-mmal \
--enable-hwaccel=h264_mmal \
--enable-decoder=h264_mmal \
\
--extra-ldflags="-latomic"\
3.4执行脚本后
sudo make -j4
sudo make install
3.5你会在/usr/local/include  /usr/local/lib看到ffmpeg相关的头文件和lib文件
3.6测试ffmpeg是否支持硬解码
   执行命令 ffmpeg后出现 h264_omx --enable-mmal --enable-hwaccel=h264_mmal
   表示支持硬解码
3.6将3.5文件加入想项目,lib名称加入到CMakeList文件中
3.7然后编译项目,代码中根据名称h264_mmal查找解码器来测试播放视频

4软硬解码对比
4.1cpu使用率降低20%以上,但是比软件的延时大;

以上由本人测试通过
测试环境:树莓派4  
ffmpeg信息:ffmpeg version 4.4.git Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 8 (Raspbian 8.3.0-6+rpi1)

你可能感兴趣的:(音视频,网络协议,ffmpeg,c++,visualstudio)