Вопрос

Так ...

У меня есть видео данные 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 также имеет довольно хорошую документацию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top