[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 求助批处理获取wav时长切割mp4

如何实现获取a.wav的时长,然后把b.mp4切割成和其一样?

最好是弄成获取本文件夹下wav,然后切割本文件夹下mp4这种。

感谢大佬~


另一个思路是获取wav时长,然后把mp4变速成wav时长一致。
这个要是能弄好最好了...

在此感谢站长大大了!

回复 11# 877


场景1代码第32行下面增加一行:
  1. ffmpeg.exe -i "%InputWav%" -i "%OutputName%" -c:v copy -c:a aac -strict experimental "output_mix.mp4"
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 15# 877


   只是变速了,没有合成,如果原来的mp4是没有声音的,就仍然没有声音。
bat小白,请多指教!谢谢!

TOP

回复 16# 877


第3行下面加一句:
  1. del /f /q *.flv *.mp4 *.mkv *.mov 2>nul
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 14# 77七


    大佬,这段代码如何删除已裁剪好的原文件呢?
  1. CD /D "%~dp0"
  2. md "裁剪好"
  3. for %%i in (*.flv *.mp4 *.mkv *.mov) do ffmpeg.exe -i "%%i" -vf crop=1080:1520:0:200 ".\裁剪好\%%~nxi"
  4. pause
复制代码

TOP

回复 14# 77七


    感谢大佬!还是这段代码,看站长大大写的是实现音画同步,我合成后的output.mp4是根据wav变速合成了,但是没有声音。请大佬给看下是哪里问题呢?

TOP

回复 13# 877


  
  1. ffmpeg.exe -i "%InputMp4%" -vf "setpts=%VideoFactor%*PTS" -af "atempo=%AudioFactor%" "%OutputName%"
  2. del "%InputMp4%";"%InputWav%"
  3. goto :eof
复制代码
bat小白,请多指教!谢谢!

TOP

回复 12# 77七


    大佬,怎样在这段代码后面加上del删除源文件,只保留合并后的mp4。求指教~
  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. set "OutputName=output.mp4"
  8. for %%i in (*.wav) do (
  9.     set "InputWav=%%i"
  10. )
  11. for %%i in (*.mp4) do (
  12.     set "InputMp4=%%i"
  13. )
  14. for /f "tokens=2-5 delims=:., " %%a in ('ffmpeg.exe -i "%InputWav%" 2^>^&1 ^| find "Duration:"') do (
  15.     call :Time2SS %%a %%b %%c %%d
  16. )
  17. set "SecondWav=%CS%"
  18. for /f "tokens=2-5 delims=:., " %%a in ('ffmpeg.exe -i "%InputMp4%" 2^>^&1 ^| find "Duration:"') do (
  19.     call :Time2SS %%a %%b %%c %%d
  20. )
  21. set "SecondMp4=%CS%"
  22. set "VideoFactor=%SecondWav%/%SecondMp4%"
  23. set "AudioFactor=%SecondMp4%/%SecondWav%"
  24. ffmpeg.exe -i "%InputMp4%" -vf "setpts=%VideoFactor%*PTS" -af "atempo=%AudioFactor%" "%OutputName%"
  25. goto :eof
  26. :Time2SS
  27. set /a HH=1%1-100,MM=1%2-100,SS=1%3-100
  28. set "CS=(%HH%*3600+%MM%*60+%3.%4)"
  29. goto :eof
复制代码

TOP





执行下面代码后想继续执行后面的命令,goto应该怎样改呢?
  1. ffmpeg.exe -i "%InputMp4%" -vf "setpts=%VideoFactor%*PTS" -af "atempo=%AudioFactor%" "%OutputName%"
  2. goto :eof
复制代码



写在这个 goto :eof 前
bat小白,请多指教!谢谢!

TOP

回复 7# buyiyang


    大佬。还有个问题,是根据wav的时长合并成mp4了,但是没有声音。。。

TOP

回复 8# Batcher


    大佬,我想在一个bat里面继续执行下面的命令,需要删除原wav和mp4,只保留output.mp4,那个goto :eof应该怎样改呢?

TOP

回复 7# buyiyang


    感谢大佬,帮忙看下这段代码,如何裁剪完后,删除原文件吧~后面加del哪个呢?
  1. CD /D "%~dp0"
  2. md "1"
  3. for %%i in (*.flv *.mp4 *.mkv *.mov) do ffmpeg.exe -i "%%i" -vf crop=1080:1520:0:200 ".\1\%%~nxi"
  4. del %%i 么?
  5. pause
复制代码

TOP

回复 6# 877


    根据这个截图可以看出,场景1代码23行的SeconMp4需要修改成SecondMp4
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 6# 877
第23行有个笔误,应该为set "SecondMp4=%CS%"
  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. set "OutputName=output.mp4"
  8. for %%i in (*.wav) do (
  9.     set "InputWav=%%i"
  10. )
  11. for %%i in (*.mp4) do (
  12.     set "InputMp4=%%i"
  13. )
  14. for /f "tokens=2-5 delims=:., " %%a in ('ffmpeg.exe -i "%InputWav%" 2^>^&1 ^| find "Duration:"') do (
  15.     call :Time2SS %%a %%b %%c %%d
  16. )
  17. set "SecondWav=%CS%"
  18. for /f "tokens=2-5 delims=:., " %%a in ('ffmpeg.exe -i "%InputMp4%" 2^>^&1 ^| find "Duration:"') do (
  19.     call :Time2SS %%a %%b %%c %%d
  20. )
  21. set "SecondMp4=%CS%"
  22. set "VideoFactor=%SecondWav%/%SecondMp4%"
  23. set "AudioFactor=%SecondMp4%/%SecondWav%"
  24. ffmpeg.exe -i "%InputMp4%" -vf "setpts=%VideoFactor%*PTS" -af "atempo=%AudioFactor%" "%OutputName%"
  25. goto :eof
  26. :Time2SS
  27. set /a HH=1%1-100,MM=1%2-100,SS=1%3-100
  28. set "CS=(%HH%*3600+%MM%*60+%3.%4)"
  29. goto :eof
复制代码

TOP

回复 5# Batcher



大佬您看下吧

TOP

返回列表