Я хочу транслировать необработанное видео с веб-камеры Logitech C920 и в то время как и отображение и сохранение видео в файл с помощью GStreamer 1.0.Почему я могу транслировать h264-кодированное видео с веб-камеры на экран BOTH и файл, но НЕ необработанное видео?
Это работает, если я передаю h264 закодированное видео с камеры (камера обеспечивает аппаратное кодирование h264), но это не удается, если я передаю необработанное видео с камеры. Однако, если я показываю только или сохраняю только файл, потоковое сырое видео работает.
Почему это работает с потоком видео h264, но не с необработанным видеопотоком?
H264 кодируется видеопоток с камеры на дисплей и файл (работа):
gst-launch-1.0 -v v4l2src device=/dev/video0 \
! video/x-h264,width=640,height=480,framerate=15/1 ! tee name=t \
t. ! queue ! h264parse ! avdec_h264 ! xvimagesink sync=false \
t. ! queue ! h264parse ! matroskamux \
! filesink location='h264_dual.mkv' sync=false
сырая видео поток из камеры только для отображения (работа):
gst-launch-1.0 -v v4l2src device=/dev/video0 \
! video/x-raw,format=YUY2,width=640,height=480,framerate=15/1 \
! xvimagesink sync=false
сырая видео поток из камеры к ТОЛЬКО файлу (РАБОТАМ):
gst-launch-1.0 -v v4l2src device=/dev/video0 \
! video/x-raw,format=YUY2,width=640,height=480,framerate=15/1 \
! videoconvert ! x264enc ! matroskamux \
! filesink location='raw_single.mkv' sync=false
необработанный видеопоток от камеры к экрану BOTH и f ile (FAILS):
gst-launch-1.0 -v v4l2src device=/dev/video0 \
! video/x-raw,format=YUY2,width=640,height=480,framerate=15/1 \
! tee name=t \
t. ! queue ! xvimagesink sync=false \
t. ! queue ! videoconvert ! x264enc ! h264parse ! matroskamux \
! filesink location='raw_dual.mkv' sync=false
Последняя команда (необработанное видео для отображения и файла) выходит из строя без каких-либо предупреждений или ошибок. Выход терминала gst-launch точно такой же, как при записи только в файл. Появится окно xvimage и отобразит изображение с камеры, но изображение не изменится (то есть оно заморожено). Также появляется файл с нулевым байтом.
Я пробовал несколько версий вышеупомянутых команд, но я думаю, что это минимальные команды, которые могут воспроизвести проблему.
Кто-нибудь понимает, что я делаю неправильно?
Что произойдет, если вы установили 'GST_DEBUG = 1'? (или 2 или 3, если ничего не происходит) –
Почти ничего. Сначала я попробовал эти конвейеры, используя привязки Python 3. В большинстве случаев, когда порог отладки установлен на 3 или 4, неудачный конвейер дал точно такой же результат, как и тот, который работает, где видео было сохранено только в файле. Но однажды или дважды я случайно увидел это сообщение: «приостанавливается после gst_pad_push() = unknown».Только это. – kalleknast
'задержки ... в распространении 0: 00: +00,415216281 17527 0x7fa920 INFO GST_EVENT gstevent.c: 1244: gst_event_new_latency: создание латентность события 0: 00: +00,000000000 0: 00: +00,415251642 17527 0x7fa920 INFO бен gstbin.c: 2502: gst_bin_do_latency_func: сконфигурировано латентность 0: 00: +00,000000000 0: 00: +00,469577927 17527 0xa0a0a0 INFO v4l2src gstv4l2src.c: 737: gst_v4l2src_create: синхронизации в 0: 00: +00,133333332 из ц 0: 00: 00.294658824' –
kalleknast