Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Qué carga de formato h.264 en android y IOS?

Teóricamente ambos IOS y ANDROID jugarán los archivos h.264, pero no puedo imaginar un ajuste para codificarlos así que trabajan realmente la plataforma cruzada. ¿Alguien sabe cómo codificar para Android e IOS con un solo archivo?

Ps Sé todo sobre el vídeo html5 y las fuentes de fallback, simplemente no quiero codificar y alojar un nuevo video para cada dispositivo que viene por el lucio.

  • Cancelar la notificación al eliminar la aplicación del panel multitarea
  • ¿Cómo puedo forzar globalmente la orientación de la pantalla en Android?
  • Tablas de material de Android 5.0 con barra de herramientas
  • Crear barra de búsqueda persistente en android
  • ¿Dónde está la clase SampleZipfileProvider?
  • Cómo acceder a un elemento específico de cada elemento de vista de cuadrícula
  • InterruptedException al depurar la aplicación de Android
  • Fragmento no añadido (fallo inconsistente)
  • Google jugar alfa y beta tester función
  • Período de tiempo de ejecución de Marshmallow
  • Cómo agregar TableRow de xml a TableLayout mediante programación?
  • Disposición de Android: rellena el resto del espacio excepto
  • 3 Solutions collect form web for “¿Qué carga de formato h.264 en android y IOS?”

    Esta es la línea de comando ffmpeg que usamos para transcodificar a MPEG-4 h.264 en nuestro entorno de producción. Hemos probado la salida en varios dispositivos Android, así como en iOS. Puede utilizar esto como un punto de partida, simplemente ajustar cosas como tamaño de fotograma / velocidad de fotogramas y qfactor.

    ffmpeg -y -i #{input_file} -s 432x320 -b 384k -vcodec libx264 -flags +loop+mv4 -cmp 256 -partitions +parti4x4+parti8x8+partp4x4+partp8x8 -subq 6 -trellis 0 -refs 5 -bf 0 -flags2 +mixed_refs -coder 0 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10 -qmax 51 -qdiff 4 -acodec libfaac -ac 1 -ar 16000 -r 13 -ab 32000 -aspect 3:2 #{output_file} 

    Algunas de las opciones importantes que afectan a la compatibilidad de Android son:

     -coder 0 Uses CAVLAC rather than CABAC entropy encoding (CABAC not supported on Android) -trellis 0 Should be shut off, requires CABAC -bf 0 Turns off B-frames, not supported on Android or other h.264 Baseline Profile devices -subq 6 Determines what algorithms are used for subpixel motion searching. 7 applies to B-frames, not supported on Android. -refs 5 Determines how many frames are referenced prior to the current frame. Increasing this number could affect compatibility 

    Después de codificar nuestro video con esta receta ffmpeg, también pasamos el video a través de qt-faststart . Este paso rechaza el video para la transmisión. Lo transmitimos por HTTP a un VideoView incorporado dentro de nuestra aplicación para Android. No hay problemas de transmisión a ningún dispositivo Android de los que tengamos conocimiento.

    Actualización 2013-06-17: Sólo quería añadir una nota que es mejor quedarse con el perfil de "línea de base" para la codificación H.264 para una compatibilidad máxima en todos los dispositivos Android. La línea de comandos anterior no especifica explícitamente un perfil H.264, pero ffmpeg tiene un -profile línea de comandos -profile que es útil si está utilizando sus presets . Probablemente no debería meterse con -profile . Tengo vídeos codificados para mi tableta ASUS Transformer 300 (Android 4.2) usando el perfil "principal" en vez de "línea de base" (a través de Handbrake). El perfil "principal" dio problemas con la desconexión de audio con el vídeo en reproducción.

    Respuesta suplementaria

    Esta respuesta es un complemento a la respuesta aceptada explicando algunos de los parámetros.

     ffmpeg -y # Overwrite output files without asking. -i input_filename # input file name -s 432x320 # size of output file -b:v 384k # bitrate for video -vcodec libx264 # use H.264 video codec -flags +loop+mv4 # use loop filter and four motion vector by macroblock -cmp 256 # ??? Full pel motion estimation compare function -partitions +parti4x4+parti8x8+partp4x4+partp8x8 #??? -subq 6 # determines algorythms for subpixel motion searching and partition decision -trellis 0 # optimal rounding choices -refs 5 # number of frames referenced prior to current frame -bf 0 # turn of B-frames, something to do with H.264 and Baseline Profile -flags2 +mixed_refs # ??? gave me an error so I just deleted it -coder 0 # turn of the CABAC entropy encoder -me_range 16 # max range of the motion search -g 250 # GOP length (250 is the recommended default) -keyint_min 25 # Minimum GOP length (25 is the recommended default) -sc_threshold 40 # adjusts sensitivity of x264's scenecut detection (default is 40) -i_qfactor 0.71 # Qscale difference between I-frames and P-frames (0.71 is the recommended default) -qmin 10 -qmax 51 # min and max quantizer (10 and 51 are the recommended defaults) -qdiff 4 # max QP step (4 is recommended default) -c:a aac # Set the audio codec to use AAC -ac 1 # number of audio channels -ar 16000 # audio sampling frequency -r 13 # frames per second -ab 32000 # audio bitrate -aspect 3:2 # sample aspect ratio output_filename # name of the output file 

    Siéntase libre de editar esto si puede rellenar algunos de los detalles de los que no estaba seguro.

    Aquí está de nuevo en un formato de cortar-y-pegar. (También tuve que añadir el parámetro -strict -2 para obtener aac para trabajar en mi equipo.)

     ffmpeg -y -i input_file.avi -s 432x320 -b:v 384k -vcodec libx264 -flags +loop+mv4 -cmp 256 -partitions +parti4x4+parti8x8+partp4x4+partp8x8 -subq 6 -trellis 0 -refs 5 -bf 0 -coder 0 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10 -qmax 51 -qdiff 4 -c:a aac -ac 1 -ar 16000 -r 13 -ab 32000 -aspect 3:2 -strict -2 output_file.mp4 

    Estudio adicional

    La mayor parte de esta información encontré en los siguientes enlaces:

    • Documentación de ffmpeg
    • X264 Guía de opciones de FFmpeg
    • FFMPEG Una guía intermedia / Flags Flags

    Ver también

    • Ejemplo de Android VideoView

    Consulte Formatos de medios compatibles con Android , que indica que h.264 sólo es compatible con Android 3.0+. Las versiones anteriores de Android soportan h.263. EDIT : Como mportuesisf menciona a continuación, he malinterpretado la tabla vinculada. No haga caso de esta respuesta.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.