我只想知道True视频是否有音频或False没有音频。
我觉得使用子流程就快到了。
我获取有关正在运行的视频文件的信息ffprobe并将结果拆分为列表。
我尝试匹配列表中包含或不包含音频的字符串,但这并没有给出一致的结果。
from subprocess import Popen, PIPE
import subprocess
b = '/path/to/mp4'
'0:1' in str(subprocess.run(['ffprobe', b], stdout=PIPE, stderr=PIPE).stderr.split()[-20])
上面的行检查视频文件中从最后一行算起的第 20 行是否有第二个流。就像我说的,并不总是一致的。
我只是在请求或解析我从中得到的内容时遇到困难ffmprobe。
这是ffprobe从最后一项返回的所有内容,而不仅仅是第 20 项。
b = '/path/to/mp4'
subprocess.run(['ffprobe', b], stdout=PIPE, stderr=PIPE).stderr.split()
返回...
我还尝试将此函数从返回视频文件的持续时间的函数修改为返回True或False返回音频的函数,因为这可能是一种不太简单的获取布尔值的方法。我有点无法尝试使用这些不同的选项。
def get_length(filename):
result = subprocess.run(["ffprobe", "-v", "error", "-show_entries",
"format=duration", "-of",
"default=noprint_wrappers=1:nokey=1", filename],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
return float(result.stdout)
慕后森
摇曳的蔷薇
慕侠2389804
慕码人2483693
相关分类