如何以毫秒为单位查找视频文件的持续时间。以确定的方式整数。 我使用ffprobe来获取持续时间,但它没有给出所有文件格式的持续时间。
答案 0 :(得分:15)
使用以下命令:
i)获取视频流的持续时间:
$ mediainfo --Inform="Video;%Duration%" [inputfile]
ii)获取媒体文件的持续时间:
$ mediainfo --Inform="General;%Duration%" [inputfile]
iii)仅获取音频流的持续时间:
$ mediainfo --Inform="Audio;%Duration%" [inputfile]
iv)获取多个参数的值:
$ mediainfo --Inform="Video;%Width%,%Height%,%BitRate%,%FrameRate%" [inputfile]
输出将是这样的:
1280,720,3000000,30.0
答案 1 :(得分:5)
由 iota 提供使用mediainfo --Inform="Video;%Duration%" [inputfile]
,但可能会返回奇怪的结果。
例如,对于持续时间 31s 565ms 的视频,给定命令的输出将为:
31565
它不适合我,我找到了以下解决方案:
mediainfo --Inform="Video;%Duration/String3%" inputExample.webm
返回值为:
00:00:31.565
毕竟,您只需格式化返回值,让我们说 PHP ,将其转换为秒,例如:
$parsed = date_parse( '00:00:31.565' );
echo $parsed['hour'] * 3600 + $parsed['minute'] * 60 + $parsed['second'];
答案 2 :(得分:1)
我们也可以使用ffmpeg来获取任何视频或音频文件的持续时间。
要安装ffmpeg,请按照此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']
答案 3 :(得分:0)
我在我的 xubuntu 机器上使用以下命令,它完全符合 OP 想要完成的任务。
mediainfo --Output="Video;%Duration%\n" *.mp4 | awk '{ sum += $1 } END { secs=sum/1000; h=int(secs/3600);m=int((secs-h*3600)/60);s=int(secs-h*3600-m*60); printf("%02d:%02d:%02d\n",h,m,s) }'