2017-01-12 11 views
0

Я пытаюсь сохранить поток MJPEG с веб-камеры logitech C920 в несколько видеофайлов (matroska).Сохранение потока веб-камеры jpeg для нескольких файлов с gstreamer

У меня есть этот трубопровод: (1 мы файл каждые 6)

gst-launch-1.0 -ev v4l2src device=/dev/video0 \ 
! image/jpeg,width=1280,height=720,framerate=24/1 \ 
! matroskamux ! multifilesink next-file=max-duration max-file-duration=60000000000 location='test1-%02d.mkv' 

Он выводит несколько файлов, как и ожидался, но файлы имеют ошибки, поэтому такие инструменты, как Avidemux не могут воспроизводить их. mkvalidator сообщает эти:

WRN080: Unknown element [FF] at 293 size 88 
WRN080: Unknown element [FF] at 494 size 64 
WRN080: Unknown element [7D][01] at 566 size w98603107602 
WRN801: The segment has no SeekHead section 
WRN0B8: Track #1 is defined but has no frame 

BTW, сохранение в одном файле с помощью filesink создает файл MKV без ошибок.

Есть ли способ сохранить несколько файлов mkv правильно? Любой другой контейнер также в порядке, но я не могу перекодировать (требуется низкая загрузка процессора), и я не могу использовать raw (требуется HD с высоким fps).

Я использую GStreamer 1.8.2 на Ubuntu 16.04.1.

Спасибо.

Обновление: После ниже советы, я попытался с splitmuxsink:

gst-launch-1.0 -e v4l2src device=/dev/video1 \ 
! image/jpeg,width=1280,height=720,framerate=24/1 \ 
! splitmuxsink muxer=matroskamux location='test1-%02d.mkv' \ 
max-size-time=10000000000 

Но это не работает: файл никогда не расщепляется и продолжает расти в размерах.

ответ

0

Следующий трубопровод, кажется, работает:

gst-launch-1.0 -e v4l2src ! x264enc key-int-max=10 ! h264parse ! splitmuxsink muxer=matroskamux location='test1-%02d.mkv' max-size-time=60000000000 

multifilesink не знает ничего о формате контейнера, так что вы должны использовать splitmuxsink сделать spliting.

Вот цитата из multifilesink doc:

Это не представляется возможным использовать этот элемент, чтобы создать самостоятельно проигрываемых mp4 файлы, используйте элемент splitmuxsink для этого вместо этого.

+0

Не является ли 'x264enc ключ-int-max = 10' reencoding? Я не могу этого сделать. Кроме того, я хочу записать оригинальное видео MJPEG, используя контейнер Matroska/MP4, а не h.264. –

+0

Ах, вы можете удалить x264enc, если хотите просто разместить свой поток mjpeg в контейнере Matroska. Я просто поместил это для своей веб-камеры, у которой нет возможности mjpeg. –

+0

Извините за поздний ответ. Я пробовал без элемента 'x264enc', но он не работает. Я обновлю вопрос с проблемой. –