Я хочу транслировать прямой эфир (h264 -> фрагментированный mp4) с функциями avformat
.
Теперь в основном у меня есть рабочий пример с этим псевдо:
avformat_write_header
while (!end) {
av_read_frame
av_write_frame
}
avformat_write_tailer
I иметь в качестве выходных флагов: movflags +frag_keyframe+empty_moov+default_base_moof
.
Я отправляю вывод в видео html5, которое воспроизводится нормально и плавно. Однако я хочу транслировать его, поэтому всякий раз, когда в изображение входит новый проигрыватель, я хочу передать на него те же самые данные:
avformat_write_header
while (!end) {
av_read_frame
av_write_frame (to multiple clients)
}
avformat_write_tailer
Однако первый клиент может воспроизвести поток, а остальные не могут .
Это потому, что структура fmp4: первый клиент получает правильные ftyp
и moov
атомы, тогда как остальные клиенты - нет.
Теперь я могу взломайте мой код, чтобы предоставить более ранние атомы ftype и moov более поздним клиентам, но я думаю, что это не разумно - поправьте меня, если я ошибаюсь.
Мои вопросы:
- Как я могу попросить avformat во время потока (вычислить) и включить атомы ftyp и moov?
- Будет ли использование ftyp и moov во время потока разрушить первого клиента? (Допустимо ли в fmp4 иметь ftype и moov не один раз в начале?)
Спасибо