Транспортировка потока TS через UDP из файлов .TS

Транспортировка потока TS через UDP из файлов .TS

Я хотел бы передать поток ts (файлы .ts) по протоколу UDP.

Я использовал следующий конвейер,

gst-launch-1.0 filesrc =location=a.ts ! tsparse ! rtpmp2tpay ! udpsink host="IP" port="port"

Но я получаю конец трансляции в течение нескольких секунд.

На стороне приемника я получаю только некоторые данные.

Предупреждение возникает, когда я устанавливаю do-timestamp=true для filesrc.

0:00:00.051245178  4751       0xe494a0 WARN        mpegtspacketizer mpegtspacketizer.c:1388:calculate_skew: delta - skew: 5124091:34:25.044918089 too big, reset skew

Файл TS создается путем декодирования и mpegtsmux файла yuv.

Этот TS-файл работает правильно, когда я напрямую демультиплексирую и декодирую его.

Но когда я передаю этот ts-файл через UDP, возникает эта проблема.

Как передать поток TS по UDP?

решение1

MPEG2-TS несет временные метки для декодирования и представления DTS/PTS. Очевидно, вам нужно вставить повторную штамповку временных меток в ваш конвейер.

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

может быть, кто-то сможет отредактировать этот ответ и указать правильное ключевое слово для вставки в конвейер.

Связанный контент