Я розробляю веб-сайт, який наразі має проблеми з форматом H.264. Я помітив, що YouTube помістив свої відео з високою дозволом у контейнер MP4, тому логічно я зробив те саме.
Далі я встановив mod_h264_streaming
для lighttpd, щоб зробити потокове та робоче скрупування.
Проблема полягає в тому, що великим файлам (> 500 Мб при дещо високій роздільній здатності) потрібно назавжди, щоб навіть почати буферизацію (я прочитав, що Flowplayer та інші Flash-плеєри спочатку повинні завантажити метадані). Я перемістив атом xmov на передню частину файлу з MP4Box (я також спробував Qt QuickStart), але це не допомогло.
Далі я прочитав, що мені потрібно переплутати аудіозаписи, тому і зробив це. Це не спричинило жодних змін: відео все ще були повільними.
Тому я спробував поставити такий самий фільм H.264 у контейнер FLV, і буферизація відтворення почалася майже миттєво - без повільності.
То чого мені тут не вистачає? Чому я б обрав контейнер MP4 з модулем mod_264_streaming
, який здається надто повільним, над звичайним контейнером FLV із вбудованим lighttpd mod_flv_streaming
? Очевидно, що багато веб-сайтів вибирають контейнер MP4, але я не розумію, чому.
І як побічне питання, я спробував за допомогою <video>
тегу HTML5 спробувати той самий фільм H.264 MP4, і вичісування блискавично пройшло ! Я заглянув у файл журналу lighttpd, і помітив, що Flash-програвачі додаються video.mp4?start=234
щоразу, коли прокручується часова шкала, тоді як браузери, що використовують <video>
тег HTML5 , такого не роблять. Це якесь обмеження Flash? Чому потокова передача Flash не може бути такою швидкою, як HTML5?