合并后的Mp4里解析出音频的Duration问题

举报
黄生 发表于 2022/01/10 16:55:37 2022/01/10
【摘要】 网上有很多的流视频,可以获取到批量的ts文件后,使用ffmpeg用concat的格式用copy编码方式进行合并为Mp4文件。这里有个问题就碰到我了,将mp4文件用copy编码的方式,分离出aac音频文件。问题是:mp4文件,和aac文件,用ffprobe显示的duration咋就不一样了呢?MP4,时长显示34分57秒AAC文件,时长显示14小时28分,不过它说了,这个是从bitrate估算...

网上有很多的流视频,可以获取到批量的ts文件后,使用ffmpeg用concat的格式用copy编码方式进行合并为Mp4文件。

这里有个问题就碰到我了,

将mp4文件用copy编码的方式,分离出aac音频文件。

问题是:mp4文件,和aac文件,用ffprobe显示的duration咋就不一样了呢?

MP4,时长显示34分57秒

AAC文件,时长显示14小时28分,不过它说了,这个是从bitrate估算的,不准确。我可以负责任的说,这个duration就是错误的。

bitrate也变了,我感觉这个不多。

播放这个aac文件时,从播放器里看,时长也是14个小时。

那么,我们怎么看它的正确时长呢?先看下官方文档

From ffmpeg documention:

Get duration by decoding
You can also use ffmpeg to get the duration by fully decoding the file. The null muxer is used so no output file is created. Refer to time= in the last line of the console output. In this example the input has a duration of 00:57:28.87.

$ ffmpeg -i input.webm -f null -
...
frame=206723 fps=1390 q=-0.0 Lsize=N/A time=00:57:28.87 bitrate=N/A speed=23.2x
  • This method will report the correct duration in case the methods using ffprobe are incorrect or missing due to corrupt, truncated, or damaged files.
  • The command may take some time depending on the input file duration and decoding complexity.

我们用这个命令试一下:34分52秒,比较正确了。

加上-c copy会更快得到结果,结果也很接近准确值。

AAC只是猜测,他不包含准确的duration信息。这个问题呢,可以感到疑惑,但是到此为止可以不再纠结,

转换为m4a就好啦!duration准准的!



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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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