Converti un video a una dimensione dello schermo fissa ritagliandolo e ridimensionandolo


14

Ho provato a capirlo da solo, ma la miriade di opzioni mi sconcerta.

Voglio usare idealmente o ffmpego mencoder(o qualcos'altro, ma quei due che so di aver funzionato) per convertire qualsiasi video in arrivo in una dimensione dello schermo fissa.

Se il video è più largo o troppo corto, quindi ritaglia il video al centro. Se non ha le dimensioni giuste, ridimensiona verso l'alto o verso il basso per renderle esattamente le dimensioni fisse dello schermo.

L'ultima cosa di cui ho bisogno è 720x480 in un AVI XVid con una traccia audio MP3.

Ho trovato molte pagine che mostrano come ridimensionare alla massima risoluzione, ma ho bisogno che il video sia esattamente quella risoluzione (con parti extra tagliate, senza barre nere).

Qualcuno può dirmi di eseguire la riga di comando - o almeno portarmi un po '/ quasi del tutto lì? Se deve essere più righe di comando (esegui X per ottenere la risoluzione, esegui questo calcolo e quindi esegui Y con l'output di quel calcolo) posso scriverlo.

Risposte:


22

Qualcosa del genere dovrebbe funzionare con i parametri corretti per ciascun caso:

Nota: la risposta originale è stata pubblicata in questo link: come posso ritagliare un video con ffmpeg? che originariamente pubblicato da me e modificato più volte al fine di aggiornarlo alle ultime opzioni nelle versioni più recenti di ffmpeg. Mille grazie a Slhck , Jonathan. , Anton Rudeshko , LordNeckbeard e futuri manutentori.


Nelle versioni recenti di FFmpeg, utilizzare il cropfiltro :

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

Dove le opzioni sono le seguenti:

  • out_w è la larghezza del rettangolo di output
  • out_h è l'altezza del rettangolo di output
  • xe yspecifica l'angolo in alto a sinistra del rettangolo di output

Immagine originale

immagine originale
Immagine originale 320x240

Esempio 1

80x60

Per ritagliare una sezione 80 × 60, partendo dalla posizione (200, 100):

ffmpeg -i in.mp4 -filter:v "crop=80:60:200:100" -c:a copy out.mp4
  • In questo esempio l'audio viene copiato in streaming , quindi si evita la ricodifica.

Esempio 2

quarto in basso a destra

Per ritagliare il quarto in basso a destra:

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

Questo è lo stesso di:

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

Che è lo stesso di:

ffmpeg -i in.mp4 -filter:v "crop=240:120:240:120" -c:a copy out.mp4
  • È possibile fare riferimento alla dimensione dell'immagine di input con in_we in_hcome mostrato in questo primo esempio. La larghezza e l'altezza dell'output possono essere utilizzate anche con out_we out_h.

Esempio 3

20 pixel dall'alto e 20 dal basso

Ritaglia 20 pixel dall'alto e 20 dal basso:

 ffmpeg -i in.mp4 -filter:v "crop=in_w:in_h-40" -c:a copy out.mp4
  • Il filtro centrerà automaticamente il ritaglio se xe yviene omesso come in questo esempio.

Anteprima

Puoi prendere un ritaglio (eh eh) e visualizzarlo in anteprima con ffplay:

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

In questo modo puoi sperimentare e regolare il ritaglio senza la necessità di codificare, visualizzare, ripetere.

Appunti

  • crop documentazione del filtro

  • L'encoder predefinito per MP4 è libx264(video H.264) o mpeg4(video MPEG-4 parte 2) a seconda della ffmpegbuild. Vedi FFmpeg Wiki: Guida alla codifica video H.264 per maggiori informazioni.

  • Invece di ritagliare e ricodificare, considerare il ritaglio durante la riproduzione. Questo è possibile con qualsiasi giocatore che valga la pena usare.

  • Antica ffmpegcostruisce usato -croptop, -cropbottom, -cropleft, -croprightopzioni al posto del cropfiltro. Se questo è il tuo caso, procurati un modernoffmpeg . Lo sviluppo è molto attivo e non c'è motivo di usare un oggetto antico.


Punti extra per l' anteprima con il ffplayquale ffmpegin pratica è possibile utilizzare per ritagliare le dimensioni dello schermo video.
SpeedCoder5
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.