How to find duration of a video file using mediainfo in seconds or other formats?

末鹿安然 提交于 2019-11-29 01:56:12

问题


How can I find duration of a video file in miliseconds i.e. in integer in deterministic way. I have used ffprobe to get the duration but it doesn't give duration for all file formats.


回答1:


Use the following commands:

i) To get the duration of video stream:

$ mediainfo --Inform="Video;%Duration%"  [inputfile]

ii) To get the duration of the media file:

$ mediainfo --Inform="General;%Duration%" [inputfile]

iii) To get the duration of audio stream only:

$ mediainfo --Inform="Audio;%Duration%" [inputfile]

iv) To get values of more than one parameter:

$ mediainfo --Inform="Video;%Width%,%Height%,%BitRate%,%FrameRate%" [inputfile]

Output would be something like this:

1280,720,3000000,30.0



回答2:


As offered by iota to use mediainfo --Inform="Video;%Duration%" [inputfile], possible but returns weird results.

For example, for video with duration 31s 565ms the output of given command would be:

31565

It wasn't suitable for me and I came up to the following solution:

mediainfo --Inform="Video;%Duration/String3%" inputExample.webm

Returned value is:

00:00:31.565

After all, you could just format returned value with, let's say PHP, to convert it to seconds, e.g.:

$parsed = date_parse( '00:00:31.565' );
echo $parsed['hour'] * 3600 + $parsed['minute'] * 60 + $parsed['second'];

Example




回答3:


we can also use ffmpeg to get the duration of any video or audio files.

To install ffmpeg follow this link

import subprocess
import re

process = subprocess.Popen(['ffmpeg',  '-i', path_of_media_file], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
stdout, stderr = process.communicate()
matches = re.search(r"Duration:\s{1}(?P<hours>\d+?):(?P<minutes>\d+?):(?P<seconds>\d+\.\d+?),", stdout, re.DOTALL).groupdict()

print matches['hours']
print matches['minutes']
print matches['seconds']


来源:https://stackoverflow.com/questions/19091771/how-to-find-duration-of-a-video-file-using-mediainfo-in-seconds-or-other-formats

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!