AI办公自动化:多音频轨电影视频抽取出英语音频

部落人有文化 2024-06-28 00:41:08

很多电影视频是有中、英、粤语等多个音频轨的,如果直接转换成音频,很有可能不是自己想要的那种语音。

可以先查看音频流信息,确定属于哪个音频轨:

Reading video file: E:\1-7\比得兔1.mp4

输出音频流信息

Available audio streams:

Stream 0: und - aac

Stream 1: und - aac

Stream 2: und - aac

Stream 3: und - aac

Stream 0应该是英语;

然后,在Deepseek中输入提示词:

你是一个Python编程专家,写一个Python脚本:

读取视频:"E:\1-7\比得兔1.mp4"

这个Mp4视频有多个音频轨,选择其中的Stream 0音频轨,提取出来保存为mp3音频文件,保存在和视频同一个文件夹中。

注意:每一步都要输出信息到屏幕上

源代码:

import ffmpeg

import os

def extract_audio_from_video(video_path, stream_index=0):

# 获取视频文件的目录和文件名

video_dir, video_filename = os.path.split(video_path)

video_name, video_ext = os.path.splitext(video_filename)

# 输出信息

print(f"Reading video file: {video_path}")

# 使用 ffmpeg 获取视频的音频流信息

try:

probe = ffmpeg.probe(video_path)

except ffmpeg.Error as e:

print(e.stderr, file=sys.stderr)

sys.exit(1)

audio_streams = [stream for stream in probe['streams'] if stream['codec_type'] == 'audio']

# 输出音频流信息

print("Available audio streams:")

for i, stream in enumerate(audio_streams):

print(f"Stream {i}: {stream['codec_name']}")

if stream_index >= len(audio_streams):

print(f"Stream index {stream_index} is out of range.")

return

selected_stream = audio_streams[stream_index]

# 输出选择的音频流信息

print(f"Selected audio stream: Stream {stream_index} - {selected_stream['codec_name']}")

# 构建输出音频文件路径

output_audio_path = os.path.join(video_dir, f"{video_name}_stream{stream_index}.mp3")

# 使用 ffmpeg 提取音频并保存为 MP3 文件

try:

(

ffmpeg

.input(video_path)

.output(output_audio_path, map=f"0:a:{stream_index}", acodec='libmp3lame')

.run(capture_stdout=True, capture_stderr=True)

)

except ffmpeg.Error as e:

print(e.stderr.decode(), file=sys.stderr)

sys.exit(1)

# 输出完成信息

print(f"Audio extracted and saved to: {output_audio_path}")

# 使用函数

video_path = "E:\\1-7\\比得兔1.mp4"

extract_audio_from_video(video_path)

0 阅读:0

部落人有文化

简介:感谢大家的关注