1 votes

Pourquoi les vidéos réalisées avec iOS ne peuvent pas être lues sur Android mais l'inverse fonctionne

Je suis actuellement en train de tester pourquoi une vidéo réalisée avec un appareil iOS ne semble pas fonctionner sur mon Galaxy S3.

Voici les informations sur le fichier provenant de ffmpeg :

Vidéo prise avec le Galaxy S3 :

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '20130715_151126.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 0
    compatible_brands: isom3gp4
    creation_time   : 2013-07-15 13:12:08
  Duration: 00:00:41.33, start: 0.000000, bitrate: 17143 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 17015 kb/s, 30.01 fps, 30 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      rotate          : 90
      creation_time   : 2013-07-15 13:12:08
      handler_name    : VideoHandle
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, 123 kb/s (default)
    Metadata:
      creation_time   : 2013-07-15 13:12:08
      handler_name    : SoundHandle

Vidéo réalisée avec l'iPhone 4S :

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'trim.BE866F9A-654A-4C76-AC43-5CDF4923A2F0.mp4':
  Metadata:
    major_brand     : qt  
    minor_version   : 0
    compatible_brands: qt  
    creation_time   : 2013-11-15 12:44:22
    encoder         : 6.0
    encoder-fra     : 6.0
    date            : 2013-05-31T14:22:11+0200
    date-fra        : 2013-05-31T14:22:11+0200
    model           : iPhone 4S
    model-fra       : iPhone 4S
    make            : Apple
    make-fra        : Apple
  Duration: 00:00:21.79, start: 0.000000, bitrate: 4221 kb/s
    Stream #0:0(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, 62 kb/s (default)
    Metadata:
      creation_time   : 2013-11-15 12:44:22
      handler_name    : Core Media Data Handler
    Stream #0:1(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720, 4147 kb/s, 29.97 fps, 29.97 tbr, 600 tbn, 1200 tbc (default)
    Metadata:
      rotate          : 90
      creation_time   : 2013-11-15 12:44:22
      handler_name    : Core Media Data Handler

Ils semblent avoir le même encodage vidéo et audio en utilisant h264/aac. La seule chose qui diffère que je peux voir sont :

  • La résolution (Elle ne devrait pas être un problème)
  • Le FPS (ne devrait pas être un problème)
  • Dans iOS, le flux audio est de 0:0 alors que dans Android, il est de 0:1.

Le fait est qu'une vidéo prise avec un Galaxy S3 fonctionne bien sur iOS sans recodage.

Quelqu'un sait-il pourquoi ?

1voto

Yann Trevin Points 2747

Si vous ne voulez pas que vos utilisateurs téléchargent un lecteur pour afficher les vidéos, vous n'avez pas d'autre choix que de créer des vidéos avec l'option H.264 Baseline profil. Cela est dû au fait que le lecteur Android standard ne supporte rien de plus élevé .

En revanche, iOS prend en charge les profils principal et supérieur. Bien qu'il ne figure pas dans la liste des les spécifications iOS pour l'iPhone 4S et les versions ultérieures devrait le soutenir .

Il se peut très bien que l'application vidéo de votre Samsung enregistre la vidéo High profile et puisse également la lire (car Samsung a inclus un lecteur non standard*). Dans tous les cas, la conversion en profil Baseline garantirait la lecture de la vidéo sur tous les appareils.

ffmpeg -i input.mp4 -c:v libx264 -profile:v baseline -pix_fmt yuv420p -crf 23 output.mp4

Ça devrait le faire. Vous pouvez modifier le paramètre CRF pour changer la qualité. Vérifiez le guide d'encodage x264 pour plus.

* Disclaimer : Je ne possède pas de téléphone Samsung Android. Je ne sais pas s'ils ont un lecteur non stocké.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X