Guía de codificación iOS/Mobile

Este tema analiza los enfoques para codificar videos para dispositivos móviles.

Resumen

Primero las malas noticias. Hay cientos de dispositivos móviles por ahí, y es básicamente imposible admitir el 100,0% de ellos.

La buena noticia es que los dispositivos móviles están mejorando. Atrás quedaron los días en que 176x144 3GP era sinónimo de video móvil. Los teléfonos inteligentes modernos pueden reproducir videos de alta calidad y el uso de teléfonos inteligentes está aumentando. Eso no quiere decir que 3GP haya terminado o que todos tengan un teléfono inteligente. Pero el uso de teléfonos inteligentes está creciendo (a una tasa anualizada del 64% a partir del segundo trimestre de 2010), y no es sorprendente que los usuarios de teléfonos inteligentes tengan más probabilidades de ver videos en sus teléfonos que sus amigos que usan teléfonos tontos.

Entonces, si desea admitir más del 90% de los dispositivos móviles, necesita al menos dos tipos de video: 3GP + MPEG-4 para dispositivos menos sofisticados y H.264 + MP4 para teléfonos inteligentes.

Eso es una buena noticia, de verdad. Un video de salida puede cubrir a todos los usuarios de su teléfono inteligente - iPhone / iPad / iPod, Android y (en su mayor parte) Blackberry también. Mezcle en PSP, PS3 y Xbox 360 por si acaso.

Por supuesto, si bien una salida universal para teléfonos inteligentes puede ocuparse de la mayoría de los usuarios de teléfonos inteligentes, puede hacerlo mejor con múltiples salidas móviles. Por ejemplo, el iPad tiene una resolución nativa de 1024x768, cinco veces más alta que la de 480x320 de los iPhones anteriores. Entonces, si codifica su video a 480x320, se perderá las capacidades de casi alta definición del iPad.

Afortunadamente, puede apuntar bien a los dispositivos móviles utilizando un puñado de perfiles de codificación estándar. Comience con Universal Smartphone Profile para una amplia compatibilidad; agregue una versión de perfil de teléfono inteligente avanzado para los dispositivos más avanzados; y complete su lista de dispositivos móviles con un perfil heredado para una compatibilidad más amplia, ya sea nuestro perfil de teléfono inteligente heredado (a continuación) o incluso un video 3GP para una compatibilidad aún más amplia.

Tenga en cuenta que los siguientes valores predeterminados son el punto de partida para estos perfiles. Zencoder usa estas configuraciones de forma predeterminada, pero puede replicarlas con bastante facilidad en cualquier herramienta de codificación que esté utilizando.

Valores predeterminados:

Video: H.264, nivel 3.0, perfil de referencia
Audio: AAC, 1-2 canales

Perfil de smartphone universal

Este es un excelente perfil de inicio para una amplia compatibilidad con los teléfonos inteligentes modernos. Reproduce casi todo, aunque no aprovecha las resoluciones más altas y la complejidad del códec posible en la última generación de dispositivos.

Reproduce en:

iOS: iPhone, iPad, Apple TV, iPod Touch, iPod Classic, iPod 5.5G
Mora: Negrita 9000, Curva 8910, 8900, 8520, Pearl 9XXX, Tormenta, Tormenta 2, Antorcha, Tour, Negrita 9650 + 9700
Androide: Todas (?)
Otro: PSP (3.30+), PS3, Xbox 360, web, Palm Pre*

No juega en:

iPod 5G, PSP (anterior a 3.30), Blackberry Curve 9330, 9300, 8530, 83XX, Pearl 8XXX, 88XX

Ajustes:

{
    "input": "s3://bucket-name/file-name.avi",
    "outputs": [
        {
            "url": "s3://output-bucket/output-file-name.mp4",
            "audio_bitrate": 128,
            "audio_sample_rate": 44100,
            "height": 320,
            "width": 480,
            "max_frame_rate": 30,
            "video_bitrate": 1500,
            "h264_level": 3
        }
    ]
}

Perfil de teléfono inteligente universal v2

Este perfil se reproduce mejor en iPhone 4, iPad, Apple TV, nuevo iPod Touch, Droid, PS3 y Xbox, al aumentar la resolución de video. Sin embargo, los píxeles adicionales se desperdician en los iPhones más antiguos y crean un video que no se reproduce en Blackberry y algunos teléfonos Android.

Reproduce en:

Todo lo anterior, menos Blackberry y quizás dispositivos Android más débiles

Ajustes:

Igual que el perfil de teléfono inteligente universal (arriba), pero con un tamaño de 640x480

{
    "input": "s3://bucket-name/file-name.avi",
    "outputs": [
        {
            "url": "s3://output-bucket/output-file-name.mp4",
            "audio_bitrate": 128,
            "audio_sample_rate": 44100,
            "height": 480,
            "width": 640,
            "max_frame_rate": 30,
            "video_bitrate": 1500,
            "h264_level": 3
        }
    ]
}

Perfil avanzado de smartphone

Los dispositivos iOS más nuevos permiten resoluciones más altas y una mayor complejidad de codificación (lo que significa una mejor compresión). En particular, los usuarios de iPad y Apple TV no deberían tener que ver videos de 480x320 en sus hermosas pantallas, por lo que tiene sentido proporcionar una versión de mayor calidad si desea brindar una buena experiencia a estos usuarios.

