Декодировать поток H264 по сети OpenH264

У меня проблема с библиотекой OpenH264 https://github.com/cisco/openh264

Я хотел бы декодировать поток, отправленный моей камерой raspberry pi, по сети в моей программе C ++ / Qt, которая будет отображать изображение.

Я использую gstreamer на Raspberry Side для отправки потока с помощью этой командной строки:

raspivid -n -t 0 -w 1280 -h 720 -fps 25 -b 2500000 -o - | gst-launch-1.0 fdsrc ! h264parse ! rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink host=my_ip port=5000

На рабочем столе, когда я выполняю:

gst-launch-1.0 -v tcpclientsrc host=raspberry_ip port=5000 ! gdpdepay ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=false

Я могу видеть поток камеры правильно.

Хорошо, теперь. Я хотел бы сделать свой собственный декодер, используя QT / C ++ & OpenH264 декодер.

Вот мой код:

void Manager::initDecoder(int width, int height) {
long ret = WelsCreateDecoder(&(this->decoder));
if (ret == 0) {
this->decodingParam = { 0 };
this->decodingParam.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_DEFAULT;
this->decoder->Initialize(&decodingParam);
this->bufferInfo = { 0 };

this->yuvData = new uint8_t*[3];
this->yuvData[0] = new uint8_t[width * height];
this->yuvData[1] = new uint8_t[width * height / 4];
this->yuvData[2] = new uint8_t[width * height / 4];

this->tcpSocket->connectToHost("ip_raspberry", 5000);
}
}

bool Manager::decodeStream(const unsigned char *rawEncodedData, const int rawEncodedDataLength, uint8_t **yuvData) {
DECODING_STATE err = decoder->DecodeFrame2(rawEncodedData, rawEncodedDataLength, yuvData, &bufferInfo);
if (err != 0) {
qDebug() << "H264 decoding failed. Error code: " << err << ".";
return false;
}
qDebug() << "----------- Succeedeeed --------------";
return true;
}

Когда я получаю новые данные, я звоню decodeStream но эта функция возвращает ошибку:

 dsBitstreamError      = 0x04,   ///< error bitstreams(maybe broken internal frame) the decoder cared
dsNoParamSets         = 0x10,   ///< no parameter set NALs involved

Я не знаю, что я делаю не так … Должен ли я изменить некоторые параметры при отправке малины?

Спасибо за помощь.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]