我在尝试使用 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
FFmpeg 有相位差检测滤波器。
ffmpeg -i input.webm -af "aphasemeter=video=0:phasing=1:angle=90:duration=1:tolerance=0.001,ametadata=print:file=aphase.log" -vn -f null -
文件
aphase.log
将包含以下格式的每帧相位差日志
frame:17302 pts:19931904 pts_time:451.971
lavfi.aphasemeter.phase=0.224391
相位值的范围可以是-1到+1。
-1
表示通道完全异相,1
表示通道同相。
如果通道异相,ffmpeg 还将在控制台日志中打印摘要读数。