Вопрос или проблема
Я записываю живые трансляции 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" указывают на проблему с целостностью или порядком пакетов. Несмотря на это, поскольку ваше видео, кажется, воспроизводится без значительных проблем, такие ошибки связаны скорее с разницей в обработке данных между инструментами записи и воспроизведения потоков.
Возможные причины и решения
-
Отсутствие флага дискретности: Как вы точно подметили, "Continuity Counter" — это простой механизм для выявления потерь или неправильного порядка пакетов. Часто, при записи отдельных TS сегментов с помощью разных мапперов, отсутствует начальный флаг дискретности, что может привести к этим ошибкам. Проверка файла на наличие и корректность этого флага может быть первым шагом.
-
Служебные данные потока: Некоторые серверы и стриминговые сервисы включают дополнительные данные в поток, которые могут не совпадать с обработкой этих данных ffmpeg. Поскольку ffplay основан на ffmpeg, это может вызывать ошибки даже при нормальной видеозаписи. Решение: при необходимости отключите ненужные данные или трансофрмируйте TS файлы при помощи ffmpeg, чтобы преодолеть этот этап.
-
Решение с ffmpeg: Перекодируйте файлы для исправления или удаления ошибочных пакетов. Попробуйте использовать следующую команду:
ffmpeg -i input.ts -c copy -fflags +genpts output.ts
Этот подход создаёт временные метки GOTP (General Overriding Time PTS) и регулирует поток для более причёсанного воспроизведения.
-
Используйте другие медиа проигрыватели: Если проблема продолжается только в ffplay, возможно, использование других проигрывателей, таких как VLC, решит вашу проблему.
Вывод
Хотя подобные ошибки могут быть неприятными, они часто не влияют на фактическое воспроизведение содержимого. Если ваша видеозапись в порядке и без проблем воспроизводится в других проигрывателях, возможно, нет необходимости в дальнейшем беспокойстве. Важно помнить, что подобные сложности могут случаться с всеми системами записи потоков, так как они зависят от метода передачи данных, используемого службами потоковой передачи.
Надеюсь, это объяснение поможет вам разобраться с возникшими трудностями и предложит способы их решения.