Преобразовать H.264 Приложение B в MPEG-TS
-
21-12-2019 - |
Вопрос
Так ...
У меня есть видео данные H.264, захваченные через RTSP в локальном файле, и я пытаюсь воспроизвести видео в приложении Java FX. Чтобы сделать это, мне нужно использовать HTTP в прямом эфире.
У меня успешно прототировали архитектуру java fx, которая может воспроизводить видео через HLS с локальным сервером, используя локальную папку, содержащую файл .m3u8 (индекс HLS) и коллекцию файлов .ts (MPEG-TS). Последняя часть для меня - заменить файлы .ts с файлами .264 / .h264 и на локальном сервере, выполните преобразование / упаковку данных H.264 приложения B в MPEG-TS.
У меня проблемы с выяснением того, что требуется, чтобы получить H.264 Приложение B в MPEG-TS. Я нашел следующую информацию ...
"Приложение B обычно используется в живых и потоковых форматах, таких как Транспортные потоки ... »
szatmary.org/blog/25
"Приложение b из документа указывает один такой формат, который обертывает NAL Единицы в формате, напоминающем традиционное элементарное видео MPEG поток, что делает его подходящим для использования с такими контейнерами, как MPEG PS / TS не может предоставить требуемое обрамление ... »
wiki.multimedia.cx/?Title=H.264
"java fx поддерживает ряд различных типов носителей. Тип носителя считается сочетанием формата контейнера и одного или нескольких кодировки. В некоторых случаях формат контейнера может быть просто элементарный поток, содержащий закодированные данные. "
docs.orcle.com/javafx/2/api/javafx/scene/media/package-summary.html
"Используйте атрибут кодеков тега Ext-X-Stream-Inf. Когда это Присутствует атрибут, он должен включать все кодеки и необходимые профили играть в поток ... "
Developer.apple.com/Library/ios/documentation/networkingInternet/Coneptual/streamingMediaGuide/FREQUENTYSHEMEDEMEDIONS/FREQUOADESHEVESESTOVES.HTML
Похоже, мне не хватает что-то простое вокруг элементарных и транспортных потоков. Я использовал FFMPEG для преобразования моего файла H.264 в файл TS и попытаться понять различия. У меня есть представление о приближенных формах формата, но мне все еще не хватает деталей, чтобы сделать это. У кого-нибудь есть ссылка демонстрирует это или знает что-то простое о том, как служить H.264 Приложение B Данные над MPEG-TS?
Я не хочу использовать инструмент, мне нужно иметь пользовательский формат файла локально, где я анализируют данные H.264 B, и выполните изменение формата в памяти, на лету. Я знаю, что способ использовать FFMPEG с трубами, чтобы выполнить это, но я не хочу иметь никаких зависимостей, и производительность важно.
Решение
Это не изменение формата.Это контейнер.Нет необходимости разбирать приложение B, чтобы написать его в файл TS.TS обертывает PES, которые обернуты приложение B поток.Формат MPEGTS довольно сложный, особенно без сторонней библиотеки.Код TS, который я писал, и использование на работе составляет около 1000 строк C ++.
Чтобы написать код TS, начните с попыток читать файл TS с помощью шестнадцатеричного редактора и ссылаться на документацию Wikipedia.Книга Видео Demystified также имеет довольно хорошую документацию.