我正在使用 FFMPEG 将字幕硬编码到视频中。阅读了许多关于最佳方法的帖子,以及是否使用 mkv 或 mp4,但我仍然不明智。下面的代码使用 mp4 文件。从输出来看,字幕似乎是经过处理的,但是0kb的大小似乎表明实际上没有渲染任何内容,并且输出文件有音频和视频,但没有字幕。
VLC 中的元数据显示存在字幕文件 - 但为空。
这是我的 SRT 文件的示例(未在 1 中放置空行会给出输入错误消息):
1
00:00:00,000 --> 00:00:00,001
2
00:00:00,001 –-> 00:00:04,761
He drives to school every morning
3
00:00:04,761 –-> 00:00:13,061
Cause love comes slow and it goes so fast
Run Code Online (Sandbox Code Playgroud)
我的命令行代码是:
`ffmpeg -i #{inputfile} -i #{srt_file} -filter_complex "[0:v][1:s]overlay" #{outputfile} -y`
Run Code Online (Sandbox Code Playgroud)
我也试过:
`ffmpeg -i #{inputfile} -i #{srt_file} -c:v libx264 -preset ultrafast \
-c:s mov_text -map 0 -map 1 #{outputfile}`
Run Code Online (Sandbox Code Playgroud)
和回应:
ffmpeg version 2.5.4 Copyright (c) 2000-2015 the …Run Code Online (Sandbox Code Playgroud) 这个超级用户回答使用 ffmpeg 的 2 个视频之间的交叉淡入淡出让我到目前为止,但现在我已经尝试了很多解决方案并看到了那里的每个 SO 链接,是时候向大家寻求帮助了。
我正在尝试同时使用音频和视频对 2 个 ts 格式的视频进行交叉淡化,每个 10 秒。
步骤是:
这仅适用于视频,但是当我尝试添加音频时,我无法跳过此错误消息:
带有未连接到任何目的地的 asetpts 的过滤器实例“Parsed_asetpts_4”的类型音频的输出垫“默认”
看来我没有正确连接音频输出。我想我需要更改 [over] 行以包含音频。但是我该怎么做呢?
`ffmpeg -i vid1.ts -i vid2.ts -f lavfi -i color=black -filter_complex \
"[0:v]format=pix_fmts=yuva420p,\
fade=t=out:st=9:d=1:alpha=1,setpts=PTS-STARTPTS[v0];\
[0:a]\
afade=t=out:st=9:d=1,asetpts=PTS-STARTPTS[a0];\
[1:v]format=pix_fmts=yuva420p,\
fade=t=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+9/TB[v1];\
[1:a]\
afade=t=in:st=0:d=1,asetpts=PTS-STARTPTS+9/TB[a1];\
[a0][a1]amix=inputs=2;\
[2:v]scale=720x406,trim=duration=19[over];\
[over][v0]overlay[over1];\
[over1][v1]overlay=format=yuv420[outv]" -vcodec libx264 -y -map [outv] final.ts`
Run Code Online (Sandbox Code Playgroud)