H.264 video neden bir FLV kapsayıcısında MP4 kapsayıcısından daha hızlı?


9

Bir tüp sitesi geliştiriyorum ve şu anda H.264 formatıyla ilgili sorunlar yaşıyorum. YouTube'un yüksek çözünürlüklü videolarını bir MP4 konteynerine koyduğunu fark ettim, bu yüzden mantıklı olarak aynı şeyi yaptım.

Sonra, mod_h264_streamingakış ve zaman çizelgesi fırçalama işini yapmak için lighttpd için yükledim .

Sorun şu ki, büyük dosyalar (> 500MB biraz yüksek çözünürlükte) arabelleğe almaya başlamak için sonsuza dek sürüyor (Flowplayer ve diğer Flash oynatıcıların önce meta verileri indirmesi gerektiğini okudum). MP4Box ile xmov atomunu dosyanın önüne taşıdım (Qt QuickStart'ı da denedim), ama bu yardımcı olmadı.

Sonra, ses parçalarını serpiştirmem gerektiğini okudum, bunu da yaptım. Bu hiçbir değişikliğe neden olmadı: videolar hala yavaştı.

Bu yüzden aynı H.264 filmi bir FLV konteynerine koymaya çalıştım ve oynatma arabelleği neredeyse anında başladı - yavaşlama yok.

Peki burada ne eksik? mod_264_streamingLighttpd'nin yerleşik olduğu normal bir FLV kabı yerine neden süper yavaş görünen modüllü MP4 kabını seçeyim mod_flv_streaming? Açıkçası, birçok web sitesi MP4 kapsayıcısını seçer, ancak nedenini anlayamıyorum.

Bir yan soru olarak, <video>aynı H.264 MP4 filmini denemek için HTML5 etiketini kullanmayı denedim ve fırçalama yıldırım hızındaydı ! Lighttpd'nin günlük dosyasına baktım video.mp4?start=234ve yerel HTML5 <video>etiketini kullanan tarayıcıların böyle bir şey yapmadığı sırada Flash oyuncularının zaman çizelgesi her görüntülendiğinde eklendiğini fark ettim . Bu bir çeşit Flash sınırlaması mıdır? Flash akışı neden HTML5 akışı kadar hızlı olamaz?

Yanıtlar:


4

TL; DR: MP4, video sitesi videoda FLV'nin desteklediğinden daha fazla meta veri depoladığında veya FLV'nin desteklemediği bir ses codec bileşeni kullandığında kullanılır. FLV'nin basitliği ve akış için tasarımı, MP4'ü kullanmak için iyi bir nedeniniz yoksa iyi bir seçimdir.

Flash'ın zaman çizelgesi fırçalama gelince, flaşı hiç kodlamadığım için neden bunu yaptığım hakkında hiçbir fikrim yok, ancak dosyada arama yapmak için kullandığı bir düğme veya özellikle adobe'nin akış sunucusuyla çalışan bir şey olması mümkündür. Ayrıca sinir bozucu kullanıcının dosyayı diskinde tutmasını durdurmak için bir yol olarak çalışır.


Zaten bildiğiniz bazı şeyler:

FLVVe MP4(aka isomedia) kapları arasında temel farklılıklar vardır . FLV, Adobe tarafından başlangıçtan itibaren bir akış kabı olarak tasarlandı ve gerçekten çok basit . Tek yaptığı bir video paketi, daha sonra ses paketi, daha sonra video paketi göndermek ... Ancak, sadece çok az codec'i destekler ve milisaniye cinsinden zaman damgaları dışında hiçbir meta veri içermez. MP4'e özgü özelliklere ihtiyacınız olmadıkça, FLV ile iyi olur.

ISO medyası ise Apple'ın MOV konteynerine dayanıyor. Atomlar halinde ayrılmıştır ve başka herhangi bir atomun okunabilmesi mooviçin kodu çözülmesi gereken belirli bir atom vardır . MP4 ile yaşadığınız sorun, atomun dosyanın sonunda yazılmasıdır, bu da programları kodlamak için yapılması çok daha kolaydır. Atomun dosyanın başına yerleştirilmesi için gerekli munging'i yapacak olan qtfaststart gibi araçlar vardır . Böylece, dosya başlamadan önce tamamen indirilmesi gerekmek yerine, veri olur olmaz oynatmaya başlayacaktır.moovmoov


0

Bir mov kabı kullanırsanız, modül takmaya veya flv kabına yerleştirmeye ve bir modül kullanmaya gerek kalmadan kutudan çıkar. Sadece düşüncelerim. Mov kullanın ve uygun mime tipini ekleyin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.