视频播放时,经常会遇到:
1、不同播放器显示的文件时长不一样
2、视频转码后,文件时长发生了变化
3、视频播到后面,只有画面没有声音
等各种异常,这时我们可以检查一下原视频的时长
但是原视频的时长也有多个值,分别是容器时长、音视频流时长、解码后播放时长,这几个值可能不一样,就导致了不同播放器显示值不一样,不同播放时也因此表现得不一样
容器时长(container duration)的获取方法:
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 -i input.mp4
音视频流时长(stream duration)的获取方法:
ffprobe.exe -v error -select_streams v:0 -show_entries stream=duration -of default=noprint_wrappers=1:nokey=1 input.mp4
可以看到,两个时长并不一致,顺便一提,一个媒体文件里边有多个音视频流,各个流的时长也未必一样,一般播放器会以video stream的时长作为播放时长
另外,并不是所有格式的视频,会在音视频流级别保存了时长,这时可能会拿不到时长
解码后文件播放时长(get duration by decoding)
可以通过ffmpeg命令,先完全解码,然后获取到文件时长
ffmpeg.exe -i input.mp4 -f null -
可以看到时长为2:02:33,和container duration一致
该方法一般为最准确的方法,但由于需要解码,耗时可能会较长
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有