Opciones de transmisión de ffmpeg para mp3, portada de mp4

Tengo potencialmente millones de videos de transmisión HLS para crear a partir de portadas y mp3. Obviamente, me gustaría mantener el ancho de banda resultante al mínimo. Probé varias banderas ffmpeg sugeridas específicamente para esta tarea e incluso algunas en el segmentador de medios de Apple que decían poner una portada en cada segmento (meta-archivo/meta-tipo). Tuve muchos problemas para que Chrome mostrara la portada al reproducir usando HTML5 a pesar de que funcionaba en VLC. Terminé con una línea de comando de trabajo como esta.

ffmpeg -loop 1 -i 1k_image.jpg -i song_219kbs.mp3 -c:v libx264 -pix_fmt yuv420p  -profile:v baseline -c:a aac -strict experimental -b:a 64k -r 1 -shortest song_64k_2fps_baseline.mp4

El -pix_fmtperfil y la línea de base parecían ser clave. ¿Puedes ver algo de lo que estoy haciendo que es innecesario? ¿Hay una mejor manera de lograr mi objetivo?

Además, miré varias de las soluciones comerciales de transcodificación en la nube y no vi cómo configurar una para hacer esto. ¿Me perdí las opciones?

Incluya la salida completa de la consola de su comando.
uso libfdk_aac_ Tiene mejor calidad por tasa de bits que el codificador AAC integrado de ffmpeg. Además, no olvide -movflags +faststartcolocar el átomo MOOV al frente del archivo (esencial para la transmisión).

Respuestas (1)

Si solo desea incrustar una portada, puede considerar mantener el resultado como mp3, por ejemplo:

ffmpeg -i original.mp3 -i cover.png -map 0:0 -map 1:0 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" -id3v2_version 3 -write_id3v1 1 result.mp3

Si está creando mp4, por ejemplo, para YouTube, sugiero dividir el proceso en dos pasos: primero cree la película de video sin pista de audio, con una duración un poco más larga que la del audio. Luego mux el video y el audio junto con la -shortestopción que truncará el video a la duración exacta del audio. En términos de tiempo, estos dos pasos tomarán un poco más de tiempo que un solo paso, pero todo su flujo de trabajo será mucho más simple y manejable.

Guau, eso realmente funcionó. ¿No es eso más corto con ffmpeg?