ffmpeg常用案例总结

举报
费德勒 发表于 2017/03/24 15:48:17 2017/03/24
【摘要】 ffmpeg是一个强大的开源工具,我们既可以利用它的开源代码进行二次开发,又可以直接使用它的工具进行媒体数据的转封装、转码等操作。

ffmpeg是一个强大的开源工具,我们既可以利用它的开源代码进行二次开发,又可以直接使用它的工具进行媒体数据的转封装、转码等操作。它还有一个很重要的用途,那就是当做第三方的参考标准,当我们自己做的转封装/转码遇到问题时,可以对照ffmpeg的转换结果,会比较容易找到问题所在。本文笔者曾用到的一些ffmepg的场景总结了一下,并做了简要说明。

1. 转封装
例1:把mp4的音频转封装为ts的音频
ffmpeg -i mp4-onDemand-aaclc_low.mp4 -codec:a copy 22.ts
详解:-i表示输入,输入文件的格式没有特别的选项来控制,是直接通过文件名的后缀来体现的
-codec:a copy表示不重新编码音频,同理-codec:v copy表示不重新编码视频
22.ts表示输出,它与输入不同,输入有-i来表示这是输入,输出没有类似的选项,直接用文件名即可。输出文件的格式也是用文件名的后缀来体现。
例2:把mp4的视频转封装为ts的视频
ffmpeg -i b.mp4 -codec copy -bsf h264_mp4toannexb a.ts
详解:-bsf h264_mp4toannexb是MP4转TS的标配,原因ffmpeg提示说是H264的头部有问题
例3:把独立的两个音视频合并从成一个mp4媒体文件
ffmpeg -i mp4-onDemand-h264bl_full.mp4 -i mp4-onDemand-aaclc_high.mp4 -codec:v copy -codec:a copy 55.mp4
详解:用两个-i来表示输入即可
例4:在一个视频文件(含音频与视频)中提取音频
ffmpeg.exe -i d:/temp/linux操作系统基础.wmv -vn d:/temp/33.wav
详解:-vn的意思是“video no”,同理-an可以提取视频

2. 转码
例1:TS文件转换码率,指定B帧
ffmpeg -i 1e.ts -f mpegts -threads 16 -bufsize 2000k -acodec mp2 -ab 128k -vcodec libx264 -x264opts keyint=12:min-keyint=12:bframes=3:b-adapt=0:open-gop=0:slices=1:bitrate=1800:vbv-bufsize=1800:nal-hrd=cbr:fps=29.97:b-pyramid=none:scenecut=0 4e.ts

3. 把图片转换为视频
例1:ffmpeg -f image2 -r 1 -i test%1d.jpg -r 1 -s 600x300 test.avi

4. 从一段长视频中截取一段视频
例1:ffmpeg -ss 00:46:28 -i "Morning_News.asf" -acodec copy -vcodec copy -t 00:03:25 output.asf

5. 把两段视频合并
例1:ffmpeg -i concat:"part1.avi|part2.avi" -vcodec copy -acodec copy output.avi
注:part1与part2格式必须完全一致,而且part1必须要有声音

作者 | 尹千德

转载请注明出处:华为云博客 https://portal.hwclouds.com/blogs

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200