使用ffmpeg和python将视频中的所有音频流提取到单独的音频文件中

2024-03-28 19:25:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从视频中提取所有音频流/曲目(无论您想叫它们什么),并使用python和ffmpeg将每个音频流/曲目保存到单独的音频文件中。
问题是,我需要知道有多少音频流,我不想手动输入文件的流数,也不想对每个文件运行ffmpeg命令来计算出来。
程序是否有办法计算出有多少个流,这样我就可以将每个流提取到一个单独的文件中

下面是一段代码 inputFiles是输入的每个视频文件的目录列表
_dir_in是所有输入文件所在的目录
_dir_out是放置代码输出的所有文件的目录

for video in inputFiles:
    number_of_audio_streams = 0 # this is where I need to know how many audio streams there are
    for i in range(number_of_audio_stremas):
        subprocess.call(f'ffmpeg -i {_dir_in}/{video} -map 0:a:{str(i)} {_dir_out}/audio/{video}-{str(i)}.m4a')

Tags: 文件of代码in目录numberforvideo
1条回答
网友
1楼 · 发布于 2024-03-28 19:25:53

没有单独使用ffmpeg提取所有音频流的自动方法

您可以使用ffprobe确定音频流/曲目的数量:

$ ffprobe -loglevel error -select_streams a -show_entries stream=codec_type -of default=nw=1 input.mkv
  codec_type=audio
  codec_type=audio
  codec_type=audio

此示例显示input.mkv有3个音频流

你可以解析它,但是你想得到总数。使用wc -l的示例:

$ ffprobe -loglevel error -select_streams a -show_entries stream=codec_type -of default=nw=1 input.mkv | wc -l
  3

这应该是用Python实现解决方案的一个良好开端(我对Python不太了解,无法给出复制粘贴的答案)

相关问题 更多 >