
Я хотел бы передать поток 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 годами не учитывал временные метки и научился этому только в последних выпусках).
может быть, кто-то сможет отредактировать этот ответ и указать правильное ключевое слово для вставки в конвейер.