是否可以使用 ffmpeg 对 subs 进行硬编码?通过硬编码,我的意思是将字幕作为图片叠加在视频之上,并且无法删除,因为它们将成为视频的一部分。我尝试将副标题转换为 .ass 然后尝试对其进行编码,但 ffmpeg 不执行任何操作,并返回相同的文件。我使用 VLC 对它们进行编码,但它只是将它们嵌入到视频文件本身中,并不包括它们作为覆盖在视频上的直接图片。我的最终结果应该是这样的:
创建fonts.conf,然后重试:
Z:\New folder>ffmpeg -i input.wmv -vf "subtitle=sub.srt" output.wmv
ffmpeg version N-69247-g85d7e02 Copyright (c) 2000-2015 the FFmpeg developers
built on Jan 25 2015 02:18:48 with gcc 4.9.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r
libavutil 54. 17.100 / 54. 17.100
libavcodec 56. 20.100 / 56. 20.100
libavformat 56. 19.100 / 56. 19.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 8.101 / 5. 8.101
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, asf, from 'input.wmv':
Metadata:
major_brand : isom
minor_version : 1
compatible_brands: isomavc1
encoder : Lavf56.15.101
PRIVATE/TotalBitrate: 628000
WM/VideoHeight : 240
WM/VideoWidth : 320
WM/VideoFrameRate: 0
title : input
Duration: 01:47:53.77, start: 0.000000, bitrate: 656 kb/s
Stream #0:0: Video: wmv2 (WMV2 / 0x32564D57), yuv420p, 320x240, SAR 120:67 DAR 160:67, 25 fps, 25 tbr, 1k tbn, 1k tbc
Stream #0:1: Audio: wmav2 (a[1][0][0] / 0x0161), 44100 Hz, 2 channels, fltp, 128 kb/s
[AVFilterGraph @ 0000000002c5b4a0] No such filter: 'subtitle'
Error opening filters!
我"subtitle=sub.srt"用subtitle="sub.srt"and替换subtitle=sub.srt并得到相同的结果。
我将副标题转换为 .ass: ffmpeg -i sub.srt sub.ass
然后我使用-vf ass=sub.ass了视频编码,但没有字幕。
我粘贴了 fonts.conf 中给出的完全相同的代码。
另外,如何选择字体?我应该使用绘图文本吗?
slh*_*hck 11
[AVFilterGraph @ 0000000002c5b4a0] No such filter: 'subtitle'
Error opening filters!
Run Code Online (Sandbox Code Playgroud)
过滤器使用. 此外,您的 ffmpeg 版本不是用 编译的,因此它将无法硬编码 subs。subtitless--enable-libass
一旦你有一个启用了 libass 的版本(例如通过自己编译),试试这个:
ffmpeg -i input.wmv -vf "subtitles=sub.srt" \
-c:v libx264 -crf 20 \
-c:a aac -strict experimental -b:a 192k
output.mp4
Run Code Online (Sandbox Code Playgroud)
但请注意,我用 H.264 和 AAC 替换了 WMV/WMA 输出。ffmpeg 没有用于 WMV 最新版本的编码器,因此您的输出看起来会很糟糕。而且由于您对字幕进行了硬编码,因此无论如何您都必须重新编码视频。
我已经成功测试了这个命令:
ffmpeg -i input.mp4 -vf "subtitles=subtitle.srt" output.mp4
Run Code Online (Sandbox Code Playgroud)
注意:如果输出显示有关No usable fontconfig configuration file found, using fallback,则必须在 ffmpeg 的 bin 文件夹中创建一个新文件夹fonts,该文件夹以( fonts.conf) 中的文件命名,该文件指定 ffmpeg 必须在何处查找字体。
我已经使用了这个文件来让它工作(在 Windows 上测试过):
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- /etc/fonts/fonts.conf file to configure system font access -->
<fontconfig>
<!-- Font directory list -->
<dir>./</dir>
<dir>../fonts</dir>
<dir>./fonts</dir>
<dir>~/.fonts</dir>
<dir>WINDOWSFONTDIR</dir>
<!--
Accept deprecated 'mono' alias, replacing it with 'monospace'
-->
<match target="pattern">
<test qual="any" name="family">
<string>mono</string>
</test>
<edit name="family" mode="assign">
<string>monospace</string>
</edit>
</match>
<!--
Accept alternate 'sans serif' spelling, replacing it with 'sans-serif'
-->
<match target="pattern">
<test qual="any" name="family">
<string>sans serif</string>
</test>
<edit name="family" mode="assign">
<string>sans-serif</string>
</edit>
</match>
<!--
Accept deprecated 'sans' alias, replacing it with 'sans-serif'
-->
<match target="pattern">
<test qual="any" name="family">
<string>sans</string>
</test>
<edit name="family" mode="assign">
<string>sans-serif</string>
</edit>
</match>
<!--
Load local system customization file
-->
<include ignore_missing="yes">conf.d</include>
<!-- Font cache directory list -->
<cachedir>WINDOWSTEMPDIR_FONTCONFIG_CACHE</cachedir>
<cachedir>~/.fontconfig</cachedir>
<config>
<!--
These are the default Unicode chars that are expected to be blank
in fonts. All other blank chars are assumed to be broken and
won't appear in the resulting charsets
-->
<blank>
<int>0x0020</int> <!-- SPACE -->
<int>0x00A0</int> <!-- NO-BREAK SPACE -->
<int>0x00AD</int> <!-- SOFT HYPHEN -->
<int>0x034F</int> <!-- COMBINING GRAPHEME JOINER -->
<int>0x0600</int> <!-- ARABIC NUMBER SIGN -->
<int>0x0601</int> <!-- ARABIC SIGN SANAH -->
<int>0x0602</int> <!-- ARABIC FOOTNOTE MARKER -->
<int>0x0603</int> <!-- ARABIC SIGN SAFHA -->
<int>0x06DD</int> <!-- ARABIC END OF AYAH -->
<int>0x070F</int> <!-- SYRIAC ABBREVIATION MARK -->
<int>0x115F</int> <!-- HANGUL CHOSEONG FILLER -->
<int>0x1160</int> <!-- HANGUL JUNGSEONG FILLER -->
<int>0x1680</int> <!-- OGHAM SPACE MARK -->
<int>0x17B4</int> <!-- KHMER VOWEL INHERENT AQ -->
<int>0x17B5</int> <!-- KHMER VOWEL INHERENT AA -->
<int>0x180E</int> <!-- MONGOLIAN VOWEL SEPARATOR -->
<int>0x2000</int> <!-- EN QUAD -->
<int>0x2001</int> <!-- EM QUAD -->
<int>0x2002</int> <!-- EN SPACE -->
<int>0x2003</int> <!-- EM SPACE -->
<int>0x2004</int> <!-- THREE-PER-EM SPACE -->
<int>0x2005</int> <!-- FOUR-PER-EM SPACE -->
<int>0x2006</int> <!-- SIX-PER-EM SPACE -->
<int>0x2007</int> <!-- FIGURE SPACE -->
<int>0x2008</int> <!-- PUNCTUATION SPACE -->
<int>0x2009</int> <!-- THIN SPACE -->
<int>0x200A</int> <!-- HAIR SPACE -->
<int>0x200B</int> <!-- ZERO WIDTH SPACE -->
<int>0x200C</int> <!-- ZERO WIDTH NON-JOINER -->
<int>0x200D</int> <!-- ZERO WIDTH JOINER -->
<int>0x200E</int> <!-- LEFT-TO-RIGHT MARK -->
<int>0x200F</int> <!-- RIGHT-TO-LEFT MARK -->
<int>0x2028</int> <!-- LINE SEPARATOR -->
<int>0x2029</int> <!-- PARAGRAPH SEPARATOR -->
<int>0x202A</int> <!-- LEFT-TO-RIGHT EMBEDDING -->
<int>0x202B</int> <!-- RIGHT-TO-LEFT EMBEDDING -->
<int>0x202C</int> <!-- POP DIRECTIONAL FORMATTING -->
<int>0x202D</int> <!-- LEFT-TO-RIGHT OVERRIDE -->
<int>0x202E</int> <!-- RIGHT-TO-LEFT OVERRIDE -->
<int>0x202F</int> <!-- NARROW NO-BREAK SPACE -->
<int>0x205F</int> <!-- MEDIUM MATHEMATICAL SPACE -->
<int>0x2060</int> <!-- WORD JOINER -->
<int>0x2061</int> <!-- FUNCTION APPLICATION -->
<int>0x2062</int> <!-- INVISIBLE TIMES -->
<int>0x2063</int> <!-- INVISIBLE SEPARATOR -->
<int>0x206A</int> <!-- INHIBIT SYMMETRIC SWAPPING -->
<int>0x206B</int> <!-- ACTIVATE SYMMETRIC SWAPPING -->
<int>0x206C</int> <!-- INHIBIT ARABIC FORM SHAPING -->
<int>0x206D</int> <!-- ACTIVATE ARABIC FORM SHAPING -->
<int>0x206E</int> <!-- NATIONAL DIGIT SHAPES -->
<int>0x206F</int> <!-- NOMINAL DIGIT SHAPES -->
<int>0x2800</int> <!-- BRAILLE PATTERN BLANK -->
<int>0x3000</int> <!-- IDEOGRAPHIC SPACE -->
<int>0x3164</int> <!-- HANGUL FILLER -->
<int>0xFEFF</int> <!-- ZERO WIDTH NO-BREAK SPACE -->
<int>0xFFA0</int> <!-- HALFWIDTH HANGUL FILLER -->
<int>0xFFF9</int> <!-- INTERLINEAR ANNOTATION ANCHOR -->
<int>0xFFFA</int> <!-- INTERLINEAR ANNOTATION SEPARATOR -->
<int>0xFFFB</int> <!-- INTERLINEAR ANNOTATION TERMINATOR -->
</blank>
<!--
Rescan configuration every 30 seconds when FcFontSetList is called
-->
<rescan>
<int>30</int>
</rescan>
</config>
</fontconfig>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31948 次 |
| 最近记录: |