不使用 ffmpeg 命令读取mp4视频时长
大家一般都用 ffmpeg 获取视频长度,今天看到有一个 mediainfo
也有这个功能。
ffmpeg
命令是
ffmpeg -i test.flv 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//
ffprobe -v quiet -select_streams v -show_entries stream=duration -of csv=“p=0” foo.mp4
视频的时长有多个值,分别是容器时长、音视频流时长、解码后播放时长,这几个值可能不一样,就导致了不同播放器显示值不一样,不同播放时也因此表现得不一样。
如果发现容器或流的持续时间丢失或不准确(可能由于文件损坏或被截断),则可能需要完全解码输入。
centos 7 安装 mediainfo
安装很简单。
yum install mediainfo -y
MacOS 下安装命令如下
brew install mediainfo
mediainfo
将以毫秒为单位的持续时间输出为单个整数值。
mediainfo --Output='General;%Duration%' file.mp4
批量查找目录下所有mp4 文件并打印时长
#!/bin/sh
echo 'l=$(mediainfo --Output="General;%Duration%" $1);echo "$1:$l"' > ~/ff
chmod +x ~/ff
find . -type f -name "*.mp4" | awk '{system("~/ff " $1)}'