El comando ffmpeg convierte una parte de un archivo de video en un archivo de audio

El comando ffmpeg convierte una parte de un archivo de video en un archivo de audio

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_parameterstasas 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.


-vno-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 -vny -anno 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-mapEsta opción puede parecer más complicada pero es más flexible y útil. Por ejemplo, -vnle dice a ffmpeg que solo omita la(s) transmisión(es) de video, pero usando unespecificador de flujo -mapPuede 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:vun especificador de transmisión que le dice a ffmpeg que solo incluya desde la primera entrada 0las transmisiones de video v. Esto se puede ampliar más. Usar 0:v:0medios first input:video:first video streamy 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:1mapearía todas las transmisiones excepto la segunda transmisión de audio. -map 0le dice a ffmpeg que incluya todas las transmisiones de la entrada 0(la primera entrada) y -map -0:a:1luego 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

información relacionada