Zajmuję się tworzeniem serwisu Tube i obecnie mam problemy z formatem H.264. Zauważyłem, że YouTube umieścił swoje filmy hi-def w kontenerze MP4, więc logicznie zrobiłem to samo.
Następnie zainstalowałem mod_h264_streaming
dla lighttpd, aby działało przesyłanie strumieniowe i czyszczenie osi czasu.
Problem polega na tym, że duże pliki (> 500 MB w nieco wysokiej rozdzielczości) trwają wiecznie, aby rozpocząć buforowanie (czytam, że Flowplayer i inne odtwarzacze Flash muszą najpierw pobrać metadane). Przeniesiłem atom xmov na początek pliku za pomocą MP4Box (próbowałem też Qt QuickStart), ale to nie pomogło.
Następnie przeczytałem, że muszę przeplatać ścieżki audio, więc też to zrobiłem. Nie spowodowało to żadnych zmian: filmy były nadal wolne.
Próbowałem więc umieścić dokładnie ten sam film H.264 w pojemniku FLV, a buforowanie odtwarzania zaczęło się niemal natychmiast - bez spowolnienia.
Więc czego tu brakuje? Dlaczego miałbym wybierać kontener MP4 z modułem mod_264_streaming
, który wydaje się super wolny, niż zwykły kontener FLV z wbudowanym lighttpd mod_flv_streaming
? Oczywiście wiele stron internetowych wybiera kontener MP4, ale nie rozumiem dlaczego.
I jako pytanie poboczne spróbowałem użyć <video>
tagu HTML5, aby wypróbować ten sam film H.264 MP4, a czyszczenie było błyskawiczne ! Przejrzałem plik dziennika lighttpd i zauważyłem, że odtwarzacze Flash dołączają się za video.mp4?start=234
każdym razem, gdy oś czasu jest szorowana, podczas gdy przeglądarki używające natywnego <video>
tagu HTML5 nie robią takich rzeczy. Czy to jakieś ograniczenie Flasha? Dlaczego streaming Flash nie może być tak szybki jak streaming HTML5?