Для декодера Theora требуется дополнительный параметр конфигурации.Вот выдержка из спецификации:
1002 *
Theora делает то же самое спорное дизайнерское решение, что Vorbis сделал включать всю модель вероятности для коэффициентов DCT и все квантование параметров тования в заголовках битового потока.Это часто несколько сотен полей.Поэтому невозможно декодировать любой кадр в потоке без предварительной выборки информации о кодеке и заголовков настройки кодека. Вы можете увидеть эти параметры конфигурации как зацикленную строку в кодировке base64 в подробном описании gst-launchвывод:
/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)THEORA, sampling=(string)YCbCr-4:2:0, width=(string)640, height=(string)480, configuration=(string)\"AAAAAbkkHgqZ...gA\\=\\=\", delivery-method=(string)inline, payload=(int)96, ssrc=(guint)109069492, clock-base=(guint)1126428223, seqnum-base=(guint)23181
Вам необходимо скопировать эту строку и вставить ее в принимающий скрипт gst-launch:
$ gst-launch \
udpsrc \
port=5000 \
caps="video/x-raw-yuv \
,format=I420 \
,framerate=30/1 \
,width=640,height=480 \
,interlaced=false \
,configuration=(string)\"AAAAAbkkHgqZ...gA\\=\\=\"" \
! rtptheoradepay \
...
Если вы не измените параметры кодирования видео (размер, битрейти т. д.) эта строка останется прежней.Таким образом, вы можете просто жестко закодировать его.