2016-12-16 2 views
0

У меня есть требование, когда мне нужно кодировать источник v4l2src в H.264 при использовании контейнера Matroska. Если я .mkv файл со встроенными субтитрами легко извлечь субтитры сДобавление субтитров при кодировании H.264 в контейнер Matroska

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

Из того, что я понимаю, и предполагая, я правильно понимаю, в процессе кодирования на «subtitle_% и» подушка должна быть связана с текстовым/x-raw, используя textoverlay.

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. Каков правильный способ кодирования наложения субтитров/текста при кодировании источника в H.264 в контейнере matroska, а затем также можно извлечь его с помощью первого конвейера?

  • Sanchayan.
+0

Вы, вероятно, путаете две вещи. Первый конвейер извлекает дорожку, которая содержит ** текст ** данных с отметками времени. Это не оверлей на изображении. Textoverlay и timeoverlay делают оверлей на изображении и не добавляют никакой дорожки с текстом, который может быть извлечен позже. Что ты хочешь делать? Первый, второй или оба? – peper0

ответ

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 ! 
Смежные вопросы