快手 · 音视频技术入门课
刘歧
快手音视频首席架构师
4513 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 18 讲
快手 · 音视频技术入门课
15
15
1.0x
00:00/00:00
登录|注册

07 | 如何高效查找并使用FFmpeg常用参数?

你好,我是刘歧。
我们讲述直播推流的时候曾简单介绍过FFmpeg 推直播流的操作,但是并不是特别全面,遇到一些问题的时候我们还是无法很好地解决。有时候,我们想要使用 FFmpeg 的某个功能,但不知道怎么查找,甚至可能不知道 FFmpeg 是否包含我们需要的能力。那么这节课我们会更全面地介绍 FFmpeg 中常用的参数,还有遇到问题的时候如何确认 FFmpeg 是否可以达到我们预期的目的。
如果你是第一次使用 FFmpeg,肯定会有很多疑惑,尤其是看到命令行的一堆参数之后。所以这节课我会一步一步引导你先学会使用 FFmpeg,最后让你拥有自己深度挖掘 FFmpeg 里面各种黑科技的能力。先吃到“鱼”,然后学会“钓鱼”,之后你就可以自己慢慢收获各种“鱼”了。

FFmpeg 输入输出组成

FFmpeg 的工作原理比较简单,它没有指定输出文件的参数。一般的工具都会带一个 -o 来指定输出文件,但 FFmpeg 不是,它不用 -o 指定输出,FFmpeg 自己会分析命令行然后确定输出。例如我们输入这么一段命令:
ffmpeg -i i.mp4 a.mp4 -vcodec mpeg4 b.mp4
这段命令会输出两个文件,分别是 a.mp4 和 b.mp4。
(base) liuqi05:xx liuqi$ ls
a.mp4 b.mp4
(base) liuqi05:xx liuqi$
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何高效查找并使用FFmpeg常用参数。作者通过介绍FFmpeg的输入输出组成和命令行参数分布,帮助读者了解FFmpeg的工作原理和常用参数的使用方法。文章强调了FFmpeg的输入可以是多个,输出也可以是多个,并且每一个输出都会根据输入的信息做一个参数复制。此外,作者还提到了如何指定编码以及如何进行只转封装不转码的操作,以节省CPU计算资源。通过本文,读者可以快速了解FFmpeg的参数组成和使用方法,从而更加高效地使用FFmpeg进行视频处理和转码操作。文章还介绍了如何查找各个模块参数的帮助信息,通过命令行参数的方式,读者可以快速过滤掉不需要的内容,只查看自己需要的模块信息。整体而言,本文为读者提供了一份简洁清晰的FFmpeg参数使用指南,帮助读者更好地理解和应用FFmpeg技术。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《快手 · 音视频技术入门课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • keepgoing
    老师想请教一下,如果对于 -filter_complex 这种命令完全不了解其用法和作用,应该怎么通过ffmpeg -help相关的内容进行学习,感谢!

    作者回复: filter_complex是一个更深入的内容了,可能看help可以看到滤镜的基本信息,详细的还是需要看官方的文档的,里面有更多的实例

    2022-08-22归属地:北京
    2
    1
  • 西格玛
    老师的课程内容很饱满,就是部分命令不是太准确,苦了我们初学者,比如这篇里面的"视频操作部分"-vr:设置视频的帧率;应该是 "-r",我试了好久 “-vr”不可以的

    作者回复: -r:v是可以的 最好别-r

    2022-08-15归属地:北京
  • Octo
    请教老师一个问题,我在用ffmpeg对mp4视频做分割后,发现很多视频播放软件无法打开分割后的视频文件,这一般是什么问题呢? 命令是: ffmpeg -i xxx.mp4 -vcodec copy -acodec copy -ss 5 -to 25 xxx_out.mp4

    作者回复: -to改成-t 然后看看能不能播 你的-ss可能位置也不太好。也可以试试看ffmpeg能不能打开你切的文件

    2022-08-15归属地:北京
  • peter
    请教老师几个问题: Q1:“做解码后再编码”是解释谁的? 文中有这句话:“来进行只转封装不转码(做解码后再编码)的操作”,括号中的“做解码后再编码”是用来解释“转码”的吧。 刚开始看,以为是解释“只转封装不转码”的。 Q2: H.264查询结果矛盾问题。 命令:ffmpeg -encoders | grep H.264 输出: V..... h264_v4l2m2m V4L2 mem2mem H.264 encoder wrapper (codec h264) V....D h264_vaapi H.264/AVC (VAAPI) (codec h264) 命令输出结果说明有H,264 但是,用命令:ffmpeg -h encoder=libx264 输出:Codec 'libx264' is not recognized by FFmpeg. 为什么又说没有H.264? 不是矛盾吗? Q3:FFmpeg可以应用到Android、iOS上吗? Q4:源码目录下面没有make文件但能执行,为什么? 从官网上下载5.1源码,解压后生成ffmpeg目录,先再此目录下面执行:./configure, “ls –al | grep make”没有make这个文件。 输入“make”,刚开始不能执行,提示没有此文件,后来又试了几次,突然就能执行了。 请问:没有make文件,怎么就能执行了? Q5:添加meta参数信息的命令,输入文件是什么? ffmpeg -f lavfi -i testsrc=s=176x144 -metadata title="This Is A Test" -t 2 out.mp4, 这个命令中,源文件是什么? 没有源文件的话,生成的out.mp4没有实际内容吧。

    作者回复: 1. 是解释不转码的,有的人不理解转码,所以括号描述一下转码的基础步骤 2. 并不矛盾,仔细看输出参数,因为里面已经有编码器了,但是不是libx264而已,是h264_v4l2m2m,你用的libx264并未被列在列表里面 3. Android可以命令行和API,iOS应该是需要API,可以移步极客时间的快手回森技术负责人展晓凯移动端开发,如果还有更多方向的兴趣的话,看大伙的反响,学习效果符合各team预期的话,有可能会推出一系列的后续课程 4. 最好还是下载git库里面的master分支,能执行 make的话需要有Makefile才可以,没有的话不能执行,这个可能是你需要自己好好确认一下了,一定要注意输出信息,ffmpeg编译工程的输出信息都是很有用的,精雕细琢的,并不是没事输出的垃圾信息 5. 参考前面的课程,有讲过-f lavfi是用lavfi来输出ffmpeg自己生成的内容,比如帧数,时间信息等

    2022-08-08归属地:北京
  • geek
    貌似本节的小结思维导图,串台了。

    编辑回复: 谢谢提醒,已经修改啦🌹

    2022-08-08归属地:北京
  • jcy
    尝试回答一下思考题: 1. 先用 ffprobe -show_format test.mkv 查看视频文件的 duration,假设这里的 duration 是 22.47 2. 用如下命令生成新的视频文件 out.mkv,其在原来 test.mkv 视频文件上会叠加一个 logo,播放时,按照视频进度比例从左下角向右下角移动 ffmpeg -re -i test.mkv -vf "movie=logo.PNG[test];[in][test]overlay=x='if(gte(t,0), t*(W-w)/20.47, NAN)':y=H-h [out]" out.mkv
    2022-08-23归属地:北京
    1
    2
  • ifelse
    学习打卡
    2023-12-25归属地:浙江
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部