¿Cómo puedo recortar un video con ffmpeg?

172

Tengo un archivo MP4 de una grabación de pantalla que necesito recortar. ¿Cómo puedo lograr esto sin usar herramientas costosas como Adobe Premier o Final Cut? Prefiero ffmpegporque lo he usado antes.

Stephenwade
fuente

Respuestas:

264

Usa el cropfiltro :

ffmpeg -i in.mp4 -filter:v "crop=out_w:out_h:x:y" out.mp4

Donde las opciones son las siguientes:

  • out_w es el ancho del rectángulo de salida
  • out_h es la altura del rectángulo de salida
  • xy yespecifique la esquina superior izquierda del rectángulo de salida

Imagen original

imagen original
Imagen original de 320x240

Ejemplo 1

80x60

Para recortar una sección de 80 × 60, comenzando desde la posición (200, 100):

ffmpeg -i in.mp4 -filter:v "crop=80:60:200:100" -c:a copy out.mp4
  • El audio se copia en este ejemplo, por lo que se evita volver a codificar.

Ejemplo 2

cuarto inferior derecho

Para recortar el cuarto inferior derecho:

ffmpeg -i in.mp4 -filter:v "crop=in_w/2:in_h/2:in_w/2:in_h/2" -c:a copy out.mp4

Esto es lo mismo que:

ffmpeg -i in.mp4 -filter:v "crop=320/2:240/2:320/2:240/2" -c:a copy out.mp4

Que es lo mismo que:

ffmpeg -i in.mp4 -filter:v "crop=240:120:240:120" -c:a copy out.mp4
  • Puede consultar el tamaño de la imagen de entrada con in_wy in_hcomo se muestra en este primer ejemplo. El ancho y la altura de salida también se pueden usar con out_wy out_h.

Ejemplo 3

20 píxeles desde la parte superior y 20 desde la parte inferior

Recorte 20 píxeles desde la parte superior y 20 desde la parte inferior:

 ffmpeg -i in.mp4 -filter:v "crop=in_w:in_h-40" -c:a copy out.mp4
  • El filtro se centrará automáticamente el cultivo si xy yse omiten, tal como en este ejemplo.

Vista previa

Puede tomar un cultivo (je je) y obtener una vista previa en vivo con ffplay:

ffplay -i input -vf "crop=in_w:in_h-40"

De esta manera, puede experimentar y ajustar su recorte sin necesidad de codificar, ver y repetir.

Notas

  • crop filtro de documentación

  • El codificador predeterminado para MP4 es libx264(video H.264) o mpeg4( video MPEG-4 Parte 2) dependiendo de su ffmpegcompilación. Consulte FFmpeg Wiki: Guía de codificación de video H.264 para obtener más información.

  • En lugar de recortar y volver a codificar, considere recortar durante la reproducción. Esto es posible con cualquier jugador que valga la pena usar.

  • Antigua ffmpegconstruye utilizado -croptop, -cropbottom, -cropleft, -croprightopciones en lugar del cropfiltro. Si este es el caso para usted, entonces obtenga un modernoffmpeg . El desarrollo es muy activo y no hay razón para usar una antigüedad.

Geppettvs D'Constanzo
fuente
2
Esto funciona con 'avconv' ahora.
Joce
Tengo un 1923x1080 y quiero 1920x1080. Esta es la recomendación que probé: /Users/kukodajanos/Workspace/ffmpeg -i /Users/kukodajanos/Desktop/video_640x480-2.mp4 -filter:v "crop=1920:1080:0:0" -c:a copy /Users/kukodajanos/Desktop/video_640x480-4.mp4pero la película original ha sido devuelta.
János
@Joce JFYI avconv es parte de libav - un tenedor de ffmpeg
andrybak
1
Vale la pena mencionar que esta técnica (con el cropfiltro) vuelve a codificar el video, vea stackoverflow.com/questions/33378548/… si la re-codificación es importante para usted
antes del
1
editado para cambiar el desactualizado -filter:val más actualizado y más simple de escribir -vf. ¡Salud!
Élder Geek