Reproduce en:

iOS: iPhone 4, iPad, Apple TV *, iPod Touch más nuevo
Androide: Nexus One, Droid, tal vez otros. (YMMV en estos, sin embargo. Algunos usuarios informan problemas con el video de 720p).
Otro: PS3, web

No juega en:

iOS: iPod 5G / 5.5G / Classic, iPhone 3GS y anteriores, iPod Touch PSP más antiguo, Apple TV antiguo *
Mora: todas
Androide: otros
Otro: PSP, PS3, Xbox 360, web

Ajustes:

Tenga en cuenta que este es el tamaño máximo. Para la resolución nativa del iPhone 4, establezca el tamaño en 960x640

{
    "input": "s3://bucket-name/file-name.avi",
    "outputs": [
    {
        "url": "s3://output-bucket/output-file-name.mp4",
        "audio_bitrate": 160,
        "audio_sample_rate": 48000,
        "height": 720,
        "width": 1280,
        "max_frame_rate": 30,
        "video_bitrate": 5000,
        "h264_profile": "main",
        "h264_level": 3.1
    }
    ]
}

Perfil de teléfono inteligente avanzado v2

Para admitir dispositivos Apple TV más antiguos, use la configuración de Perfil de teléfono inteligente avanzado, más uno de los siguientes:

Ajustes:

Perfil de teléfono inteligente avanzado (arriba), más uno de los siguientes:

size: 960x540

O

max_frame_rate: 24

Perfil de smartphone heredado

Este perfil se reproduce en el último conjunto importante de dispositivos móviles basados en H.264: en particular, los iPod más antiguos y algunos Blackberry. La compensación es un video significativamente más pequeño: 320x240, a no más de 768 kbps.

Los dispositivos iPhone / iPod más antiguos solicitan el perfil "H.264 Baseline Low Complexity". "Baja complejidad" no es en realidad un estándar H.264; en realidad, solo significa "solo 1 marco de referencia". El jurado está deliberando sobre cuánto los dispositivos de Apple realmente hacen cumplir esto, pero para una verdadera compatibilidad, probablemente debería usar el perfil de línea de base y limitar los marcos de referencia a 1. Puedes hacer esto con el h264_reference_frames configuración.

Reproduce en:

Todo lo anterior, además de: iPod 5G, PSP (antes de 3.30), Blackberry Curve 9330, 9300, 8530, 83XX, Pearl 8XXX, 88XX, Palm Pre*

Ajustes:

{
    "input": "s3://bucket-name/file-name.avi",
    "outputs": [
    {
        "url": "s3://output-bucket/output-file-name.mp4",
        "audio_bitrate": 128,
        "audio_sample_rate": 44100,
        "height": 240,
        "width": 320,
        "max_frame_rate": 30,
        "video_bitrate": 768,
        "h264_level": 1.3
    }
    ]
}

Perfiles 3GP heredados

Finalmente, uno o dos perfiles 3GP extenderán el soporte a muchos dispositivos móviles restantes.

En particular, puede usarlos en la mayoría de los mismos dispositivos admitidos anteriormente en el perfil de teléfono inteligente heredado. Entonces, si está codificando un video 3GP a 320x240, es posible que no necesite codificar otro video H.264 a 320x240.

Nota

  • Estos videos se verán terribles, pero ese es el costo de admitir teléfonos 3GP.
  • Para entregar video 3GP como una transmisión RTMP, es necesario "insinuarlo". Colocar insinuación a true en su solicitud de API para habilitarlo.

Reproduce en:

Difícil de decir. Hay miles de tipos de dispositivos 3GP y cada uno es un poco diferente. Considérelos un punto de partida.

Perfil A

{
    "input": "s3://bucket-name/file-name.avi",
    "outputs": [
    {
        "url": "s3://output-bucket/output-file-name.mp4",
        "format": "3gp",
        "aspect_mode": "pad",
        "frame_rate": 15,
        "upscale": true,
        "height": 240,
        "width": 320,
        "video_bitrate": 192,
        "decoder_bitrate_cap": 192,
        "audio_bitrate": 24,
        "audio_channels": 1,
        "audio_sample_rate": 16000
    }
    ]
}

Perfil B

{
    "input": "s3://bucket-name/file-name.avi",
    "outputs": [
    {
        "url": "s3://output-bucket/output-file-name.mp4",
        "format": "3gp",
        "video_codec": "mpeg4",
        "height": 144,
        "width": 176,
        "aspect_mode": "pad",
        "frame_rate": 5,
        "upscale": true,
        "video_bitrate": 52,
        "decoder_bitrate_cap": 58,
        "decoder_buffer_size": 16,
        "audio_bitrate": 16,
        "audio_channels": 1,
        "audio_sample_rate": 16000
    }
    ]
}

Resumen

Si desea crear videos móviles, comience con el perfil de teléfono inteligente universal. Para una mejor calidad, complemente esto con un video de perfil avanzado de teléfono inteligente. Para una compatibilidad más amplia, agregue un perfil heredado o dos usando MP4 o 3GP. Eso es. Solo se necesitan de 1 a 3 perfiles para admitir la mayoría de los dispositivos móviles.