一尘不染

如何从ffmpeg输出中提取持续时间?

linux

要获取有关媒体文件的大量信息,可以做

ffmpeg -i <filename>

它会输出很多行,特别是一行

Duration: 00:08:07.98, start: 0.000000, bitrate: 2080 kb/s

我只想输出00:08:07.98,所以我尝试

ffmpeg -i file.mp4 | grep Duration| sed 's/Duration: \(.*\), start/\1/g'

但是它可以打印所有内容,而不仅仅是长度。

甚至ffmpeg -i file.mp4 | grep Duration输出所有内容。

如何获得持续时间长度?


阅读 380

收藏
2020-06-02

共1个答案

一尘不染

ffmpeg正在将该信息写入,而stderr不是stdout。尝试这个:

ffmpeg -i file.mp4 2>&1 | grep Duration | sed 's/Duration: \(.*\), start/\1/g'

注意重定向stderrstdout2>&1

编辑:

您的sed陈述也不起作用。尝试这个:

ffmpeg -i file.mp4 2>&1 | grep Duration | awk '{print $2}' | tr -d ,
2020-06-02