根据Gyan的回答,这是我用来获取ffmpeg所有可能扩展名的Python脚本,它可以用于其复用器和解复用器:
import subprocess, re
ffmpeg = 'c:/ffmpeg/bin/ffmpeg.exe'
LINE_PATTERN = r' +\S+ +(\S+)'
EXT_PATTERN = r'Common extensions: (.+)\.'
output = subprocess.getoutput([ffmpeg, '-hide_banner', '-demuxers'])
lines = output.split('\n')[4:]
demuxers = {}
for line in lines:
demuxer = re.findall(LINE_PATTERN, line)[0]
info = subprocess.getoutput([ffmpeg, '-hide_banner', '-h', f'demuxer={demuxer}'])
exts = re.findall(EXT_PATTERN, info)
if exts:
demuxers[demuxer] = exts[0].split(',')
output = subprocess.getoutput([ffmpeg, '-hide_banner', '-muxers'])
lines = output.split('\n')[4:]
muxers = {}
for line in lines:
muxer = re.findall(LINE_PATTERN, line)[0]
info = subprocess.getoutput([ffmpeg, '-hide_banner', '-h', f'muxer={muxer}'])
exts = re.findall(EXT_PATTERN, info)
if exts:
muxers[muxer] = exts[0].split(',')
file_name = 'ffmpeg_extensions.txt'
f = open(file_name, 'w')
exts = set()
for ext in demuxers.values():
[exts.add(x.strip()) for x in ext]
for ext in muxers.values():
[exts.add(x.strip()) for x in ext]
for ext in sorted(exts):
f.write(ext + '\n')
f.close()
print('Extensions written to file: ' + file_name)
ffmpeg -demuxers -hide_banner | tail -n +5 | cut -d' ' -f4 | xargs -i{} ffmpeg -hide_banner -h demuxer={} | grep 'Common extensions' | cut -d' ' -f7 | tr ',' $'\n' | tr -d '.'
如果要获取复用器(muxing)的列表,只需将demux
替换为mux
即可。 - XMB5