1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 树莓派编译安装FFmpeg(添加H.264硬件编解码器支持)

树莓派编译安装FFmpeg(添加H.264硬件编解码器支持)

时间:2022-11-03 19:59:41

相关推荐

树莓派编译安装FFmpeg(添加H.264硬件编解码器支持)

说明

FFmpeg是一套开源的音视频编解码库,有非常强大的功能,包括视频采集功能、视频格式转换等。众所周知视频编解码是一个非常消耗系统资源的过程,而树莓派自带了H.264的硬件编解码器,因此本文将详解在树莓派配置FFmpeg使其支持硬件编解码器并编译安装的过程。

准备工作

树莓派一个(1至3代都可以)树莓派已连接到网络(github可正常访问)

树莓派系统镜像

-11-13-raspbian-stretch-full.img

下载x264源码并编译安装 x264

更新源并安装git

sudo apt-get updatesudo apt-get install git

2、下载x264源码

git clone /git/x264.git

3、进入x264目录

cd x264

4、新建一个名为 config_x264.sh 的文件

touch config_x264.sh

5、使用nano打开 config_x264.sh

nano config_x264.sh

6、添加如下内容

#!/bin/sh./configure \--disable-shared --enable-static \--enable-strip \--disable-cli

7、然后增加执行权限

chmod +x config_x264.sh

8、依此进行以下每一行命令

./config_x264.shmake -j4sudo make install

执行make -j4时会花费点10分钟左右,需要耐心等待

下载源码编译安装ffmpeg

1、在FFmpeg官网获取源码 /download.html ,当前版本为 ffmpeg-4.1.tar.bz2

wget /releases/ffmpeg-4.1.tar.bz2

2、解压

tar jxvf ffmpeg-4.1.tar.bz2

3、进入解压得到的ffmpeg目录

cd ffmpeg-4.1

4、新建一个名为 config_ffmpeg.sh 的脚本文件

touch config_ffmpeg.sh

5、使用nano打开 config_ffmpeg.sh

nano config_ffmpeg.sh

6、输入如下内容:

#!/bin/shPREFIX=/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-indev=alsa \--enable-outdev=alsa \\--enable-omx \--enable-omx-rpi \--enable-encoder=h264_omx \\--enable-mmal \--enable-hwaccel=h264_mmal \--enable-decoder=h264_mmal \\

7、然后增加执行权限

chmod +x config_ffmpeg.sh

8、依此进行以下每一行命令

./config_ffmpeg.shmake -j4sudo make install

执行make -j4时会花费大约1小时左右,需要耐心等待。

上述过程中遇到的错误

执行 ./config_ffmpeg.sh 发生的错误:

1、ERROR: OMX_Core.h not found

2、WARNING: Option --enable-hwaccel=h264_mmal did not match anything

执行 ./config_ffmpeg.sh 发生以上两个错误解决办法:

I believe you need a package called “libomxil-bellagio-dev” that will

provide the OMX header files.

sudo apt-get install libomxil-bellagio-dev

编译安装完成后运行推流命令 ffmpeg -f alsa -ac 2 -i hw:1,0 -ar 44100 -f flv rtmp://192.168.10.109/live/audio 时发生如下错误:

FFMPEG: Unknown input format: ‘alsa’

编译安装完成后运行推流命令 ffmpeg -f alsa -ac 2 -i hw:1,0 -ar 44100 -f flv rtmp://192.168.10.109/live/audio 时发生如下错误 FFMPEG: Unknown input format: ‘alsa’ 的解决办法:

sudo apt-get install libasound2-dev

然后重新执行下载源码编译安装ffmpeg过程中的第6到8步。

参考资料

1、ubuntu + rtmp + ffmpeg(硬解码) + 树莓派实现视频直播(第二步) - 车前猛跑 - CSDN博客

2、树莓派编译FFMPEG - 伏雌摘星阁 - CSDN博客

3、树莓派编译安装FFmpeg(添加H.264硬件编解码器支持) -简书

4、树莓派编译安装ffmpeg | 树莓派小无相系列 - 树莓派小无相系列 - SegmentFault 思否

5、树莓派编译安装FFmpeg(添加H.264硬件编解码器支持) - 程序园

6、audio - FFMPEG: Unknown input format: ‘alsa’ - Raspberry Pi Stack Exchange (解决错误所参考的资料)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。