【问题标题】:using ffmpeg with python, Input buffer exhausted before END element found将ffmpeg与python一起使用,在找到END元素之前输入缓冲区已耗尽
【发布时间】:2018-11-28 04:21:44
【问题描述】:

当我从命令行运行时,一切都很好

ffmpeg -i input.mp4 -f mp3 -ab 320000 -vn output.mp3 

但是当我从 python 调用相同的时候

subprocess.call(['ffmpeg', '-i', 'input.mp4', '-f', 'mp3', '-ab', '320000', '-vn', 'output.mp3'])

转换几秒钟后,我收到此错误

[aac @ 0x7fb3d803e000] decode_band_types: Input buffer exhausted before 
END element found
Error while decoding stream #0:1: Invalid data found when processing 
input
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fb3d8000000] stream 1, offset 0x80011d: 
partial file
input.mp4: Invalid data found when processing input

有什么想法吗?

【问题讨论】:

    标签: python ffmpeg subprocess


    【解决方案1】:

    您需要添加-dn & -ignore_unknown 和-sn 选项(如果字幕导致编码失败)。

    -dn 表示没有数据编码。

    -sn指无字幕编码

    -ignore_unknown 指忽略未知流(SCTE 35, 128 数据)

    无论输入流如何,-dn -sn 和 -ignore_unknown 选项都可以使用。

    这会解决你的问题。

    如果您想保留数据、字幕流,还有其他选择。

    -c:d copy是指复制数据流。

    -c:s copy指复制字幕流。

    您可以使用-copy_unknown 选项将未知流输入到您的输出中。

    您的最终代码如下所示。

    subprocess.call(['ffmpeg', '-i', 'input.mp4', '-f', 'mp3', '-ab', '320000', '-vn', '-sn', '-dn', '-ignore_unknown', 'output.mp3'])
    

    注意:-copy_unknown 选项仅适用于 ffmpeg 4.x 或更高版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-16
      • 2015-08-20
      • 2015-01-12
      相关资源
      最近更新 更多