Video 如何使用mediainfo以秒或其他格式查找视频文件的持续时间?
如何确定视频文件的持续时间(以毫秒为单位),即以整数为单位。Video 如何使用mediainfo以秒或其他格式查找视频文件的持续时间?,video,ffmpeg,multimedia,ffprobe,mediainfo,Video,Ffmpeg,Multimedia,Ffprobe,Mediainfo,如何确定视频文件的持续时间(以毫秒为单位),即以整数为单位。 我已使用ffprobe获取持续时间,但它没有为所有文件格式提供持续时间。使用以下命令: i) 要获取视频流的持续时间,请执行以下操作: $ mediainfo --Inform="Video;%Duration%" [inputfile] ii)要获取媒体文件的持续时间: $ mediainfo --Inform="General;%Duration%" [inputfile] iii)仅获取音频流的持续时间: $ mediai
我已使用ffprobe获取持续时间,但它没有为所有文件格式提供持续时间。使用以下命令: 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
iota提供使用mediainfo--Inform=“Video;”%Duration%”[inputfile],这是可能的,但会返回奇怪的结果
例如,对于持续时间为31s 565ms的视频,给定命令的输出为:
31565
这不适合我,我提出了以下解决方案:
mediainfo --Inform="Video;%Duration/String3%" inputExample.webm
返回值为:
00:00:31.565
毕竟,您可以使用PHP格式化返回值,将其转换为秒,例如:
我们还可以使用ffmpeg获取任何视频或音频文件的持续时间 要安装ffmpeg,请遵循以下步骤
导入子流程
进口稀土
process=subprocess.Popen(['ffmpeg','-i',媒体文件的路径],stdout=subprocess.PIPE,stderr=subprocess.stdout)
stdout,stderr=process.communicate()
matches=re.search(r“Duration:\s{1}(?P\d+?):(?P\d+?):(?P\d+\。\d+?),,”,stdout,re.DOTALL)。groupdict()
打印匹配项['hours']
打印匹配项['minutes']
打印匹配项['seconds']
Nice,它和我发现的ffprobe一样,支持的格式比mediainfo少。mediainfo是专门为这些目的而设计的,但是整个ffmpeg框架是为转码而构建的,而且安装起来很繁重。
$parsed = date_parse( '00:00:31.565' );
echo $parsed['hour'] * 3600 + $parsed['minute'] * 60 + $parsed['second'];
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']