找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 62320|回复: 18

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

[复制链接]
发表于 2023-10-23 16:21:55 | 显示全部楼层 |阅读模式
如何实现获取a.wav的时长,然后把b.mp4切割成和其一样?

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

感谢大佬~


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

在此感谢站长大大了!
发表于 2023-10-23 18:42:13 | 显示全部楼层
 楼主| 发表于 2023-10-23 18:58:35 | 显示全部楼层
回复 2# Batcher


   非常感谢老大出的教程!万分感谢!

只是执行场景1和2都没生成出来变速的视频,执行场景1直接黑闪了一下,生成了一个0字节的output.mp4。还望指教
 楼主| 发表于 2023-10-23 19:46:24 | 显示全部楼层
回复 2# Batcher


    老大, 弄成获取wav时长,然后切割mp4为相同时间。要怎样写呢?变速那个教程试了没成功...
发表于 2023-10-23 20:23:47 | 显示全部楼层
回复 3# 877


请参考Q-04把test.bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA

请参考Q-01观察一下哪行代码在报错以及详细的报错信息:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
 楼主| 发表于 2023-10-23 20:43:54 | 显示全部楼层
回复 5# Batcher



大佬您看下吧
发表于 2023-10-23 22:42:27 | 显示全部楼层
回复 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
复制代码
发表于 2023-10-23 22:44:47 | 显示全部楼层
回复 6# 877


    根据这个截图可以看出,场景1代码23行的SeconMp4需要修改成SecondMp4
 楼主| 发表于 2023-10-24 01:18:54 | 显示全部楼层
回复 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
复制代码
 楼主| 发表于 2023-10-24 02:15:39 | 显示全部楼层
回复 8# Batcher


    大佬,我想在一个bat里面继续执行下面的命令,需要删除原wav和mp4,只保留output.mp4,那个goto :eof应该怎样改呢?
 楼主| 发表于 2023-10-24 02:47:00 | 显示全部楼层
回复 7# buyiyang


    大佬。还有个问题,是根据wav的时长合并成mp4了,但是没有声音。。。
发表于 2023-10-24 08:56:00 | 显示全部楼层




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



写在这个 goto :eof 前
 楼主| 发表于 2023-10-24 09:01:16 | 显示全部楼层
回复 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
复制代码
发表于 2023-10-24 09:05:39 | 显示全部楼层
回复 13# 877


  
  1. ffmpeg.exe -i "%InputMp4%" -vf "setpts=%VideoFactor%*PTS" -af "atempo=%AudioFactor%" "%OutputName%"
  2. del "%InputMp4%";"%InputWav%"
  3. goto :eof
复制代码
 楼主| 发表于 2023-10-24 09:12:35 | 显示全部楼层
回复 14# 77七


    感谢大佬!还是这段代码,看站长大大写的是实现音画同步,我合成后的output.mp4是根据wav变速合成了,但是没有声音。请大佬给看下是哪里问题呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 11:52 , Processed in 0.022262 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表