29625|43

1403

帖子

1

TA的资源

纯净的硅(中级)

楼主
 

一起玩树莓派3 + x264和ffmpeg编译裁剪及简单测试 [复制链接]

 
绝大部分播放器的灵魂,也是很多音视频相关工程的基石。
后面我会选择h264编码方式编码视频,h264编码由其高压缩率、高质量等特点,非常流行。x264是一个非常优秀的编码器,能集成进ffmpeg,使用上很方便。

开源项目编译运行大都一个套路模式,基本都是configure, make, make install。这里说的不涉及交叉编译,因为树莓派本身已经集成了我们所需的编译环境,所有工作都可在一块小小的板子上完成。pc交叉编译、下载到宿主机(开发板、手机),再运行的调试的梗咱就不玩了,你觉得树莓派编译太慢?性能不够?不敢苟同,下面咱就走起来。(这里假设大家知道什么是linux,会基本的cd 命令)

首先需要下载代码,代码都是通过git的方式下载。git不会用的,自行搜索,很好的工具,最新版代码下载命令:
  1. x264:     git://git.videolan.org/x264.git
  2. ffmpeg:git://source.ffmpeg.org/ffmpeg.git
复制代码

另外ffmpeg中的播放器程序ffplay依赖sdl来显示视频,sdl是一个图形显示库,安装命令:
  1. sudo apt-get install libsdl2-dev
复制代码


下载完之后,会有两个git工程下载到本地。接下来就可以开工了(注意以下操作均需cd进入各自的目录)。通过执行./configure --help可以查看帮助信息,如果执行configure配置出错的时候,可以查看ffmpeg源码目录下的config.log文件,此文件提供完整的出错信息。configure执行成功后,会打印配置信息表,一目了然。附件提供的配置脚本,就是调用的configure命令,理解了含义之后,很好用。
x264配置及编译:
附件下载配置脚本,然后放入x264目录下
  1. chmod +x config_x264_rpi.sh   
    ./config_x264_rpi.sh
  2. make -j4
    sudo make install
复制代码

ffmpeg配置编译及裁剪优化
ffmpeg通过configure生成Makefile,同时configure也担当编译配置的作用,
由于默认的configure配置会编译几乎所有的代码文件,编译出来的库文件和程序文件都非常大,这在树莓派3上是一项相当大的工作,4核满负荷工作也需要大概20多分钟。而且默认配置是没有使能树莓派的硬件编解码加速的,所以需要做一定的配置。配置脚本见附件,通过该脚本配置后,编译ffmpeg的时间可以缩减到10分钟以内,这个还是可以接受的,所以普通的开发工作可以直接在树莓派上完成,非常方便,给树莓派点个赞。
其中有两个比较关键的东西叫omx-rpi和mmal:
omx-rpi 树莓派的硬编码加速
mmal     树莓派的硬解码加速
在这里我们都启用了。编译只需执行
  1. chmod +x config_ffmpeg_rpi.sh   
    ./config_ffmpeg_rpi.sh
    make -j4
    sudo make install
复制代码


ffmpeg简单测试
如果前面两部顺利完成了的话,恭喜你,ffmpeg可以在树莓派上运行了,执行ffmpeg -version之后,会打印帮助信息。OK,大工告成!




附上x264和ffmpeg的配置脚本,纯手工敲打的哦,尤其树莓派硬编解码部分的配置,是我不断摸索,不断编译才捣鼓出来的,耗费了我好几个深夜,限时免费中,需要速速下载收藏,版权所有,请勿用于商业用途!!!
config_x264_rpi.sh (287 Bytes, 下载次数: 505)
config_ffmpeg_rpi_v0_1_1.sh (1.81 KB, 下载次数: 350, 售价: 5 分芯积分)



最新回复

安装的时候报ERROR: mmal not found 不知道怎么解决   详情 回复 发表于 2021-8-5 18:30

赞赏

2

查看全部赞赏

点赞 关注(4)
个人签名HELLO_WATER

回复
举报

1403

帖子

1

TA的资源

纯净的硅(中级)

来自 9楼
 
本帖最后由 shinykongcn 于 2016-11-29 11:19 编辑

各位,ffmpeg的编译脚本更新了,支持mjpeg格式了,v4l2摄像头支持 -input_format mjpeg参数了,请大家重新下载编译!
PS.设置收费了,说好的限时免费,之前下载的5位坛友可以私聊我,单独发你们最新版(如果缺芯币的话)
 
个人签名HELLO_WATER
 

回复

6040

帖子

205

TA的资源

版主

沙发
 
楼主半夜发帖的精神可嘉,顶一顶!
 
 
 

回复

1403

帖子

1

TA的资源

纯净的硅(中级)

板凳
 
lcofjp 发表于 2016-11-15 01:48
楼主半夜发帖的精神可嘉,顶一顶!

