Voglio usare Ubuntu e preferibilmente pacchetti standard come ffmpeg per ruotare un file video .3gp di 90 gradi in qualsiasi direzione. Preferibilmente una riga di comando o uno script Python.
Come posso fare ciò?
Voglio usare Ubuntu e preferibilmente pacchetti standard come ffmpeg per ruotare un file video .3gp di 90 gradi in qualsiasi direzione. Preferibilmente una riga di comando o uno script Python.
Come posso fare ciò?
Risposte:
usando VLC , puoi ruotare il video andando su Strumenti >> Preferenze ...
E seleziona "Tutto" per le impostazioni dello spettacolo. Quindi vai a: Video >> Filtri >> Ruota
Dopo aver impostato il grado desiderato, puoi ruotare selezionando Strumenti> Effetti e filtri> Effetti video> Geometria.
quello che ho testato è mp4 ma credo che VLC possa supportare anche 3gp. spero che sia di aiuto. :)
Dalla riga di comando, con ffmpeg:
ffmpeg -i input.3gp -filter:v transpose=1 \
-c:v libx264 -preset veryfast -crf 22 \
-c:a copy \
-metadata:s:v rotate="" \
output.3gp
transpose=1
ruoterà il video di 90 gradi in senso orario; per ruotare in senso antiorario, utilizzare transpose=2
. Vedere la documentazione di trasposizione per ulteriori informazioni.
-metadata:s:v rotate=""
eliminerà tutti i metadati di rotazione del flusso video esistenti; altrimenti ffmpeg
lo copierà, il che potrebbe far sì che il giocatore applichi un'ulteriore rotazione indesiderata.
Per informazioni sulle impostazioni di codifica video qui, vedere questa guida alla codifica H.264 e la guida alla codifica AAC se si desidera ricodificare l'audio invece della copia in streaming .
Ho risolto un problema simile: avevo un .MOV che è stato messo sottosopra (cioè ruotato di 180 gradi) che volevo sistemare correttamente.
Sul mio sistema Ubuntu 14.04, ho funzionato avconv
essenzialmente con le stesse opzioni della riga di comando indicate ffmpeg
nella risposta di evilsoup . Apparentemente, non supporta transpose
un'opzione per la rotazione di 180 gradi, quindi ho fatto transpose=1
due volte di 90 gradi in senso orario (cioè ).
Quando ho provato le opzioni minime, ho ricevuto un messaggio secondo cui:
encoder 'aac' is experimental and might produce bad results.
Add '-strict experimental' if you want to use it.
e il file di output aveva lunghezza zero, quindi ho aggiunto il file -strict experimental
.
Le linee di comando che funzionavano erano:
avconv -i IMG_orignl.MOV -filter:v 'transpose=1' -strict experimental IMG_interm.MOV
avconv -i IMG_interm.MOV -filter:v 'transpose=1' -strict experimental IMG_result.MOV
Il risultato è stato soddisfacente, con effetti collaterali inspiegabili:
Non che mi lamenti: sono desiderabili; Non capisco perché siano nati ...
avconv
righe di comando nella loro interezza, e non solo le differenze rispetto al ffmpeg
comando. La tua risposta dovrebbe essere autosufficiente; l'altra risposta potrebbe andare via. (3) Buona fortuna!
-filter:v transpose=1 …
.
Ci sono stati alcuni cambiamenti in libav dal momento in cui questa domanda è stata originariamente risolta. Nel tentativo di mantenere questo attuale e utile fornirò quanto segue:
È possibile farlo con le versioni recenti di ffmpeg
e avconv
utilizzando il filtro video di trasposizione.
avconv -i inputfile -vf transpose=clock outputfile
per rotazione oraria.
in ffmpeg la sintassi è la stessa.
ffmpeg -i inputfile -vf transpose=clock outputfile
dove inputfile è il file video di input supportato e outputfile è il file di output desiderato.
Per la rotazione antioraria sostituire l' orologio con cclock
Ecco un estratto dalla documentazione:
‘cclock_flip’
Rotate by 90 degrees counterclockwise and vertically flip. (default)
‘clock’
Rotate by 90 degrees clockwise.
‘cclock’
Rotate by 90 degrees counterclockwise.
‘clock_flip’
Rotate by 90 degrees clockwise and vertically flip.
fonti:
https://libav.org/avconv.html#transpose
https://ffmpeg.org/ffmpeg-filters.html#transpose-1
Test su Ubuntu 14.04.5 LTS, Ubuntu 16.04, Ubuntu 18.04
ffmpeg
ha funzionato per me (non ci ho provato avconv
)
ffmpef
includono molti argomenti inutili, grazie!