
Soy nuevo en FFMPEG y no puedo encontrar mucha documentación clara sobre esto específicamente.
Estoy concatenando 3 mp3 (solo quiero muxing, sin codificación/transcodificación).
Ambos comandos parecen funcionar bien. ¿Hay alguna diferencia entre usar '-c' y '-acodec'?
ffmpeg -i "concat:a.mp3|b.mp3|c.mp3" -acodec copy out.mp3
ffmpeg -i "concat:a.mp3|b.mp3|c.mp3" -c copy out.mp3
Busqué en Google durante horas, encontré diversa documentación de ffmpeg pero ninguna que explique qué hacen realmente -c o -acodec. Creo que -c significa 'códec' y -acodec significa 'códec de audio'. ¿Qué hace cada uno/hay alguna diferencia/hay alguno mejor?
Documentación que encontré que no ayuda:
https://ffmpeg.org/ffmpeg-all.html
https://gist.github.com/tayvano/6e2d456a9897f55025e25035478a3a50
También cualquier sugerencia sobre cómo mejorar esto es bienvenida (solo necesito unir secuencialmente 3 mp3).
Gracias.
Respuesta1
Para abordar su título.
Al hacerlo -c copy
se copiará tanto el códec de audio (acodec) como el códec de vídeo (vcodec)
-c copy
es lo mismo que -acodec copy -vcodec copy
-c:a copy
es lo mismo que -acodec copy
.
-c:v copy
es lo mismo que-vcodec copy
y, por supuesto, puede especificar un códec, por ejemplo -vcodec libx264
o-c:v libx264
-c significa códec. Alternativamente puedes escribir -codec https://ffmpeg.org/ffmpeg.html p.ej -codec:a copy
y si no especifica, por ejemplo, -acodec copy
o -acodec blahblah
o -codec:a ...
, elegirá algún códec predeterminado. También puedes decir -vn
que no hay video.https://stackoverflow.com/questions/9913032/how-can-i-extract-audio-from-video-with-ffmpeg para que no copie el video. o -an
sin audioEliminar audio de un archivo de video con FFmpeg
Agregado
La sintaxis de -acodec
y -vcodec
ahora está en desuso. Y se recomienda usar la sintaxis de -c:a
y -c:v
(que son alias de -codec:a
y -codec:v
)
Respuesta2
-c
o -codec
es un selector de transmisión genérico, por lo que puede usarlo para configurar el códec para cualquiera de las transmisiones, ya sea de audio o video.
-acodec
es un subconjunto de esa funcionalidad que se aplica automáticamente a las transmisiones de audio
-acodec:1
es igual -codec:a:1
e indica que está configurando el códec para la segunda transmisión de audio (la primera transmisión de audio es 0).
de su documentación vinculada: -c, -codec
-c[:stream_specifier] códec (entrada/salida, por flujo) -codec[:stream_specifier] códec (entrada/salida, por flujo)
Select an encoder (when used before an output file) or a decoder (when used before an input file) for one or more streams. codec is the
nombre de un decodificador/codificador o una copia de valor especial (solo salida) para indicar que la secuencia no se va a volver a codificar.
-acodec
-códec acodec (entrada/salida)
Configure el códec de audio. Este es un alias para -codec:a.
También hay un -vcodec que funciona de la misma manera para transmisiones de video.
así que para ponerlo todo junto considere este comando del documento
ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT
esto quiere decir que use el códec original para todos los flujos ( -c copy
), pero para la segunda transmisión de video use libx264 ( -c:v:1 libx264
), y para la transmisión de audio número 138 use libvorbis ( -c:a:137 libvorbis
).
así que con -c
puedes controlar todos los tipos de transmisiones, mientras que -acodec
y -vcodec
son solo atajos para los subconjuntos de audio o video de las mismas.