我的问题在顶部:
在ass
使用时引用过滤器的动态文件名的正确方法是什么-filter_complex
ffmpeg?
故事和我的尝试:
我有一个文件夹,里面有宽屏(16:9).mp4
文件,帧大小为 1920x1080。对于每个 mp4 文件,我还有一个.ass
字幕文件,其命名模式为originalfilename_outline.ass
。最后,还有一个透明文件.png
,用作视频的水印。
我的最终目标是 mpeg2 PAL DVD.mpg
文件,输入文件重新缩放为 576px 高度,左右两侧均等裁剪为 4:3 的宽高比,尺寸为 720x576,并将字幕和水印硬编码到视频中。
为此,我.bat
在 Windows 中尝试了以下文件,使用ffmpeg。
for %%a in ("*.mp4") do ffmpeg -i "%%a"^
-i full_screen_watermark.png^
-aspect 4:3^
-filter_complex "scale=1024x576,crop=iw-304:ih:152:0,overlay=0:0,ass=%%~nA_outline.ass"^
-target pal-dvd "PAL_DVD_Format\%%~na.mpg"
pause
对于单个文件来说,这是可行的,但似乎ass=%%~nA_outline.ass
批处理文件的一部分有问题,因为我收到以下错误:
Input #0, avi, from 'testing.mp4':
Duration: 18:09:40.03, start: 0.000000, bitrate: 36 kb/s
Stream #0:0: Video: mpeg4 (Simple Profile) (DIVX / 0x58564944), yuv420p, 192
0x1080 [SAR 1:1 DAR 16:9], 6461 kb/s, 25 fps, 25 tbr, 25 tbn, 1k tbc
Stream #0:1: Audio: aac (LC) ([255][0][0][0] / 0x00FF), 44100 Hz, stereo, fl
tp, 128 kb/s
Input #1, png_pipe, from 'full_screen_watermark.png':
Duration: N/A, bitrate: N/A
Stream #1:0: Video: png, rgba, 720x576 [SAR 3543:3543 DAR 5:4], 25 tbr, 25 t
bn, 25 tbc
[Parsed_ass_3 @ 000000000033ec60] ass_read_file(%~nA_outline.ass): fopen failed
[Parsed_ass_3 @ 000000000033ec60] Could not create a libass track when reading f
ile '%~nA_outline.ass'
[AVFilterGraph @ 0000000004ed1ec0] Error initializing filter 'ass' with args '%~
nA_outline.ass'
Error configuring filters.
我其实还不熟悉ffmpeg我通过浏览 ffmpeg 在线手册和 SuperUser 上的其他一些答案拼凑了这个 Windows 批处理文件,所以如果我所做的其他事情明显是错误的,请告诉我:-)
答案1
循环的索引变量FOR
区分大小写。您需要将其更改%%~nA
为%%~na
(或将其他出现的变量大写)。