Записанный HLS поток .ts файл всегда показывает Ошибку повреждения пакета (stream = 0, dts = 51908280) при воспроизведении в ffplay.

Вопрос или проблема

Я записываю живые трансляции SOOPLive(AfreecaTV).

Они все используют протокол HLS. Я пытаюсь использовать StreamLink и N_m3u8DL-RE для загрузки потока как .ts файл, но ffplay всегда показывает много ошибок при воспроизведении этих .ts файлов.

[mpegts @ 0000019db9106500] Ошибка пакета (поток = 0, dts = 49208280).
[mpegts @ 0000019db9106500] Ошибка пакета (поток = 0, dts = 49388370).
[mpegts @ 0000019db9106500] Ошибка пакета (поток = 0, dts = 49568460).
[mpegts @ 0000019db9106500] Ошибка пакета (поток = 0, dts = 49748820).
[mpegts @ 0000019db9106500] Ошибка пакета (поток = 0, dts = 49928730).
[mpegts @ 0000019db9106500] Ошибка пакета (поток = 0, dts = 50108640).
[mpegts @ 0000019db9106500] Ошибка пакета (поток = 0, dts = 50288640).
[mpegts @ 0000019db9106500] Ошибка пакета (поток = 0, dts = 50468280).
[mpegts @ 0000019db9106500] Ошибка пакета (поток = 0, dts = 50648280).
[mpegts @ 0000019db9106500] Ошибка пакета (поток = 0, dts = 50828820).

Но видео и аудио кажутся нормальными, и проблем с перемоткой тоже нет.

Для меня это хорошее видео, не понимаю, почему ffplay продолжает сообщать об этих ошибках.

Если это действительно ошибка, как я могу её исправить?

Вот файл:https://www.mediafire.com/file/ef0z1528dcg07j9/sample3.rar/file

Это похоже на типичные ошибки счетчика непрерывности. CC – это грубая мера для обнаружения пакетов, находящихся не в порядке или отсутствующих.

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

Ответ или решение

Запись и воспроизведение потоков HLS может быть сложной задачей из-за специфики способа передачи данных. Ваш случай, когда ffplay показывает сообщения об ошибке "Packet corrupt" при воспроизведении .ts файлов, вероятно связан с проблемами несовпадения пакетов или неправильной последовательностью Continuity Counter (CC).

Проблема "Packet corrupt" в HLS потоках

Сообщения об ошибке "Packet corrupt" указывают на проблему с целостностью или порядком пакетов. Несмотря на это, поскольку ваше видео, кажется, воспроизводится без значительных проблем, такие ошибки связаны скорее с разницей в обработке данных между инструментами записи и воспроизведения потоков.

Возможные причины и решения

  1. Отсутствие флага дискретности: Как вы точно подметили, "Continuity Counter" — это простой механизм для выявления потерь или неправильного порядка пакетов. Часто, при записи отдельных TS сегментов с помощью разных мапперов, отсутствует начальный флаг дискретности, что может привести к этим ошибкам. Проверка файла на наличие и корректность этого флага может быть первым шагом.

  2. Служебные данные потока: Некоторые серверы и стриминговые сервисы включают дополнительные данные в поток, которые могут не совпадать с обработкой этих данных ffmpeg. Поскольку ffplay основан на ffmpeg, это может вызывать ошибки даже при нормальной видеозаписи. Решение: при необходимости отключите ненужные данные или трансофрмируйте TS файлы при помощи ffmpeg, чтобы преодолеть этот этап.

  3. Решение с ffmpeg: Перекодируйте файлы для исправления или удаления ошибочных пакетов. Попробуйте использовать следующую команду:

    ffmpeg -i input.ts -c copy -fflags +genpts output.ts

    Этот подход создаёт временные метки GOTP (General Overriding Time PTS) и регулирует поток для более причёсанного воспроизведения.

  4. Используйте другие медиа проигрыватели: Если проблема продолжается только в ffplay, возможно, использование других проигрывателей, таких как VLC, решит вашу проблему.

Вывод

Хотя подобные ошибки могут быть неприятными, они часто не влияют на фактическое воспроизведение содержимого. Если ваша видеозапись в порядке и без проблем воспроизводится в других проигрывателях, возможно, нет необходимости в дальнейшем беспокойстве. Важно помнить, что подобные сложности могут случаться с всеми системами записи потоков, так как они зависят от метода передачи данных, используемого службами потоковой передачи.

Надеюсь, это объяснение поможет вам разобраться с возникшими трудностями и предложит способы их решения.

Оцените материал
Добавить комментарий

Капча загружается...