【发布时间】:2020-05-20 11:36:59
【问题描述】:
我正在用 python 编写一个调用 ffmpeg 的小脚本,该脚本运行良好,但我无法阻止 FFMPEG 用它自己的“Lavf58.29.100”编码器覆盖编码器标签。
我尝试使用 FFPROBE 将输入属性捕获为变量并将源编码器显式写入编码器标签,但它仍然在输出文件上使用“Lavf58.29.100”进行转码。
import subprocess
file = 'File_in.wav'
attributes = subprocess.Popen(['ffprobe', file], stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
for x in attributes.stdout.readlines():
x = x.decode(encoding='utf-8')
if 'Stream' in x:
bit_depth = x[24:33]
if 'encoder' in x:
encoder = x[22:-1]
subprocess.call(['ffmpeg', '-i', file, '-af', 'areverse', '-c:a', bit_depth, '-metadata:s:a', 'encoder=' + encoder, 'File_out.wav'])
这是python之外的ffmpeg命令:
ffmpeg -i 'File_in.wav' -af areverse -c:a pcm_s24le -metadata:s:a encoder='WaveLab Pro 10.0.10' 'File_out.wav'
来自 MediaInfo:
源文件 - “Encoded_Application”:“WaveLab Pro 10.0.10”
输出文件 - “Encoded_Application”:“Lavf58.29.100”
维护文件出处非常重要,因此我不能更改源元数据。有谁知道解决这个问题的方法? FFMPEG 似乎接受其他属性,但不接受编码器标签。
【问题讨论】: