在对Matroska容器进行H.264编码时添加字幕

时间:2016-12-16 13:36:10

标签: gstreamer embedded-linux

我需要在使用Matroska容器时在H.264中对v4l2src源进行编码。如果我的.mkv文件带有嵌入式字幕,则很容易使用

提取字幕
gst-launch-1.0 filesrc location=test.mkv ! matroskademux ! "text/x-raw" ! filesink location=subtitles

根据我的理解并假设我理解正确,在编码过程中,“subtitle_%u”pad需要使用textoverlay链接到text / x-raw源。

gst-launch-1.0 textoverlay text="Video 1" valignment=top halignment=left font-desc="Sans, 60" ! mux.  imxv4l2src device=/dev/video0 ! timeoverlay ! videoconvert ! queue ! vpuenc_h264 ! capsfilter 
caps="video/x-h264" ! matroskamux name=mux !  filesink location=sub.mkv

我使用上面的管道,但我没有在.mkv视频中获得叠加层。在matroska容器中对H.264中的源进行编码时对字幕/文本覆盖进行编码的正确方法是什么,然后才能使用第一个管道提取它?

  • Sanchayan。

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

gst-launch-1.0 \
  filesrc location=subtitles.srt ! subparse ! kateenc category=SUB ! mux.subtitle_0 \
  imxv4l2src device=/dev/video0 ! timeoverlay ! videoconvert ! queue ! vpuenc_h264 ! \
  capsfilter caps="video/x-h264" ! matroskamux name=mux ! filesink location=sub.mkv

subtitles.srt文件可能是这样的:

1
00:00:00,500 --> 00:00:05,000
CAM 1

2
00:00:05,500 --> 00:00:10,000
That's all folks !