Вопрос или проблема
У меня есть .ts файл, который я хочу отправить в транскодер для потоковой передачи в реальном времени. В нем содержатся видео, аудио и SCTE потоки данных. Когда я загружаю его в транскодер как srt поток, SCTE не передается. Команда:
ffmpeg -i input.ts -map 0:v:0 -codec:v copy -streamid 0:0x1e1 -map 0:a:0 -codec:a copy -streamid 1:0x1e2 -map 0:d:0 codec:d:0 -streamid 2:0x1f4 -tag:d:0 31 -f mpegts "srt://address:2088"
Передача данных происходит некоторое время, затем выдается ошибка:
Stream 2, codec scte_35, is mixed as a private data stream and may not be recognized upon reading
Я не уверен, правильна ли эта команда. Я нашел её при поиске в Google. Может кто-нибудь помочь
Ответ или решение
Если у вас возникли проблемы с SCTE-интеграцией при использовании FFmpeg для трансляции .ts-файла, который содержит видео, аудиопотоки и данные SCTE, и при этом SCTE данные не передаются корректно через SRT, то вероятно, проблема связана с конфигурацией FFmpeg. Давайте разберем эту проблему подробнее и рассмотрим возможные решения.
Проблема
Вы используете команду FFmpeg для потоковой передачи видео и аудио через SRT, но сталкиваетесь с ошибкой, которая указывает, что поток с кодеком SCTE-35 смешан как поток частных данных, и он может не быть распознан при чтении. Это значит, что FFmpeg не может правильно обработать данные SCTE-35, и они не транслируются вместе с видео и аудио.
Разбор команды FFmpeg
Вашей командой является:
ffmpeg -i input.ts -map 0:v:0 -codec:v copy -streamid 0:0x1e1 -map 0:a:0 -codec:a copy -streamid 1:0x1e2 -map 0:d:0 codec:d:0 -streamid 2:0x1f4 -tag:d:0 31 -f mpegts "srt://address:2088"
Возможные проблемы и решения
-
Потоковые идентификаторы (stream ids):
Параметр-streamid
задает идентификаторы потоков для видео, аудио и данных. Убедитесь, что они правильно соответствуют спецификации вашего содержимого. -
Обработка SCTE-35 данных:
Кодекscte_35
обычно обрабатывается как поток частных данных, что может потребовать специального тега для корректной интерпретации данных в медиаконтейнере MPEG-TS. Проверьте, что используются правильные теги и конфигурация. -
Параметры FFmpeg для SCTE-35:
Убедитесь, что вы используете правильные теги для обработки SCTE-35. Параметр-tag:d:0 31
указывает, что данные обрабатываются как частные, но это может не быть допустимым для данного случая использования. Попробуйте удалить или изменить этот параметр. -
Обновление и конфигурация FFmpeg:
Проверьте, что ваша версия FFmpeg обновлена и поддерживает SCTE-35, так как более старые версии могут не иметь полной поддержки. Если проблема сохраняется, попробуйте другую версию или проверьте документацию для более специфических ключей конфигурации. -
Логирование и отладка:
Используйте опцию-loglevel debug
у FFmpeg для получения более подробной информации о процессе и потенциальных ошибках. Это поможет вам определить, где именно возникает ошибка.
Заключение
Правильная конфигурация FFmpeg и тщательная проверка параметров трансляции помогут вам правильно инкапсулировать и передать SCTE-35 данные. Проверьте каждую составляющую вашей команды, уточните документацию FFmpeg и применяйте инструмент для отладки, чтобы выявить и решить проблемы. В случае продолжения трудностей, можно обратиться к сообществам по FFmpeg для более специфической помощи с их поддержкой.