使用正则表达式和ffmpeg获取视频的长度

Dav*_*542 15 regex ffmpeg

从以下ffmpeg -i输出中,我将如何得到长度(00:35) -

$ ffmpeg -i 1video.mp4

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/david/Desktop/1video.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 1
    compatible_brands: isomavc1
     creation_time   : 2010-01-24 00:55:16
  Duration: 00:00:35.08, start: 0.000000, bitrate: 354 kb/s
    Stream #0.0(und): Video: h264 (High), yuv420p, 640x360 [PAR 1:1 DAR 16:9], 597 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc
    Metadata:
      creation_time   : 2010-01-24 00:55:16
    Stream #0.1(und): Audio: aac, 44100 Hz, stereo, s16, 109 kb/s
    Metadata:
      creation_time   : 2010-01-24 00:55:17
At least one output file must be specified
Run Code Online (Sandbox Code Playgroud)

Tan*_*pal 28

这样您就可以在几秒钟内获得持续时间.我觉得这样比较方便.

ffprobe -loglevel error -show_streams inputFile.mp3 | grep duration | cut -f2 -d=
Run Code Online (Sandbox Code Playgroud)

ffprobe带有ffmpeg所以你应该拥有它.


编辑: 您可以使用更专用的版本

ffprobe -loglevel error -show_format -show_streams inputFile.extension -print_format json
Run Code Online (Sandbox Code Playgroud)

您也可以使用例如CSV或XML代替JSON.有关更多输出选项,请访问 http://ffmpeg.org/ffprobe.html#Writers


bas*_*ist 9

你可以使用shell

$ ff=$(ffmpeg -i video.mp4 2>&1)
$ d="${ff#*Duration: }"
$ echo "${d%%,*}"
Run Code Online (Sandbox Code Playgroud)

  • 结果是:00:00:34.03 - 我们如何在几秒内完成这个节目...即使它是01:34:03 - 我们怎样才能让这个节目显示总秒数 (2认同)