Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to determine webm duration using ffprobe

Tags:

ffmpeg

ffprobe

My goal is simple , I have several webm files need to be concated, but first I need to determine their durations.

It seems webm file are played as streams, so there is no way to tell the length of each file.

I have been using ffprobe to do the job ,but the duration returned is N/A.The command I use was:

ffprobe -i input.file -show_format | grep duration

thanks.

The complete output of ffprobe list below:

 ffprobe version 2.6.2 Copyright (c) 2007-2015 the FFmpeg developers
  built with Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-libtheora --enable-libvorbis --enable-libvpx --enable-vda
  libavutil      54. 20.100 / 54. 20.100
  libavcodec     56. 26.100 / 56. 26.100
  libavformat    56. 25.101 / 56. 25.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 11.102 /  5. 11.102
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, matroska,webm, from '231':
  Metadata:
    encoder         : GStreamer matroskamux version 1.5.91
    creation_time   : 2015-12-05 07:59:29
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0(eng): Video: vp8, yuv420p, 640x480, SAR 1:1 DAR 4:3, 14.99 fps, 14.99 tbr, 1k tbn, 1k tbc (default)
    Metadata:
      title           : Video
    Stream #0:1(eng): Audio: vorbis, 48000 Hz, stereo, fltp (default)
    Metadata:
      title           : Audio
duration=N/A
like image 665
Lopakhin Avatar asked Dec 06 '15 13:12

Lopakhin


People also ask

How to get video duration FFmpeg?

Getting the Duration To get the duration with ffprobe , add the -show_entries flag and set its value to format=duration . This tells ffprobe to only return the duration.

Is Ffprobe part of FFmpeg?

The FFmpeg library, ffprobe, can rightly be called the Swiss Army Knife of video information extraction or video inspection. As the FFmpeg documentation succinctly puts it, ffprobe gathers information from multimedia streams and prints it in human- and machine-readable fashion.


2 Answers

I faced the same issue with some files that does not contain the Duration nor Bitrate on it and found the following solution:

1- Repackage the files with: (Note that this won't transcode the files, just will copy them)

ffmpeg -i source.webm -vcodec copy -acodec copy new_source.webm

2- Take the duration from the new copied file:

ffprobe new_source.webm | grep Duration
like image 194
rnrneverdies Avatar answered Oct 05 '22 06:10

rnrneverdies


Container Duration

Print total seconds:

ffprobe -v error -show_entries format=duration \ 
-of default=noprint_wrappers=1:nokey=1 input.webm  

Result example: 221.333000.
Adding the -sexagesimal option, the result will show HH::MM::SS time unit format.
Result example: 0:03:41.333000.

Reference: https://superuser.com/a/945604/614421

like image 33
Daniel Avatar answered Oct 05 '22 05:10

Daniel