2016-02-23 2 views
0

Я давно застрял в чем-то, и мне было любопытно, есть ли у вас какие-либо идеи. Это мой первый раз, когда я использую плату или gstreamer или Linux вообще и впервые публикую здесь, так голый со мной.Gstreamer через UDP между двумя платами RIoT с CAM8200-U

То, что я пытаюсь выполнить, заключается в использовании gst-launch для захвата видео, его передачи и сохранения на второй плате. Затем я хочу проверить, что поток хорош, играя видеофайл на ПК.

CAM8200-U -> RIoT_1------Stream_Ethernet-----RIoT_2 - Save file on RIoT_2.

Обе платы работают Linux Yocto v3.10.17

Во-первых, я последовал за этот учебник (я использую gst-launch-0.10 не 1.0, потому что это версия на досках): http://www.z25.org/static/rd/videostreaming_intro_plab/

Отправитель:

gst-launch-0.10 videotestsrc ! jpegenc ! rtpjpegpay ! udpsink host=127.0.0.1 port=5200

Приемник:

gst-launch-0.10 udpsrc port=5200 ! application/x-rtp, encoding-name=JPEG,payload=26 ! rtpjpegdepay ! jpegdec ! autovideosink

Этот пример работает отлично на досках! На самом деле не используется камера, но все же хорошая отправная точка. Однако, если я изменю autovideosink с filesink location=xxx.format (.mp4 .mkv .avi), файл не воспроизводится.

Вопрос 1: Вы знаете, как сохранить этот поток в файле, который можно воспроизвести позже?

После поиска немного, я был в состоянии потока и сохранить videotestsrc с этими линиями:

Отправитель:

gst-launch-0.10 videotestsrc ! ffmpegcolorspace ! jpegenc ! udpsink host=192.168.1.103 port=5200

Приемник:

gst-launch-0.10 udpsrc port=5200 ! jpegdec ! ffmpegcolorspace ! avimux ! filesink location=/home/root/movie.avi

Однако изменение videotestsrc с v4l2src device=/dev/video0 дает мне пустой файл.

Вопрос 2. У вас есть идеи, почему он работает с videotestsrc, а не с камерой?

Затем я нашел этот пример, данный элементом14 на YouTube: https://www.youtube.com/watch?v=mRbckLppmKs, с помощью которого я могу получить видео с камеры и сохранить его. Это линия:

gst-launch-0.10 v4l2src device=/dev/video0 num-buffers=-1 ! 'video/x-raw-yuv,width=1024,height=768' ! queue ! ffmpegcolorspace ! vpuenc codec=0 ! matroskamux ! filesink location=output.mkv sync=false

Я попробовал несколько способов разработки этой линии на поток и сохранить его на другом конце, но все они оказались безуспешными.

Вопрос 3: Вы знаете, как правильно я могу передавать и сохранять видео с этой камеры?

Заранее благодарен!

ответ

0

Ответ на мой вопрос и ответьте Матильде:

Спасибо, Матильда! На самом деле это всегда на видео0 по какой-то причине. Моя основная проблема заключалась в том, чтобы заставить поток работать или очень подробно, как шифровать/расшифровывать/использовать правильные кепки, поэтому он работает.

Я был в состоянии сделать потоковое и экономии от RIOT к бунту со следующими параметрами:

Отправитель:

gst-launch-0.10 v4l2src device=/dev/video0 ! 'video/x-raw-yuv,width=1024,height=768' ! ffmpegcolorspace ! vpuenc codec=5 ! rtph263pay ! udpsink host=192.168.1.104 port=5200

Приемник:

gst-launch-0.10 udpsrc port=5200 ! application/x-rtp, media=video, payload=96 ! rtph263depay ! vpudec ! matroskamux ! filesink location=video3.mkv

Довольно странно было что если я использую avimux вместо matroskamux t он воспроизводит видео на 5-кратной скорости. Подумайте, почему, но на данный момент это не имеет значения. Более того, эти параметры не будут работать с RIoTboard на ПК, просто потому, что в Ubuntu нет опции vpudec (или, по крайней мере, не следует ее добавлять). Возможно, использование другого способа расшифровки H.263 будет работать.

Спасибо за помощь в любом случае!

+0

Дополнительная информация: Для воспроизведения H.264 с короткой задержкой (~ 200 мс) Sender :::: 'GST-ответно-0,10 v4l2src устройства =/Dev/video0! 'video/x-raw-yuv, width = 640, height = 480'! ffmpegcolorspace! vpuenc codec = 6! rtph264pay! udpsink хост = порт 192.168.1.103 = 5200 --gst-отлаживать = 2' \t \t \t Приемник :::: 'GST-ответно-0,10 udpsrc порт = 5200! application/x-rtp, media = video, payload = 96, encoding-name = H264! rtph264depay! vpudec low-latency = true! autovideosink --gst-debug = 2' – Bozhidar

0

Чтобы захватить камеру с помощью v4l2src, вы должны предоставить для нее правильное устройство.
Возможно, вы используете неправильное устройство здесь. CAM8200-U - это USB-камера, поэтому вряд ли будет /dev/video0

Для USB-камеры самый простой способ узнать свое устройство - отключить и снова подключить его. Недавно появившееся (обычно последнее) видеоустройство является устройством вашей камеры. Предположим, что устройство является /DEV/video10, прикажете записать файл

GST-ответно-0,10 v4l2src устройство =/DEV/video10 число-буферов = -1! 'video/x-raw-yuv, width = 1024, height = 768'! очередь ! ffmpegcolorspace! vpuenc codec = 0! matroskamux! filesink место = output.mkv

(Не забудьте проверить руководство камеры, чтобы подтвердить ли разрешение 1024x768 поддерживается)

И команда послать поток

gst-launch-0.10 v4l2src device=/dev/video10 num-buffers=-1 ! 'video/x-raw-yuv,width=1024,height=768' ! queue ! ffmpegcolorspace ! jpegenc ! udpsink host=192.168.1.103 port=5200

Смежные вопросы