又干了一件:“为了一碟醋,包了一锅饺子”的事。。。

就是重新开始学习Strang老爷子的线性代数课了,然后下载了之前国内字幕组的版本(多年不好好学,英语水平明显下降了!!!),这个版本的老问题一直存在,就是某些视频音轨缺失,只有右耳机有声音(这对于一个常年降噪耳机离耳只是为了补充电量的人来说,简直不能忍。。。)

于是……

都是4202年了,有什么问题是写个代码解决不了的呢?

于是Python闪亮登场✨

废话不多说,直接上代码:

from moviepy.editor import VideoFileClip, AudioFileClip
from pydub import AudioSegment

# 加载视频文件
video_clip = VideoFileClip("./麻省理工-线性代数/[P01]Lec01_方程组的几何解释.mp4")

# 提取音频并保存为临时文件
temp_audio_path = "temp_audio.mp3"
video_clip.audio.write_audiofile(temp_audio_path)

# 使用pydub处理音频
audio_segment = AudioSegment.from_file(temp_audio_path)
# 如果原始音频是立体声,分割为单声道;否则直接复制为左右两个声道
if audio_segment.channels > 1:
    mono_channels = audio_segment.split_to_mono()
    right_channel = mono_channels[1] # 右声道
else:
    right_channel = audio_segment

stereo_audio = AudioSegment.from_mono_audiosegments(right_channel, right_channel)

# 将处理后的音频保存为另一个临时文件
stereo_audio_path = "temp_stereo_audio.mp3"
stereo_audio.export(stereo_audio_path, format="mp3")

# 使用moviepy将新音频设置回视频
new_audio_clip = AudioFileClip(stereo_audio_path)
video_clip.audio = new_audio_clip

# 输出处理后的视频文件
video_clip.write_videofile("./麻省理工-线性代数/[P01]Lec01_方程组的几何解释(修复).mp4")

# 清理临时文件
import os
os.remove(temp_audio_path)
os.remove(stereo_audio_path)

这里用到两个Python的工具:pydub、moviepy,直接安装就好。

moviepy可以同时处理视频和音频;pydub`主要处理音频部分,这个库提供了更灵活的音频处理功能,包括声道的操作。

pip install moviepy
pip install pydub

同时确保系统中也安装了ffmpeg,因为pydub依赖于ffmpeg来处理音频文件:

brew install ffmpeg