FFmpeg经DeckLink 4K Extreme输出SDI时传递608/708字幕问题求助
解决方案
问题核心是默认FFmpeg的DeckLink输出模块不会自动将MPEG文件内嵌的EIA-608/708字幕注入到SDI信号的VBI(垂直消隐区间)传输,因此监视器无法识别到字幕数据。
前置依赖检查
你编译FFmpeg时需要额外添加--enable-libzvbi编译参数,该依赖库负责将字幕编码为符合SDI传输标准的VBI数据,若你之前的编译未开启该参数,需要重新编译FFmpeg。
修改播放命令
使用zvbienc滤镜将字幕注入到输出视频的VBI区间,参考命令如下:
仅传输EIA-608(CC1)字幕
ffmpeg -i C:\video\RD2838_720p.mpg -filter_complex "[0:v][0:s:0]zvbienc=format=ntsc_cc:start_line=15[outv]" -map "[outv]" -map 0:a -f decklink -pix_fmt uyvy422 "DeckLink 4K Extreme"
同时传输EIA-608和EIA-708字幕
ffmpeg -i C:\video\RD2838_720p.mpg -filter_complex "[0:v][0:s:0][0:s:1]zvbienc=format=atsc:start_line=15:services=cc1+service1[outv]" -map "[outv]" -map 0:a -f decklink -pix_fmt uyvy422 "DeckLink 4K Extreme"
额外配置校验
- 确认BlackMagic Desktop Utility中DeckLink 4K Extreme的SDI输出配置已开启辅助数据/VBI数据传输选项,部分版本该选项默认关闭。
- 确认输出的分辨率、帧率与源文件完全匹配,EIA字幕对时序要求严格,帧率不匹配会导致字幕无法被识别。
- 确认JVC DT-V17G1Z监视器已开启对应字幕通道的显示(对应CC1通道)。
验证方式
你可以先将输出改为本地TS文件,验证字幕注入是否生效:
ffmpeg -i C:\video\RD2838_720p.mpg -filter_complex "[0:v][0:s:0][0:s:1]zvbienc=format=atsc:start_line=15:services=cc1+service1[outv]" -map "[outv]" -map 0:a -c:v mpeg2video -c:a copy test.ts
用MediaInfo查看生成的test.ts文件的VBI字幕信息,确认正常后再输出到DeckLink设备。
内容的提问来源于stack exchange,提问作者asperi
相关产品推荐
相关产品推荐

