gpt4 book ai didi

c - ffmpeg/libavfilter 中的字幕

转载 作者:行者123 更新时间:2023-12-04 22:45:50 26 4
gpt4 key购买 nike

我有一个 C 程序可以使用 libav/ffmpeg 库读取视频/音频并对其进行解码。

我正在使用一些过滤器,大多数都工作正常。我可以绘制文本、叠加 Logo 、翻转和反转视频颜色。但是,我在叠加字幕时遇到了大问题。

我的过滤器非常简单。

const char *vfilter_descr = "[in]subtitles=subs.srt[out]";

在控制台上我得到这个:

[Parsed_subtitles_0 @ 0x7fe76c703240] Shaper: FriBidi 0.19.7 (SIMPLE) HarfBuzz-ng 2.4.0 (COMPLEX)
[Parsed_subtitles_0 @ 0x7fe76c703240] Using font provider coretext
[Parsed_subtitles_0 @ 0x7fe76c703240] fontselect: (Arial, 400, 0) -> /Library/Fonts/Microsoft/Arial.ttf, -1, ArialMT
[Parsed_subtitles_0 @ 0x7fe76c703240] fontselect: (Arial, 400, 100) -> /Library/Fonts/Microsoft/Arial Italic.ttf, -1, Arial-ItalicMT

...这在某种程度上证实了字幕正在加载,但我不确定为什么要加载两种字体?

但是,它们根本没有显示 - 几乎就好像它们从未加载过一样。我尝试了几个不同的文件,包括 ASS 文件,但没有成功。

ffmpeg版本是最新的。

$ ffmpeg -v
ffmpeg version 4.1.3 Copyright (c) 2000-2019 the FFmpeg developers
built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1.3_1 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/adoptopenjdk-11.0.2.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/adoptopenjdk-11.0.2.jdk/Contents/Home/include/darwin' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-videotoolbox --disable-libjack --disable-indev=jack --enable-libaom --enable-libsoxr
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100

有什么想法吗?

最佳答案

我从来没有设法让它工作。最后,我使用了一个单独的函数从流中读取字幕并将它们覆盖在 ffmpeg 过滤器之外的视频上。

关于c - ffmpeg/libavfilter 中的字幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56064213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com