1 votos

Por qué el video hecho con iOS no puede ser leído en Android pero la inversa funciona

Actualmente estoy probando por qué un video hecho con un dispositivo iOS no parece funcionar en mi Galaxy S3.

Aquí está la información del archivo de la ffmpeg :

Video tomado con la 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

Video tomado con el 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

Parece que son bastante similares a la codificación de video y audio usando h264/aac Lo único que difiere es que puedo ver..:

  • La resolución (No debería ser un problema)
  • El FPS (no debería ser un problema)
  • En iOS el audio es streaming 0:0 mientras que en Android es 0:1

La cosa es que un video tomado con un Galaxy S3 funciona bien en el iOS sin necesidad de recodificarlo.

¿Alguien sabe por qué?

1voto

slhck Puntos 433

Si no quieres que tus usuarios descarguen un reproductor para mostrar los vídeos, entonces no tienes otra opción que crear vídeos con el Línea de base del H.264 perfil. Esto se debe a que el reproductor de Android de serie no soporta nada más alto .

El iOS, por otro lado, apoya el perfil principal y alto. Si bien no figura en la lista de las especificaciones del iOS el iPhone 4S y superiores debería apoyarla .

Podría muy bien ser que tu aplicación de video de Samsung graba video de alto perfil y también puede reproducirlo (porque Samsung incluía un reproductor que no era de stock*). En cualquier caso, la conversión al perfil Baseline aseguraría que el vídeo se pueda reproducir en todos los dispositivos.

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

Eso debería bastar. Puedes cambiar el parámetro CRF para cambiar la calidad. Revise la guía de codificación x264 por más.

* Descargo de responsabilidad: No tengo un teléfono Samsung Android. Ni idea de si tienen un reproductor que no sea de serie.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X