如何使用FFprobe从Webm中提取持续时间

时间:2018-12-07 10:12:02

标签: batch-file command-line ffmpeg webm ffprobe

我有以下代码将视频文件的时长存储在一个名为duration的变量中:

for /f %%i in ('ffprobe -select_streams v:0 -show_entries stream^=duration -of default^=noprint_wrappers^=1:nokey^=1 input.avi') do set duration=%%i

但是,当我尝试获取.webm文件的持续时间时,就会得到N / A。我在这里How to determine webm duration using ffprobe中使用了答案,这使我能够在使用ffprobe时查看webm的持续时间。但是由于某种原因,我可以在ffprobe的输出中看到持续时间,但是我无法将其存储在变量中。

请帮助我。谢谢


以下是命令和输出:

命令:

for /f %%i in ('ffprobe -select_streams v:0 -show_entries stream^=duration -of default^=noprint_wrappers^=1:nokey^=1 webm_copy.webm') do set duration=%%i

echo %duration%

输出:

D:\SOFTWARE\ffmpeg\bin\test\go>for /F %i in ('ffprobe -select_streams v:0 -show_entries stream=duration -of default=noprint_wrappers=1:nokey=1 webm_copy.webm') do set duration=%i
ffprobe version N-80066-g566be4f Copyright (c) 2007-2016 the FFmpeg developers
  built with gcc 5.3.0 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
  libavutil      55. 24.100 / 55. 24.100
  libavcodec     57. 43.100 / 57. 43.100
  libavformat    57. 37.100 / 57. 37.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 46.100 /  6. 46.100
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
Input #0, matroska,webm, from 'webm_copy.webm':
  Metadata:
    encoder         : Lavf57.37.100
  Duration: 00:01:31.44, start: 0.000000, bitrate: 278 kb/s
    Stream #0:0: Video: vp8, yuv420p, 480x360, SAR 1:1 DAR 4:3, 29.97 fps, 29.97 tbr, 1k tbn (default)
    Stream #0:1: Audio: vorbis, 44100 Hz, stereo, fltp (default)

D:\SOFTWARE\ffmpeg\bin\test\go>set duration=N/A

D:\SOFTWARE\ffmpeg\bin\test\go>echo N/A
N/A

1 个答案:

答案 0 :(得分:0)

您可以检索存储在Matroska和Webm容器中的持续时间。将-show_entries stream=duration更改为-show_entries format=duration

如果仅希望输出持续时间值,请参见FFmpeg Wiki: FFprobe中的示例所示的-loglevel / -v-of选项。