繁体   English   中英

使用 ffmpeg null 多路复用器获取视频持续时间。 有或没有 stream 副本?

[英]Getting video duration with ffmpeg null muxer. With or without stream copy?

由于 ffprobe 有时会报告视频持续时间的无效值,因此我们经常在 web 上找到针对此特定问题的一种获得准确视频持续时间的推荐方法是使用 ffmpeg Z37A6259CC0C1DAE299A786648 解码文件。

ffmpeg -i file.mp4 -f null -

这个解决方案的问题是它非常非常慢。 我注意到与此解决方案的 stream 映射是:

Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> wrapped_avframe (native))
  Stream #0:1 -> #0:1 (aac (native) -> pcm_s16le (native))
...
frame=  331 fps=115 q=-0.0 Lsize=N/A time=00:00:05.52 bitrate=N/A speed=1.92x    

所以我通过添加“-c copy”更新了前面的命令

ffmpeg -i file.mp4 -c copy -f null -

现在解码过程(真的是解码吗?)快了 600 倍!

Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
frame=40109 fps=39085 q=-1.0 Lsize=N/A time=00:11:09.14 bitrate=N/A speed= 652x    

为什么这个解决方案不像前一个那样受欢迎? 视频持续时间仍会报告,并且似乎与以前一样准确。

我对这个解决方案做错了吗?

使用-c copy通常没问题。 有时,可能会有小的不准确,因为解码器会以正确的顺序发出帧并丢弃非帧数据包。 但我们谈论的是微小的差异。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM