通过调用ffmpeg来将mp3和jpg合并为mp4视频-批处理。

时间:2022-11-23 19:56:40


 听歌练乐器的时候想同时看一下简谱,没找到好用的app, 自己动手写个批处理。只要把找到的歌(mp3文件)和谱(jpg文件)改成同名,并执行下面批处理,就能自动合并为视频。 音遍就歌,画面就是谱。 把常用的练习曲都合并一下。

 

@echo off&setlocal enabledelayedexpansion

REM### 找到上级目录下的所有 mp3 文件
for /R ..\ %%i in (*.mp3) do (

echo "%%~di%%~pi%%~ni.jpg"
echo "%%i"
echo " =>>>> "
echo "%%~di%%~pi%%~ni.mp4"
echo ------------------------------------------------



rem ##通过ffmpeg导出mp3的信息为log文件,然后解析log文件找到 duration 后面的时间值####
rem ##############################################
del /f /q ffmpeg-*.log
ffmpeg.exe -report -i "%%i"
set var1="100"
for %%a in (ffmpeg-*.log) do (
for /f "tokens=2 delims=, " %%b in ('findstr /b /c:" Duration: " "%%~a"') do (
set var1=%%~b
)
rem #############################################

)

REM ###### 时间(如 09:09:09) 转换成秒#########
REM ##############################################
set t=!var1!
set th1=!t:~0,1!
set th2=!t:~1,1!
set tm1=!t:~3,1!
set tm2=!t:~4,1!
set ts1=!t:~6,1!
set ts2=!t:~7,1!
set /a s=!th1!*36000+!th2!*3600+!tm1!*600+!tm2!*60+!ts1!*10+!ts2!+1
echo !s!
REM ##############################################

REM # 将与mp3同名的jpg,一起合并为同名的mp4文件。
ffmpeg.exe -y -f image2 -loop 1 -r 0.5 -i "%%~di%%~pi%%~ni.jpg" -i "%%i" -pix_fmt yuvj420p -t !var1! -vcodec mpeg4 "%%~di%%~pi%%~ni.mp4"

)
pause