Board logo

标题: [文本处理] 批处理ffmpeg根据wav时长,把mp3覆盖到wav,求指教 [打印本页]

作者: 877    时间: 2023-10-23 08:31     标题: 批处理ffmpeg根据wav时长,把mp3覆盖到wav,求指教

求大佬指教:
文件夹下有一个wav和一个mp3,需要获取wav的时长,然后将mp3覆盖上(mp3时长比wav时长长),

目的形成混响效果。

提前表示感谢!
作者: Batcher    时间: 2023-10-23 09:31

回复 1# 877


获取input.wav时长.bat
  1. @echo off
  2. REM 1、下载并安装 FFmpeg 这个命令行工具
  3. REM https://github.com/BtbN/FFmpeg-Builds/releases
  4. REM 2、根据自己电脑实际安装路径设置以下临时环境变量
  5. set "path=C:\Program Files\ffmpeg\ffmpeg-n6.0-latest-win64-gpl-6.0\bin\;%path%"
  6. for /f "tokens=2 delims=, " %%a in ('ffmpeg.exe -i "input.wav" 2^>^&1 ^| find "Duration:"') do (
  7.     set "str=%%a"
  8. )
  9. echo,%str%
  10. pause
复制代码

作者: Batcher    时间: 2023-10-23 09:40

回复 1# 877


混响input.wav和input.mp3自动剪裁不需要计算时长.bat
  1. @echo off
  2. REM 1、下载并安装 FFmpeg 这个命令行工具
  3. REM https://github.com/BtbN/FFmpeg-Builds/releases
  4. REM 2、根据自己电脑实际安装路径设置以下临时环境变量
  5. set "path=C:\Program Files\ffmpeg\ffmpeg-n6.0-latest-win64-gpl-6.0\bin\;%path%"
  6. ffmpeg.exe -i "input.wav" -i "input.mp3" -filter_complex "[0:a][1:a]amerge=inputs=2[a]" -map "[a]" "output.mp3"
复制代码

作者: 877    时间: 2023-10-23 09:46

回复 3# Batcher


    感谢站长大大,只是每次都要手动修改文件名, input.wav input.mp3 和最后生成的 output.mp3,能否修改成*.wav和*.mp3这种呢?最后生成的用*_ok.wav命名
作者: Batcher    时间: 2023-10-23 10:03

回复 4# 877


混响一个wav和一个mp3生成mp3自动获取文件名-方法1.bat
  1. @echo off
  2. REM 1、下载并安装 FFmpeg 这个命令行工具
  3. REM https://github.com/BtbN/FFmpeg-Builds/releases
  4. REM 2、根据自己电脑实际安装路径设置以下临时环境变量
  5. set "path=C:\Program Files\ffmpeg\ffmpeg-n6.0-latest-win64-gpl-6.0\bin\;%path%"
  6. cd /d "%~dp0"
  7. for %%i in (*.wav) do (
  8.     set "InputWav=%%i"
  9. )
  10. for %%i in (*.mp3) do (
  11.     set "InputMp3=%%i"
  12.     set "Output=%%~ni_ok%%~xi"
  13. )
  14. ffmpeg.exe -i "%InputWav%" -i "%InputMp3%" -filter_complex "[0:a][1:a]amerge=inputs=2[a]" -map "[a]" "%Output%"
复制代码
混响一个wav和一个mp3生成mp3自动获取文件名-方法2.bat
  1. @echo off
  2. REM 1、下载并安装 FFmpeg 这个命令行工具
  3. REM https://github.com/BtbN/FFmpeg-Builds/releases
  4. REM 2、根据自己电脑实际安装路径设置以下临时环境变量
  5. set "path=C:\Program Files\ffmpeg\ffmpeg-n6.0-latest-win64-gpl-6.0\bin\;%path%"
  6. cd /d "%~dp0"
  7. for %%i in (*.wav) do (
  8.     set "InputWav=%%i"
  9. )
  10. for %%i in (*.mp3) do (
  11.     set "InputMp3=%%i"
  12.     set "Output=%%~ni_ok%%~xi"
  13. )
  14. ffmpeg.exe -i "%InputWav%" -i "%InputMp3%" -filter_complex "[0:0]volume=0.8[a];[1:0]volume=1.2[b];[a][b]amix=inputs=2:duration=shortest" -c:a libmp3lame "%Output%"
复制代码

作者: 877    时间: 2023-10-23 10:18

回复 5# Batcher


   大佬真厉害,只是生成的是以mp3命名的,不是.wav命名的,大佬能给修改成.wav命名的吗?
作者: 877    时间: 2023-10-23 10:34

回复 5# Batcher


    大佬,还有一个问题向您指教,能否根据.wav的时长把mp4视频变速呢?

例如.wav是2分钟,mp4高于2分钟,能否实现根据.wav的时长,把.mp4文件变速成和.wav一样呢?
作者: Batcher    时间: 2023-10-23 11:07

回复 6# 877


混响一个wav和一个mp3生成wav自动获取文件名.bat
  1. @echo off
  2. REM 1、下载并安装 FFmpeg 这个命令行工具
  3. REM https://github.com/BtbN/FFmpeg-Builds/releases
  4. REM 2、根据自己电脑实际安装路径设置以下临时环境变量
  5. set "path=C:\Program Files\ffmpeg\ffmpeg-n6.0-latest-win64-gpl-6.0\bin\;%path%"
  6. cd /d "%~dp0"
  7. for %%i in (*.wav) do (
  8.     set "InputWav=%%i"
  9.     set "Output=%%~ni_ok%%~xi"
  10. )
  11. for %%i in (*.mp3) do (
  12.     set "InputMp3=%%i"
  13. )
  14. ffmpeg.exe -i "%InputWav%" -i "%InputMp3%" -filter_complex "[0:0]volume=0.8[a];[1:0]volume=1.2[b];[a][b]amix=inputs=2:duration=shortest" -c:a pcm_s16le "%Output%"
复制代码

作者: 877    时间: 2023-10-23 11:40

回复 8# Batcher


    谢谢老大,还按照这个原理,用wav的时长来把mp4变速可以实现吗?
作者: 877    时间: 2023-10-23 15:11

回复 8# Batcher


    老大,在生成新的文件后,如何删除之前的.wav和mp3呢?结尾应该怎样写呢?求指教!
作者: Batcher    时间: 2023-10-23 15:15

回复 10# 877


混响一个wav和一个mp3生成wav_自动获取文件名_清理文件.bat
  1. @echo off
  2. REM 1、下载并安装 FFmpeg 这个命令行工具
  3. REM https://github.com/BtbN/FFmpeg-Builds/releases
  4. REM 2、根据自己电脑实际安装路径设置以下临时环境变量
  5. set "path=C:\Program Files\ffmpeg\ffmpeg-n6.0-latest-win64-gpl-6.0\bin\;%path%"
  6. cd /d "%~dp0"
  7. for %%i in (*.wav) do (
  8.     set "InputWav=%%i"
  9.     set "Output=%%~ni_ok%%~xi"
  10. )
  11. for %%i in (*.mp3) do (
  12.     set "InputMp3=%%i"
  13. )
  14. ffmpeg.exe -i "%InputWav%" -i "%InputMp3%" -filter_complex "[0:0]volume=0.8[a];[1:0]volume=1.2[b];[a][b]amix=inputs=2:duration=shortest" -c:a pcm_s16le "%Output%"
  15. del /f /q "%InputWav%" "%InputMp3%"
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2