Transmisja na żywo przez MP4

Pracuję nad usługą telewizyjną online. Jednym z celów jest odtwarzanie wideo bez żadnych dodatkowych wtyczek do przeglądarki (z wyjątkiem Flasha).

Postanowiłem użyć MP4, ponieważ jest on obsługiwany przez większość przeglądarek HTML5 i Flash (dla awaryjnych). Filmy są transkodowane z ASF na serwerze przez FFMpeg.

Jednak odkryłem, że MP4 nie może być transmitowany na żywo, ponieważ ma atom moov dla metadanych, który musi określać długość. FFMpeg nie może bezpośrednio strumieniować mp4 na stdout, ponieważ umieszcza moov na końcu pliku. (Transkodowanie na żywo i przesyłanie strumieniowe MP4 działa na Androidzie, ale nie działa w Flash Player z NetStream.Play.FileStructureInvalid error )

Oczywiście MPEG-TS istnieje, ale nie jest obsługiwany przez HTML5<video>.

Zastanawiałem się nad metodą transkodowania strumienia w czasie rzeczywistym do MP4, a przy każdym nowym żądaniu HTTP, najpierw wyślij moov, który określa bardzo długą liczbę dla długości filmu, a następnie zacznij wysyłać resztę Plik MP4.

Czy w ten sposób można używać MP4 do przesyłania strumieniowego?

Po kilku badaniach i odpowiedzi av501 rozumiem, że rozmiary ramek muszą być znane, aby mogły działać.

Czy plik mp4 można podzielić na mniejsze części, aby można go było przesyłać strumieniowo?

Oczywiście przełączanie na inny kontener / format jest opcją, ale jedynym formatem kompatybilnym zarówno z Flash, jak i HTML5 jest mp4 / h264, więc jeśli będę musiał obsługiwać oba, musiałbym dwukrotnie transkodować.

questionAnswers(4)

yourAnswerToTheQuestion