Deseaba poder hacer esto varias veces ahora, así que pregunto.
Si tengo un archivo de video o audio existente ffmpeg
, mplayer
y otros reproductores de medios pueden detectar al menos algunas de sus "propiedades" como el contenedor, el códec y la velocidad de bits utilizada, probablemente varias configuraciones específicas de calidad y codificación, etc.
¿Cómo puedo extraer esta configuración de un archivo existente para usarla (directamente) para codificar con ffmpeg?
Por ejemplo, obtuve un mkv
video codificado x264
con algunas configuraciones y otro avi
archivo sin comprimir . Me gustaría "copiar" la configuración de codificación utilizada en el archivo x264 mkv para transcodificar el avi con la misma configuración.
Nota: Estoy buscando una manera que no incluya trabajo humano con "traducir" la configuración de un decodificador al codificador. Está bien si primero necesito extraer la configuración y guardarla en algún lugar, pero me gustaría poder simplemente alimentar las opciones de lectura a una línea de comando o un archivo de configuración preestablecido para ffmpeg.
ffprobe
(sobre todo con el-show_streams
y-show_format
opciones) y utilizar esa información para la escritura de las cosas importantes-crf
opción generalmente se recomienda. Consulte la Guía de codificación FFmpeg y x264 .channels:6
un archivo de video, pero para codificarlo necesitaría usar el interruptor-ch:6
. Algunos conmutadores utilizan 1 letra, algunos utilizan dos, etc.Respuestas:
No hay forma automática de hacer eso. Debe mirar los parámetros del archivo original y aplicarlos al archivo de salida.
En la mayoría de los casos, estos serán los siguientes:
-filter:v scale
o-s:v
-filter:v fps
-r
-pix_fmt
(por ejemplo,-pix_fmt yuv420p
debería darle la mejor compatibilidad)-g
Pero incluso si lo hace bien, algunos dispositivos pueden requerir información específica y patentada incrustada en el flujo de bits.
En cuanto a la tarea específica de usar
x264
, esto no será trivial. No conozco un solo script que se encargue de estas tareas, que generalmente se realizan manualmente. Para obtener la mayor información sobre la configuración de codificación, en Unix / Linux u OS X, puede usarmediainfo
algunos trucos de Bash.Por ejemplo, para un video codificado x264 en un archivo MP4:
Esto generará una lista de opciones x264:
Luego, podría pasar manualmente estas opciones al binario x264.
Si pasas por FFmpeg, eso es un poco más complicado, ya que no todas las opciones de x264 pueden o deben asignarse de esta manera. Tenga en cuenta que a menudo una simple especificación de preajuste, ajuste y perfil también funcionará (como se ve en
x264 --fullhelp
la guía de codificación x264 ), y especificar el nivel de CRF es suficiente.Y esto ni siquiera está considerando el audio, donde afortunadamente no hay tantas opciones.
fuente
mediainfo
salida y mapearía estas opciones para ffmpeg-x264-params
. (Consulte también la guía de codificación x264 ). Pero si desea una solución general para todo tipo de códecs / codificadores o formatos de contenedor, necesitará escribir un script moderadamente sofisticado que realice la conversión.