批处理文件,用于使用ffmpeg对多个视频中的字幕进行硬编码


1

我的问题在顶部

引用动态文件名的正确方法是什么? ass 使用时过滤 -filter_complex


故事和我的尝试

我有一个包含宽屏的文件夹(16:9) .mp4 文件,1920x1080帧大小。对于每个mp4文件,我也有一个 .ass 带有命名模式的字幕文件 originalfilename_outline.ass。最后,有一个透明的 .png 作为视频的水印。

我的终极目标是mpeg2 PAL DVD .mpg 将输入文件重新调整为576px高度的文件,并在左右两侧均匀裁剪为尺寸为720x576的4:3宽高比,并将字幕和水印硬编码到视频中。

为此,我尝试了以下内容 .bat Windows中的文件,使用

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在线手册和SuperUser上的一些其他答案将这个Windows批处理文件拼凑在一起,所以如果还有其他我正在做的事情显然是错误的,请告诉我:-)

Answers:


3

索引变量 FOR 循环区分大小写。 你需要改变 %%~nA%%~na (或将其他事件大写)。


1
男人,我觉得脸上的手掌......
Ananda Mahto
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.