LINUX.ORG.RU

GStreamer RTMP стрим, ошибка и снижение fps

 


0

1

К примеру, принимаю стрим подобной строкой:

gst-launch rtmpsrc location=адрес ! decodebin2 max-size-time=1 ! xvimagesink

Стрим принимается, всё чудесно, видео идет

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock

И тут к примеру стрим тормозит, или какое-то время данные не идут, потом стрим возобновляется, данные начинают идти и тут фпс отображения становится примерно равным 1, и в лог сыпется данное сообщение каждую секунду(в момент обновления фрейма):

WARNING: from element /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0: A lot of buffers are being dropped.
Additional debug info:
gstbasesink.c(2875): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0:
There may be a timestamping problem, or this computer is too slow.

Как видно из тела сообщения(последяя строка), что либо у вас медленный комп, либо проблема в таймстэпм. Компьютер не слоу, отметаем, видимо проблема в временных метках. Если подрубиться к трансляции заново, то всё идет нормально. Пробовал ставить свойство do-timestamp=true, чтоб вроде как метки ставились, но эффекта это не дает. Наверное можно поставить буфферизацию, тогда какие-то перебои в передаче данных оно перекроет, но это не катит, т.к. надо лайв видео.

Вообщем кто-то сталкивался с такой проблемой? Есть пути решения?



Последнее исправление: Blastbit (всего исправлений: 1)

Кажется нашел, правда вариант немного костыльный. По сути отключается синхронизация по временным меткам, для лайв видео(с камеры например) это не должно быть критичным, а вот другого плана стримы возможно будет рассинхрон.

вообщем финальная строка выглядит так

gst-launch rtmpsrc location=адрес ! decodebin2 max-size-time=1 ! xvimagesink sync=false
Blastbit
() автор топика

Версия gstreamer свежая?

В RTMP бывает такая фигня, что стрим разделён на куски - в момент смены несвязанных видеороликов как бы начинается передача нового файла, соответственно временные отметки начинаются снова с нуля. Тут для полного разбирательства стоит внимательно изучить структуру потока, может быть полезным проследить за дебаг-выводом ffmpeg, а также за траффиком с помощью ngrep, и следить за RTMP-командами.

Krieger_Od ★★
()
Ответ на: комментарий от Krieger_Od

нет не новый, гстример 0.10-2 вроде бы, но на 1.1 (собрано руками с гит оф гит репа) тоже самое, думаю там rtmp плагин один и тот же и работает одинаково. Скорее всего сервер так отдает видео, может быть метки не совсем корректно ставит. Насчет анализа трафика, да, надо проанализировать, начет команд, вроде бы всё нормально.

Blastbit
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.