ffmpeg - `ffmpeg` 的输出是什么意思?
问题描述
我正在转换一个文件,这是输出。这个问题在这里有部分答案,所以我问的是它没有涵盖的部分。我调整了终端的宽度以保留输出历史
[olpc@laptop ~] ffmpeg -i input -c:a copy -s 384x216 output
ffmpeg version N-68778-g5c7227b Copyright (c) 2000-2014 the FFmpeg developers
built on Dec 29 2014 22:12:54 with gcc 4.9.2 (GCC)
...
frame=2 fps=0.0 q=0.0 size= 0kB time=00:00:00.00 bitrate= 0.0kbits/s
frame=3 fps=2.0 q=0.0 size= 0kB time=00:00:00.00 bitrate= 0.0kbits/s
frame=5 fps=2.4 q=0.0 size= 0kB time=00:00:00.00 bitrate= 0.0kbits/s
frame=8 fps=2.9 q=0.0 size= 0kB time=00:00:00.00 bitrate= 0.0kbits/s
frame=10 fps=2.8 q=0.0 size= 0kB time=00:00:00.00 bitrate= 0.0kbits/s
frame=12 fps=2.9 q=0.0 size= 0kB time=00:00:00.00 bitrate= 0.0kbits/s
frame=13 fps=2.8 q=0.0 size= 0kB time=00:00:00.02 bitrate= 16.5kbits/s
frame=16 fps=3.1 q=0.0 size= 0kB time=00:00:00.48 bitrate= 0.8kbits/s
frame=19 fps=3.2 q=0.0 size= 0kB time=00:00:00.48 bitrate= 0.8kbits/s
frame=21 fps=3.2 q=0.0 size= 0kB time=00:00:00.48 bitrate= 0.8kbits/s
...
frame=687 fps=0.6 q=29.0 size= 1245kB time=00:00:22.84 bitrate= 446.5kbits/s
frame=688 fps=0.6 q=29.0 size= 1246kB time=00:00:22.84 bitrate= 446.7kbits/s
frame=689 fps=0.6 q=29.0 size= 1248kB time=00:00:22.84 bitrate= 447.5kbits/s
frame=690 fps=0.6 q=29.0 size= 1249kB time=00:00:22.84 bitrate= 447.8kbits/s
frame=691 fps=0.6 q=29.0 size= 1249kB time=00:00:22.84 bitrate= 448.0kbits/s
frame=692 fps=0.6 q=29.0 size= 1251kB time=00:00:22.84 bitrate= 448.7kbits/s
frame=693 fps=0.6 q=29.0 size= 1252kB time=00:00:22.84 bitrate= 448.8kbits/s
frame=694 fps=0.6 q=29.0 size= 1253kB time=00:00:22.84 bitrate= 449.1kbits/s
frame=695 fps=0.6 q=29.0 size= 1254kB time=00:00:22.84 bitrate= 449.7kbits/s
frame=696 fps=0.6 q=29.0 size= 1255kB time=00:00:22.84 bitrate= 449.9kbits/s
frame=697 fps=0.6 q=29.0 size= 1256kB time=00:00:22.84 bitrate= 450.2kbits/s
frame=698 fps=0.6 q=29.0 size= 1256kB time=00:00:22.84 bitrate= 450.3kbits/s
frame=699 fps=0.6 q=29.0 size= 1258kB time=00:00:22.84 bitrate= 451.0kbits/s
frame=699 fps=0.6 q=29.0 size= 1258kB time=00:00:22.87 bitrate= 450.5kbits/s
frame=701 fps=0.6 q=29.0 size= 1261kB time=00:00:23.31 bitrate= 443.1kbits/s
第二段耗时 20 秒:每行 1 秒直到最后一段,最后一段耗时 6 秒才显示。这种模式在文件的整个长度上重复。我的理解是,视频中每 15 帧就有一个控制帧,虽然没有控制帧,但视频以 1fps 的速度处理。
现在,我的问题是:time
指的是什么?好像是指视频中的时间,但是为什么前13帧静止不动,然后爬升0.03秒,又跳了0.44秒?
还有,怎么bitrate
能从0.0跳到16.5又回到0.8呢?(以上行都更新一秒钟)。我的意思是,如果 7 秒后比特率是 16.5kbit/s,那么它必须至少更新了 105.5kbits。这意味着即使它下一秒什么也不处理,比特率在下一 (8th) 秒后至少会达到 13.2kbit/s。
最后,q
代表什么?
解决方案
部分答案:
bitrate
由(文件大小)/(进入视频的时间量)计算得出。当进入文件的时间为 0 时,上面是未定义的,因此比特率被列为 0.0kbits/sec。
因此,当读取到文件 0.02 秒时,输出文件大小必须为 (16.5kbit/s) * (0.02 s) = 0.33kbits,因此它仍然舍入为size=0kB
. 但是,在下一次迭代中,读取到文件的时间为 0.48 秒,那么 0.33kbit / 0.48 秒 = 0.7kbits/s。这意味着在第 13 帧和第 16 帧之间,输出文件的大小确实增加了,因为现在输出速度为 0.8kbits / s。
现在为什么它在进行完整的 0.48 秒跳跃之前跳跃了 0.02 秒,这超出了我的理解。也许其他人可以回答这个问题。
推荐阅读
- python - 使用请求登录需要哪些其他详细信息?
- django - 通过 Django Rest Framework 视图调用模型方法
- c++ - C++ for 循环在到达结束之前停止并重新启动
- scala - 如何在上游完成之前在嵌套流中映射Concat()然后折叠()
- php - 子域内部服务器错误上的 laravel 5.6 此外,遇到 500 内部服务器错误错误
- java - 在 android:onClick 属性的父或祖先上下文中找不到方法
- jquery - Bootstrap Tagsinput + Typeahead refresh 不起作用
- javascript - 变形后伪造查看器模型位置
- google-cloud-platform - 在 GCE 上安装监控代理
- vue.js - Vuetify 数据表搜索不起作用