@echo off
REM 功能:一键无损重新封装为 mp4
REM 作者:neverno
REM 备注:暂时只支持FLV以及F4V和MKV格式
REM 版本历史:
REM 0.1 发布
REM 0.2 增加支持F4V
REM 请无视下面的内容
REM echo %~n1%~x1
REM echo %~1
REM echo %~dp0
REM echo %~dpn1
REM ping -n 10 127.0.0.1 > nul 可当作 wait
REM 请无视上面的内容
title 一键无损重新封装为 mp4
cd /D "%~dp0"
for %%F in (%*) do call :main %%F
goto :eof
:main
setlocal
if /I "%~x1"==".flv" set flag=1
if /I "%~x1"==".f4v" set flag=1
if /I "%~x1"==".mkv" set flag=1
if defined flag (
ffmpeg.exe -i "%~1" -vcodec copy -acodec copy "%~dpn1".mp4
goto :eof
)
if not defined flag (
echo ===
echo === 文件名: %~n1%~x1
echo === 错误原因:格式不支持
echo ===
pause
)
ENDLOCAL
goto :eof
我之前参考下列代码改的,但没有成功,这个代码的交互性就非常好。
@echo off
title YouTube 音视频合并 20140127
echo 作者:Crexyer
echo 网站:http://www.crexyer.com/
echo.
set /p audio=请将【音频】文件拖拽到此处,按下回车确认:
set /p video=请将【视频】文件拖拽到此处,按下回车确认后,到H盘根目录查找
ffmpeg.exe -i %audio% -i %video% -acodec copy -vcodec copy H:\output.mp4
echo.
echo 合并结束!
echo 文件已经输出到 H:\output.mp4
pause
@echo off
set /p FILE=请拖拽文件到此处并按回车:
if /I "%FILE:~-4,-1%"=="flv" set flag=1
if /I "%FILE:~-4,-1%"=="f4v" set flag=1
if /I "%FILE:~-4,-1%"=="mkv" set flag=1
if /I "%FILE:~-4,-1%"==".fl" set flag=2
if /I "%FILE:~-4,-1%"==".f4" set flag=2
if /I "%FILE:~-4,-1%"==".mk" set flag=2
if "%flag%"=="1" (
ffmpeg.exe -i "%FILE%" -vcodec copy -acodec copy "%FILE:~1,-4%mp4"
if %ERRORLEVEL% NEQ 0 (
color 0C
echo 发生错误!
)
if %ERRORLEVEL%==0 (
echo 操作完成!
)
pause
)
if "%flag%"=="2" (
ffmpeg.exe -i "%FILE%" -vcodec copy -acodec copy "%FILE:~0,-4%.mp4"
if %ERRORLEVEL% NEQ 0 (
color 0C
echo 发生错误!
)
if %ERRORLEVEL%==0 (
echo 操作完成!
)
pause
)
if not defined flag (
color 0C
echo ===
echo === 文件名: %FILE%
echo === 错误原因:格式不支持
echo ===
pause
)
@echo off
title 一键无损重新封装为 mp4
cd /D "%~dp0"
:main
echo 请拖放文件到这个窗口中,然后按回车键。
set /p input=""
for %%F in (%input%) do (
if /I "%%~xF"==".flv" set flag=1
if /I "%%~xF"==".f4v" set flag=1
if /I "%%~xF"==".mkv" set flag=1
if defined flag (
ffmpeg.exe -i "%%~F" -vcodec copy -acodec copy "%%~dpnF".mp4
echo ===
echo === 文件名: %%~nF%%~xF
echo === 转换成功
echo === 文件保存在: %%~dpnF.mp4
echo ===
set flag=
) else (
echo ===
echo === 文件名: %%~nF%%~xF
echo === 错误原因:格式不支持
echo ===
)
)
pause
goto :eof