标题: [文本处理] 批处理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- @echo off
- REM 1、下载并安装 FFmpeg 这个命令行工具
- REM https://github.com/BtbN/FFmpeg-Builds/releases
- REM 2、根据自己电脑实际安装路径设置以下临时环境变量
- set "path=C:\Program Files\ffmpeg\ffmpeg-n6.0-latest-win64-gpl-6.0\bin\;%path%"
-
- for /f "tokens=2 delims=, " %%a in ('ffmpeg.exe -i "input.wav" 2^>^&1 ^| find "Duration:"') do (
- set "str=%%a"
- )
- echo,%str%
- pause
复制代码
作者: Batcher 时间: 2023-10-23 09:40
回复 1# 877
混响input.wav和input.mp3自动剪裁不需要计算时长.bat- @echo off
- REM 1、下载并安装 FFmpeg 这个命令行工具
- REM https://github.com/BtbN/FFmpeg-Builds/releases
- REM 2、根据自己电脑实际安装路径设置以下临时环境变量
- set "path=C:\Program Files\ffmpeg\ffmpeg-n6.0-latest-win64-gpl-6.0\bin\;%path%"
-
- 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- @echo off
- REM 1、下载并安装 FFmpeg 这个命令行工具
- REM https://github.com/BtbN/FFmpeg-Builds/releases
- REM 2、根据自己电脑实际安装路径设置以下临时环境变量
- set "path=C:\Program Files\ffmpeg\ffmpeg-n6.0-latest-win64-gpl-6.0\bin\;%path%"
-
- cd /d "%~dp0"
- for %%i in (*.wav) do (
- set "InputWav=%%i"
- )
- for %%i in (*.mp3) do (
- set "InputMp3=%%i"
- set "Output=%%~ni_ok%%~xi"
- )
- ffmpeg.exe -i "%InputWav%" -i "%InputMp3%" -filter_complex "[0:a][1:a]amerge=inputs=2[a]" -map "[a]" "%Output%"
复制代码
混响一个wav和一个mp3生成mp3自动获取文件名-方法2.bat- @echo off
- REM 1、下载并安装 FFmpeg 这个命令行工具
- REM https://github.com/BtbN/FFmpeg-Builds/releases
- REM 2、根据自己电脑实际安装路径设置以下临时环境变量
- set "path=C:\Program Files\ffmpeg\ffmpeg-n6.0-latest-win64-gpl-6.0\bin\;%path%"
-
- cd /d "%~dp0"
- for %%i in (*.wav) do (
- set "InputWav=%%i"
- )
- for %%i in (*.mp3) do (
- set "InputMp3=%%i"
- set "Output=%%~ni_ok%%~xi"
- )
- 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- @echo off
- REM 1、下载并安装 FFmpeg 这个命令行工具
- REM https://github.com/BtbN/FFmpeg-Builds/releases
- REM 2、根据自己电脑实际安装路径设置以下临时环境变量
- set "path=C:\Program Files\ffmpeg\ffmpeg-n6.0-latest-win64-gpl-6.0\bin\;%path%"
-
- cd /d "%~dp0"
- for %%i in (*.wav) do (
- set "InputWav=%%i"
- set "Output=%%~ni_ok%%~xi"
- )
- for %%i in (*.mp3) do (
- set "InputMp3=%%i"
- )
- 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- @echo off
- REM 1、下载并安装 FFmpeg 这个命令行工具
- REM https://github.com/BtbN/FFmpeg-Builds/releases
- REM 2、根据自己电脑实际安装路径设置以下临时环境变量
- set "path=C:\Program Files\ffmpeg\ffmpeg-n6.0-latest-win64-gpl-6.0\bin\;%path%"
-
- cd /d "%~dp0"
- for %%i in (*.wav) do (
- set "InputWav=%%i"
- set "Output=%%~ni_ok%%~xi"
- )
- for %%i in (*.mp3) do (
- set "InputMp3=%%i"
- )
- 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%"
- del /f /q "%InputWav%" "%InputMp3%"
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |