ffmpeg -i input.avi -vf "[in]crop=in_w:in_h-20:0:0 [crop]; [crop]scale=320:240 [scale];[scale]subtitles=srt.srt" -aspect 16:9 -vcodec libx264 -crf 23 oq.mp4
我们该如何设置字幕的字号和颜色?
ffmpeg -i input.avi -vf "[in]crop=in_w:in_h-20:0:0 [crop]; [crop]scale=320:240 [scale];[scale]subtitles=srt.srt" -aspect 16:9 -vcodec libx264 -crf 23 oq.mp4
我们该如何设置字幕的字号和颜色?
使用字幕有两种方法:硬字幕和软字幕。
可以使用subtitles
视频过滤器来进行硬字幕或者焊接字幕,这需要重新编码,将字幕变为视频的一部分。
force_style
选项如果要自定义字幕,您可以在 subtitles
过滤器中使用 force_style
选项。例如,使用字幕文件 subs.srt
,将字体大小设置为24,红色字体颜色。
ffmpeg -i video.mp4 -vf "subtitles=subs.srt:force_style='Fontsize=24,PrimaryColour=&H0000ff&'" -c:a copy output.mp4
force_style
使用 SubStation Alpha (ASS) 格式的样式字段。
PrimaryColour
以蓝绿红的顺序用十六进制表示。请注意,这与HTML颜色代码的顺序相反。颜色代码必须始终以&H
开始和以&
结束。
或者,您可以使用Aegisub创建并美化字幕。将其保存为SubStation Alpha (ASS) 格式,因为它支持字体大小、字体颜色、阴影、轮廓、缩放、角度等等。
软字幕是文件内的附加流。播放器仅在播放时呈现它们。相比硬字幕,软字幕更灵活,因为:
当然,如果设备或播放器无法使用软字幕,有时需要硬字幕。
要使用流复制模式将字幕混合到视频文件中:
ffmpeg -i input.mkv -i subtitles.ass -codec copy -map 0 -map 1 output.mkv
没有进行重新编码,因此整个过程将非常快速,并且质量和格式将被保留。
使用SubStation Alpha(ASS)字幕将允许您按照自己的喜好格式化字幕。这些可以使用Aegisub创建/转换。
从文档中,您可以使用srt字幕文件,并通过放置ASS样式格式KEY=VALUE
对以,
分隔来更改字体大小。 因此,
ffmpeg -i input.mp4 -vf subtitles=sub.srt:force_style='FontName=DejaVu Serif,FontSize=24' -vcodec libx264 -acodec copy -q:v 0 -q:a 0 output.mp4
将使用DejaVu字体和字号24添加字幕,同时保持视频质量。 我已经尝试过,它有效。
FFmpeg有时候很好用,但有些视频会变得模糊。我建议与VLC播放器进行比较。
媒体
>转换/保存
我发现默认设置的iPad HD/iPhone/PSP视频
档案非常好用。或者我可以将比特率从700kb/s
降低到350kb/s
以减小文件大小。