我目前正在尝试获取文件:
example.mkv // This is the source with audio/subs
example-Encoded.mkv // This is video only/encoded source
并设置一个脚本。我已经制作了一个成功的脚本,但是在拉出前两个脚本之后,它尝试拉更多的脚本,虽然确实完成了remux的操作,但它却抛出了错误,因为它正在查找名为以下文件的版本example-Encoded-Encode.mkv
这是我正在使用的脚本:
mkdir MUXED
FOR %%a IN ("*.mkv") DO ffmpeg -i "%%a" -i "%%~na-Encoded.mkv" ^
-map 1:v:0 c:v:0 copy -disposition:v:0 default -metadata:s:v:0 title="Example" ^
-map 0:a:0 -c:a:0 copy -disposition:a:0 default -metadata:s:a:0 title="DD 2.0" ^
-map 0:a:1 -c:a:1 copy -metadata:s:s:0 title="Commentary" ^
-map 0:s:0 -c:s:0 copy -metadata:s:s:0 title="English (SRT)" ^
-map 0:s:1 -c:s:1 copy -metadata:s:s:1 title="English (VobSub)" ^
"MUXED\%%~na.mkv"
pause
我可以通过将编码后的文件转换为mp4容器来做相同的文件名,因为它们只是编码后的视频。但是,我觉得有一种方法可以正确执行此操作,而无需先更换容器!
仅对*-Encoded.mkv
您的for循环中的文件尝试以下清单:
@echo off && setlocal enabledelayedexpansion
cd/d "%~dp0" & set "_x=-Encoded" && 2>nul mkdir .\MUXED
for /f tokens^=* %%i in ('dir /b /on /a:-d "*!_x!.mkv"
')do set "_i=%%~nxi!" && cmd.exe /v:on /c ffmpeg.exe -i "!_i:%_x%=!" -i "%%~nxi" ^
-map 1:v:0 -c:v:0 copy -disposition:v:0 default -metadata:s:v:0 title="Example" ^
-map 0:a:0 -c:a:0 copy -disposition:a:0 default -metadata:s:a:0 title="DD 2.0" ^
-map 0:s:1 -c:s:1 copy -metadata:s:s:1 title="English (VobSub)" ^
-map 0:s:0 -c:s:0 copy -metadata:s:s:0 title="English (SRT)" ^
-map 0:a:1 -c:a:1 copy -metadata:s:s:0 title="Commentary" ^
".\MUXED\%%~ni.mkv" -hide_banner -v error -stats
%__APPDIR__%timeout.exe -1 & endlocal
一些进一步的阅读:
[√]你
[√] CD / CHDir
[√] MD / MKDir
[√]循环播放
[√]对于/ F循环
[√]重定向
[√] CMD / Bat字符串操作
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句