Saya telah meneliti ini cukup lama dan saya mencoba melakukan hal yang sama, jadi semoga ini akan membantu orang lain. Saya telah menggunakan crossbrowsertesting.com dan benar-benar menguji ini di hampir setiap browser yang dikenal manusia. Solusi yang saya dapatkan saat ini berfungsi di Opera, Chrome, Firefox 3.5+, IE8 +, iPhone 3GS, iPhone 4, iPhone 4s, iPhone 5, iPhone 5s, iPad 1+, Android 2.3+, Windows Phone 8.
Mengubah Sumber Secara Dinamis
Mengubah video secara dinamis sangat sulit, dan jika Anda menginginkan penggantian Flash, Anda harus menghapus video dari DOM / laman dan menambahkannya kembali sehingga Flash akan diperbarui karena Flash tidak akan mengenali pembaruan dinamis untuk Flash vars. Jika Anda akan menggunakan JavaScript untuk mengubahnya secara dinamis, saya akan menghapus semua <source>
elemen sepenuhnya dan hanya menggunakan canPlayType
untuk mengatur src
di JavaScript dan break
atau return
setelah jenis video pertama yang didukung dan jangan lupa untuk memperbarui flash var mp4 secara dinamis. Selain itu, beberapa browser tidak akan mendaftar bahwa Anda mengubah sumber kecuali Anda memanggil video.load()
. Saya yakin masalah dengan.load()
Anda alami dapat diperbaiki dengan menelepon terlebih dahuluvideo.pause()
. Menghapus dan menambahkan elemen video dapat memperlambat browser karena terus menyangga video yang dihapus, tetapi ada solusinya .
Dukungan Lintas Browser
Sejauh bagian lintas-browser yang sebenarnya, saya juga sampai di Video For Everybody . Saya sudah mencoba plugin MediaelementJS Wordpress, yang ternyata menyebabkan lebih banyak masalah daripada yang diselesaikan. Saya menduga masalahnya adalah karena plugin Wordpress dan bukan perpustakaan yang sebenarnya. Saya mencoba menemukan sesuatu yang berfungsi tanpa JavaScript, jika memungkinkan. Sejauh ini, yang saya dapatkan adalah HTML biasa ini:
<video width="300" height="150" controls="controls" poster="http://sandbox.thewikies.com/vfe-generator/images/big-buck-bunny_poster.jpg" class="responsive">
<source src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.ogv" type="video/ogg" />
<source src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" type="video/mp4" />
<source src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.webm" type="video/webm" />
<source src="http://alex-watson.net/wp-content/uploads/2014/07/big_buck_bunny.iphone.mp4" type="video/mp4" />
<source src="http://alex-watson.net/wp-content/uploads/2014/07/big_buck_bunny.iphone3g.mp4" type="video/mp4" />
<object type="application/x-shockwave-flash" data="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" width="561" height="297">
<param name="movie" value="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" />
<param name="allowFullScreen" value="true" />
<param name="wmode" value="transparent" />
<param name="flashVars" value="config={'playlist':['http://sandbox.thewikies.com/vfe-generator/images/big-buck-bunny_poster.jpg',{'url':'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4','autoPlay':false}]}" />
<img alt="No Video" src="http://sandbox.thewikies.com/vfe-generator/images/big-buck-bunny_poster.jpg" width="561" height="297" title="No video playback capabilities, please download the video below" />
</object>
<strong>Download video:</strong> <a href="video.mp4">MP4 format</a> | <a href="video.ogv">Ogg format</a> | <a href="video.webm">WebM format</a>
</video>
Catatan penting :
- Akhirnya menempatkan ogg sebagai yang pertama
<source>
karena Mac OS Firefox berhenti mencoba memutar video jika menemukan MP4 sebagai yang pertama <source>
.
- Jenis MIME yang benar adalah file .ogv yang penting
video/ogg
, bukan video/ogv
- Jika Anda memiliki video HD, transcoder terbaik yang pernah saya temukan untuk file OGG kualitas HD adalah Firefogg
- The
.iphone.mp4
file untuk iPhone 4 + yang akan hanya memutar video yang MPEG-4 dengan H.264 Baseline 3 Video dan audio AAC. Transcoder terbaik yang saya temukan untuk format itu adalah Handbrake, menggunakan preset iPhone & iPod Touch akan berfungsi di iPhone 4+, tetapi agar iPhone 3GS berfungsi, Anda perlu menggunakan preset iPod yang memiliki resolusi jauh lebih rendah yang saya tambahkan sebagai video.iphone3g.mp4
.
- Di masa mendatang kami akan dapat menggunakan
media
atribut pada <source>
elemen untuk menargetkan perangkat seluler dengan kueri media, tetapi saat ini perangkat Apple dan Android yang lebih lama tidak mendukungnya dengan cukup baik.
Edit :
- Saya masih menggunakan Video For Everybody tetapi sekarang saya telah beralih menggunakan FlowPlayer, untuk mengontrol fallback Flash, yang memiliki API JavaScript mengagumkan yang dapat digunakan untuk mengontrolnya.