
Tengo un archivo de vídeo (duración 1 hora). Necesito convertir cualquier parte del archivo de video (30 min) en un archivo de audio.
ffmpeg -ss 00:30:00 -t 01:00:00 -i /opt/a.mp4 -vcodec copy -acodec copy /opt/b.mp4
entonces usé
ffmpeg -ss 00:30:00 -t 01:00:00 -i /opt/a.mp4 -acodec copy /opt/b.mp4
Pero aún puedo ver el video junto con el audio. solo necesito archivos de audio
Respuesta1
Si solo necesita audio (espero haberlo entendido bien), entonces no necesita el primer paso en absoluto. Si utiliza:
ffmpeg -ss 00:30:00 -t 01:00:00 -i /opt/a.mp4 -vn -acodec copy /opt/b.mp3
lo haráproporcionóEl códec de audio original era mp3. Si no, puedes forzar la recodificación de todos modos:
ffmpeg -ss 00:30:00 -t 01:00:00 -i /opt/a.mp4 -vn -acodec libmp3lame ...other_parameters.. /opt/b.mp3
Tendrán other_parameters
tasas de bits, etc.
Respuesta2
Existen dos métodos principales para obtener sólo el vídeo o el audio de un archivo que contiene ambos. Por defecto elselección de flujoEl comportamiento en ffmpeg seleccionará una secuencia por tipo de secuencia. Tenga en cuenta que las entradas pueden contener varios tipos de secuencias: vídeo, audio, subtítulos y datos. Algunas entradas pueden incluso contener varios de cada uno de estos tipos de flujos; como dos secuencias de vídeo.
-vn
o-an
Estas opciones le dicen a ffmpeg que omita el video ( -vn
) o el audio ( -an
).
Para omitir el vídeo y copiar audio:
ffmpeg -i input -vn -codec:a copy output.mka
Para omitir el audio y copiar el vídeo:
ffmpeg -i input -an -codec:v copy output.mkv
Estos ejemploscopia de flujoel flujo deseado. Esto significa que ffmpeg simplemente lo volverá a mezclar en lugar de volver a codificarlo. Esto es muy rápido y, dado que esencialmente se trata de "copiar y pegar", no afectará la calidad.
El uso de
-vn
y-an
no omitirá otras transmisiones que puedan estar presentes, como subtítulos o transmisiones de datos, pero los formatos de solo audio los ignorarán de todos modos.
-map
El-map
Esta opción puede parecer más complicada pero es más flexible y útil. Por ejemplo, -vn
le dice a ffmpeg que solo omita la(s) transmisión(es) de video, pero usando unespecificador de flujo -map
Puede decirle a ffmpeg que omita todo excepto la secuencia deseada.
Para copiar sólo el vídeo:
ffmpeg -i input -map 0:v -codec copy output.mkv
Para copiar solo el audio:
ffmpeg -i input -map 0:a -codec copy output.mka
Es
0:v
un especificador de transmisión que le dice a ffmpeg que solo incluya desde la primera entrada0
las transmisiones de videov
. Esto se puede ampliar más. Usar0:v:0
mediosfirst input:video:first video stream
y sería útil si su entrada contuviera múltiples transmisiones de video y solo quisiera la primera. Consulte la salida de la consola ffmpeg para conocer el orden de las transmisiones en su entrada.También puede utilizar asignaciones negativas. El uso
-map 0 -map -0:a:1
mapearía todas las transmisiones excepto la segunda transmisión de audio.-map 0
le dice a ffmpeg que incluya todas las transmisiones de la entrada0
(la primera entrada) y-map -0:a:1
luego le dice a ffmpeg que ignore la primera secuencia de audio de la primera entrada.
Respuesta3
La primera parte es correcta. En la segunda parte, extraiga el audio solo para el archivo b.mp4.
ffmpeg -i b.mp4 -vn -acodec copy audio_b.mp3