使用ffmpeg与soundstretch对视频进行简单变声处理
简单的基于命令行的方案(不是实时的), 下载 FFmpeg https://github.com/BtbN/FFmpeg-Builds/releases 和 SoundStretch http://www.surina.net/soundtouch/download.html
解压至全局或某目录
创建一个.sh脚本文件(因为有多行命令), 文件内容如下
# 命令行参数, 文件名
filename="$1"
# 不要后缀名
prefix="${filename%.*}"
echo "$prefix"
# 使用ffmpeg从视频中提取音频
./ffmpeg.exe -i "$filename" -f wav -ar 16000 inputpitch.wav
# 使用soundstretch 进行变调, -n 变低沉, +n 变高昂? 我乐理很烂
./soundstretch.exe inputpitch.wav "$prefix".wav -pitch=-2
# ffmpeg 提取的音频 音量很小(我试的是很小),所以音量得调大
./ffmpeg.exe -i "$prefix".wav -filter:a "volume=5" "$prefix"_v.wav
# 把新的音频放进原视频中,得到最终的视频
./ffmpeg -i "$filename" -i "$prefix"_v.wav -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 "$prefix"_final.mp4
执行方式
bash file_name_to_pitch.sh target_video_file_name.whatever_postfix_mp4_mkv_api_idontknow
注1: 我是在windows环境下使用git bash, windows自带的command prompt对应的.bat文件 或 powershell 不会。如果是在linux/mac环境下, 自然是要把 .exe 程序后缀名删掉
注2: 只是为了好玩, 虽然有点晚了, 但可能可以考虑新账号新方向时使用?
注3: 我最初就是想做变声处理的, 但因为个人搜索思维问题, 愣是没搜对关键字,也就没搜到方案。 有请教过@日常躺平 大佬,他用的 OBS studio录屏,加 vst 和pitchproof 插件。 我找了半天,成是成功了, 但我平时都用ocam录屏的(傻瓜式操作), OBS对我来说还是太高端了。
刚才一通乱搜ffmpeg的加速减速,并没有变声, 但不小心 搜到 SoundStretch基于命令行的可以修改音调的工具,于是又试了一通, 成功搞定!