Je dois convertir un groupe de fichiers mp4 pour qu'ils soient lisibles sur l'Ipad. J'ai déjà réussi à encoder un fichier mp4 pour qu'il soit lisible sur tous les principaux navigateurs (IE, Firefox, Chrome, Safari). Le fichier mp4 est même lisible sur mon appareil Android 4.x.
Les deux seuls appareils sur lesquels il ne peut pas être lu sont l'Ipad et l'iPhone. J'utilise Handbrake 4 pour convertir les fichiers en utilisant les présélections ipad/iphone mais ça ne marche pas. Quelqu'un peut-il m'expliquer pourquoi le fichier ayant les caractéristiques suivantes ne fonctionne pas sur tous les appareils sauf l'iOS ?
General
Complete name : chapter4.mp4
Format : MPEG-4
Format profile : Base Media / Version 2
Codec ID : mp42
File size : 10.4 MiB
Duration : 2mn 56s
Overall bit rate mode : Variable
Overall bit rate : 492 Kbps
Movie name : Chapter 4
Performer : Acuity
Encoded date : UTC 2013-02-06 16:04:37
Tagged date : UTC 2013-02-06 16:06:28
Writing application : HandBrake 0.9.8 2012071700
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : Baseline@L3.0
Format settings, CABAC : No
Format settings, ReFrames : 2 frames
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 2mn 56s
Bit rate mode : Variable
Bit rate : 179 Kbps
Width : 720 pixels
Height : 400 pixels
Display aspect ratio : 16:9
Frame rate mode : Variable
Frame rate : 30.000 fps
Minimum frame rate : 30.000 fps
Maximum frame rate : 30.030 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.021
Stream size : 3.76 MiB (36%)
Writing library : x264 core 120
Encoding settings : cabac=0 / ref=2 / deblock=1:0:0 / analyse=0x1:0x111 / me=umh / subme=6 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=3 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=0 / weightp=0 / keyint=300 / keyint_min=30 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=20.0 / qcomp=0.60 / qpmin=3 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
Encoded date : UTC 2013-02-06 16:04:37
Tagged date : UTC 2013-02-06 16:06:28
Color primaries : BT.709
Transfer characteristics : BT.709
Matrix coefficients : BT.709
Audio #1
ID : 2
Format : AAC
Format/Info : Advanced Audio Codec
Format profile : LC
Codec ID : 40
Duration : 2mn 56s
Bit rate mode : Variable
Bit rate : 85.2 Kbps
Maximum bit rate : 191 Kbps
Channel(s) : 2 channels
Channel positions : Front: L R
Sampling rate : 44.1 KHz
Compression mode : Lossy
Stream size : 1.80 MiB (17%)
Language : English
Encoded date : UTC 2013-02-06 16:04:37
Tagged date : UTC 2013-02-06 16:06:26
Audio #2
ID : 3
Format : AC-3
Format/Info : Audio Coding 3
Mode extension : CM (complete main)
Format settings, Endianness : Big
Codec ID : ac-3
Duration : 2mn 56s
Bit rate mode : Constant
Bit rate : 224 Kbps
Channel(s) : 2 channels
Channel positions : Front: L R
Sampling rate : 44.1 KHz
Bit depth : 16 bits
Compression mode : Lossy
Stream size : 4.72 MiB (46%)
Language : English
Encoded date : UTC 2013-02-06 16:04:37
Tagged date : UTC 2013-02-06 16:06:26
Pour lire la vidéo, j'utilise une combinaison de flash et de video tag. En utilisant modernizr.js, je pourrais déterminer si le standard h264 est supporté. Et si c'est le cas, la balise suivante est affichée :
<video id="my_video_1" class="video-js vjs-default-skin" controls="" preload="auto" width="700" height="420" poster="http://server/video_first_frame.png" data-setup="{}">
<source src="http://server/9BF315E824517C75C1257B090055B87A/$File/Chapter 4.mp4">
</video>
Lors de la visualisation sur l'ipad, je peux voir qu'il affiche la balise vidéo html5 mais il affiche comme il ne peut pas comprendre le fichier. Un autre fichier dans la même application ( ocean.mp4 du site video.js) est lu correctement donc je soupçonne que cela a quelque chose à voir avec l'encodage .