如何用ffmpeg自动检测立体声相位抵消并反转相位转单声道?
背景
我使用ffmpeg转换某YouTube视频的音频为单声道.wav格式时遇到问题:用常规转换命令生成的音频无声或损坏,推测是立体声通道相位抵消导致的。曾尝试用Python导入音频计算相位和互相关,但6小时长的音频会占用大量内存,该方案不可行。
目标
希望优先通过ffmpeg实现:自动检测立体声通道是否因相位错位发生抵消,并且在转换单声道前自动反转相位,保证输出音频的完整性。
问题
如何自动检测立体声通道是否相互抵消,并用ffmpeg反转相位以确保单声道转换成功?欢迎提供相关解决方案或替代方法。
已执行步骤
- 使用
yt-dlp下载目标YouTube音频 - 尝试用
ffmpeg直接转换为单声道,结果音频无声或损坏 - 手动反转其中一个声道的相位后,成功转换出正常的单声道音频
音频下载命令
yt-dlp -f bestaudio https://www.youtube.com/watch?v=s3QB_rJzH08 -o input.webm
常规单声道转换命令(生成无声/损坏文件)
ffmpeg -i input.webm -ac 1 -ar 16000 -c:a pcm_s16le output.wav
带相位反转的单声道转换命令(生成正常有声文件)
ffmpeg -i input.webm -af "aeval=val(0)|-val(1)" -ac 1 -ar 16000 -c:a pcm_s16le output.wav
内容的提问来源于stack exchange,提问作者Rhenan Bartels
相关产品推荐
相关产品推荐

