前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用ffmpeg检查视频文件时长

用ffmpeg检查视频文件时长

原创
作者头像
美女视频
修改2022-02-11 19:45:04
23.3K0
修改2022-02-11 19:45:04
举报
文章被收录于专栏:美女视频的专栏

视频播放时,经常会遇到:

1、不同播放器显示的文件时长不一样

2、视频转码后,文件时长发生了变化

3、视频播到后面,只有画面没有声音

等各种异常,这时我们可以检查一下原视频的时长

但是原视频的时长也有多个值,分别是容器时长、音视频流时长、解码后播放时长,这几个值可能不一样,就导致了不同播放器显示值不一样,不同播放时也因此表现得不一样

容器时长(container duration)的获取方法:

代码语言:javascript
复制
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 -i input.mp4
container duration 运行实例
container duration 运行实例

音视频流时长(stream duration)的获取方法:

代码语言:javascript
复制
ffprobe.exe -v error -select_streams v:0 -show_entries stream=duration -of default=noprint_wrappers=1:nokey=1 input.mp4
stream duration 运行实例
stream duration 运行实例

可以看到,两个时长并不一致,顺便一提,一个媒体文件里边有多个音视频流,各个流的时长也未必一样,一般播放器会以video stream的时长作为播放时长

另外,并不是所有格式的视频,会在音视频流级别保存了时长,这时可能会拿不到时长

解码后文件播放时长(get duration by decoding)

可以通过ffmpeg命令,先完全解码,然后获取到文件时长

代码语言:javascript
复制
ffmpeg.exe -i input.mp4  -f null -
duration by decoding
duration by decoding

可以看到时长为2:02:33,和container duration一致

该方法一般为最准确的方法,但由于需要解码,耗时可能会较长

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云点播
面向音视频、图片等媒体,提供制作上传、存储、转码、媒体处理、媒体 AI、加速分发播放、版权保护等一体化的高品质媒体服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档