Воспроизведение потока mpeg dash без сегмента инициализации

Я пытаюсь создать поток тире, воспроизводимый в проигрывателе тире. У меня есть одно видео в формате mp4, которое я разбил на несколько видео примерно по 10 секунд каждое. Теперь я хотел бы воспроизвести это видео в проигрывателе, где каждый сегмент самоинициализируется. Как я мог добиться этого, не создавая сегмент инициализации.


person Yoganand Anandaraju    schedule 29.12.2014    source источник
comment
Как вы их «разобрали»?   -  person szatmary    schedule 29.12.2014
comment
Если ваши сегменты воспроизводятся сами по себе, то это не сегменты, а просто небольшие файлы mp4. Существует определенный формат, которому должны следовать видео DASH и сегменты. Если вы можете предоставить информацию о том, какие инструменты вы используете для создания этих видео, я мог бы дать ответ о том, как правильно создать видео DASH с помощью этих инструментов.   -  person Sander    schedule 02.01.2015
comment
Вы правы, у меня есть маленькие файлы mp4. Я преобразовал эти файлы в сегменты тире, используя bento4. Теперь проблема, с которой я столкнулся, заключается в создании одного файла инициализации для всех объединенных файлов. Объединение всех этих файлов в один файл, а затем создание потока dash — не вариант.   -  person Yoganand Anandaraju    schedule 02.01.2015


Ответы (2)


Судя по спецификации, можно. Это цитата из спецификации MPEG-DASH ISO/IEC 23009:

Представление состоит из одного или нескольких сегментов. Каждое Представление либо должно содержать Сегмент Инициализации, либо каждый Сегмент Медиа в Представлении должен быть самоинициализирующимся, т. е. сам Сегмент Медиа соответствует типу мультимедиа, указанному в атрибуте @mimeType для этого Представления.

Когда Представление не является зависимым Представлением, т. е. атрибут @dependencyId отсутствует, тогда объединение Сегмента Инициализации, если он присутствует, и всех последовательных Сегментов Медиа в одном Представлении должно представлять соответствующую последовательность Сегментов, как определено в 4.5.3, в соответствии с тип носителя, указанный в атрибуте @mimeType для этого представления

Кроме того, элемент Initialization не является обязательным (0...1).

person inbaly    schedule 01.04.2015

Это невозможно. Сегмент инициализации содержит информацию, необходимую для инициализации декодеров. Например, NalLengthSize в случае кодека AVC или Audio Specific Config для AAC.

person szatmary    schedule 29.12.2014
comment
Нет ли концепции самоинициализирующегося сегмента? Все мои сегменты воспроизводятся сами по себе. - person Yoganand Anandaraju; 31.12.2014
comment
Как вы создавали сегменты? - person szatmary; 31.12.2014
comment
Я создал небольшие файлы mp4, используя ffmpeg. Эти файлы вместе образуют одно видео. Я хотел воспроизвести эти небольшие файлы, такие как потоки тире, без сегмента инициализации. - person Yoganand Anandaraju; 02.01.2015
comment
Это именно то, что я думал. сегмент mp4 состоит из moov и mdat. сегмент тире (обычно m4s) — это moof, sidx и mdat. Это разные форматы. Вы не можете использовать один как другой. - person szatmary; 02.01.2015
comment
Спасибо szatmary. Теперь мне удалось создать правильные фрагменты тире, используя bento4 для каждого сегмента. Я хотел бы создать один сегмент инициализации для всех объединенных фрагментов. Возможно ли это сделать? - person Yoganand Anandaraju; 05.01.2015
comment
@YoganandAnandaraju, да, вы можете создать один файл инициализации для всех своих сегментов, но убедитесь, что информация о кодеке в файлах инициализации этого сегмента точно такая же, как информация о кодеке ваших фрагментов. Как и SPS, и PPS при инициализации должны быть такими же, как параметры кодека ваших фрагментов. - person Gilead Silvanas; 01.04.2015