如何使用 ffmpeg 获取 mp4 容器的任何流的持续时间?

How to get the duration of any stream of a mp4 container with ffmpeg?

我不确定,但以下命令似乎可以做到这一点。这里我得到了mp4文件第一个音频流的时长:

ffprobe -v error -select_streams a:0 -show_entries stream=duration -of default=noprint_wrappers=1:nokey=1 -i input.mp4

但是,我正在寻找 ffmpeg 的等效项(如果存在)。如果无法用 ffmpeg.

做到这一点,您的回答同样有效

。使用FFmpeg获取媒体文件持续时间,你可以这样做:

ffmpeg -i inputfile -map 0:0 2>&1 | grep Duration | cut -d ' ' -f 4 | sed s/,//

进一步阅读 Map option.

Source

使用

ffmpeg -i input.mp4 -c copy -map 0:v:3 -f null - 2>&1 | tail -3 | grep -oP "(?<=time=).+?\s"

0:v:3 将 select 第四个视频流。如果存在,输出将是一个持续时间,例如00:02:57.64

如果不存在,输出将为空。