活生生的干货,赶紧收藏
 
个人签名HELLO_WATER
 
 

回复

6040

帖子

205

TA的资源

版主

4
 
shinykongcn 发表于 2016-11-15 09:46
活生生的干货,赶紧收藏

牛逼,ffmpeg还有针对树莓屁的优化
 
 
 

回复

1903

帖子

0

TA的资源

版主

5
 
顶一下,还没开始玩
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

6
 
shinykongcn 发表于 2016-11-15 09:46
活生生的干货,赶紧收藏

编译 git 版本
运行
ffmpeg -f v4l2 -r 15 -video_size vga -pix_fmt yuv420p -i /dev/video0 -b:v 500k -c:v h264 -an -f mp4 picam.mp4 -y


ffmpeg version N-82629-g9955123 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.9.2 (Raspbian 4.9.2-10)
  configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-static --disable-shared --prefix=/usr/local --disable-opencl --disable-thumb --disable-pic --disable-stripping --enable-small --enable-ffmpeg --enable-ffplay --enable-ffserver --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-muxer=flv --enable-demuxer=flv --enable-muxer=mp4 --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-parser=h264 --enable-parser=aac --enable-protocol=file --enable-protocol=tcp --enable-protocol=rtmp --enable-protocol=cache --enable-filter=aresample --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
  libavutil      55. 41.101 / 55. 41.101
  libavcodec     57. 66.107 / 57. 66.107
  libavformat    57. 58.100 / 57. 58.100
  libavdevice    57.  2.100 / 57.  2.100
  libavfilter     6. 67.100 /  6. 67.100
  libswscale      4.  3.101 /  4.  3.101
  libswresample   2.  4.100 /  2.  4.100
  libpostproc    54.  2.100 / 54.  2.100
[video4linux2,v4l2 @ 0x13f5360] The driver does not permit changing the time per frame
[video4linux2,v4l2 @ 0x13f5360] Time per frame unknown
Input #0, video4linux2,v4l2, from '/dev/video0':
  Duration: N/A, start: 19481.966811, bitrate: N/A
    Stream #0:0: Video: mjpeg, none, 640x480, 31 tbr, 1000k tbn, 1000k tbc
Stream mapping:
  Stream #0:0 -> #0:0 (? (?) -> h264 (libx264))
Decoder (codec mjpeg) not found for input stream #0:0
 
 
 

回复

1366

帖子

6

TA的资源

版主

7
 
我记得我有顶贴的啊啊啊啊啊。难道失手了?那我再顶贴吧
 
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

1403

帖子

1

TA的资源

纯净的硅(中级)

8
 
a_abj 发表于 2016-11-25 00:46
编译 git 版本
运行
ffmpeg -f v4l2 -r 15 -video_size vga -pix_fmt yuv420p -i /dev/video0 -b:v 5 ...

重新下载更新版的编译脚本,之前优化过头了,把mpjeg也阉割了,如果芯币不够,私聊我发给你
 
个人签名HELLO_WATER
 
 

回复

1403

帖子

1

TA的资源

纯净的硅(中级)

10
 
RCSN 发表于 2016-11-29 11:11
我记得我有顶贴的啊啊啊啊啊。难道失手了?那我再顶贴吧

过来,保证打死你
 
个人签名HELLO_WATER
 
 

回复

1366

帖子

6

TA的资源

版主

11
 

楼主差评,差评差评。还限时。   早知道我不顶贴了,因为我已经下载了
 
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

165

帖子

0

TA的资源

一粒金砂(中级)

12
 
lcofjp 发表于 2016-11-15 01:48
楼主半夜发帖的精神可嘉,顶一顶!

前排挤挤,虽然不知道在说什么,但是好厉害的样子。
 
个人签名什么都不会,只会水经验,请见谅。如果有什么得罪的地方,请找我们队长..................ID:lcofjp
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

13
 
币够 先下载看看
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

14
 
支持一下!!!!!!
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

15
 
看了帖子受益匪浅 尤其是一些编译参数
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

16
 
不知怎么搞到芯币?
 
 
 

回复

1403

帖子

1

TA的资源

纯净的硅(中级)

17
 
全天候战机 发表于 2017-1-9 14:09
不知怎么搞到芯币?

可以看看论坛规则,回帖,发帖都可以奖励芯币的
 
个人签名HELLO_WATER
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

18
 
shinykongcn 发表于 2017-1-9 15:03
可以看看论坛规则,回帖,发帖都可以奖励芯币的

回帖似乎拿不到,每天签到倒是可以拿一个
 
 
 

回复

2万

帖子

74

TA的资源

管理员

19
 
全天候战机 发表于 2017-1-23 15:11
回帖似乎拿不到,每天签到倒是可以拿一个

详见积分规则:https://bbs.eeworld.com.cn/thread-67200-1-1.html
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

20
 
顶顶顶
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表