尝试使用python在ffmpeg中选择特定语言的第一个音频流

问题描述 投票:0回答:1

我有 .mkv 文件,其中一些文件具有超过 1 个相同语言的音频流,因此我需要首先将音频流映射到特定语言,然后仅使用其中的第一个来输出 .mp4 文件。所以它需要两个 -map 音频参数,这在 ffmpeg 中不起作用。

我发现我可以使用该特定语言执行 ffmpeg 映射音频,然后将输出通过管道传输到另一个 ffmpeg 命令,该命令将从第一个 ffmpeg 命令获取第一个音频流并执行其余操作(缩放、刻录字幕、将其编码为不同的格式),但我不确定如何在 python 的 Popen 中通过管道输出以及在 Windows 中是否可能。

我找到的管道解决方案: FFMPEG 选择特定语言的第一个音频流

python python-3.x windows ffmpeg
1个回答
0
投票

您可以将第一个进程的

stdout
传递给第二个进程。像这样的东西:

import subprocess as sp

p = sp.Popen(
    ['ffmpeg', '-i', inputfile, '-map', '0:a:m:language:eng',
               '-f', 'matroska', '-', 'acodec', 'copy', 'pipe:'],
    stdout=sp.PIPE,
)
sp.run(['ffmpeg', '-i', 'pipe:', '-map', '0:0', ..., outputfile],
       stdin=p.stdout)
p.terminate()

© www.soinside.com 2019 - 2024. All rights reserved.