2013-03-11 10 views
24

Ho un file video. Lo apro con l'utility MediaInfo e posso vedere un flusso video in questo file con attributo Rotazione 90 (insieme ad altri attributi come CodecID, bitrate, ecc.).Posso impostare il campo di rotazione per un flusso video con FFmpeg?

Ora ho un altro file video che non ha quell'attributo Rotazione 90, non ha affatto l'attributo Rotazione.

Posso utilizzare ffmpeg.exe in modo che produca il file di output con l'attributo Rotation 90 aggiunto e senza altre modifiche? Non voglio davvero fare alcuna trasformazione, voglio solo impostare l'attributo Rotazione.

Ho provato l'opzione -metadata inutilmente.

risposta

57

Questo funziona con la recente FFmpeg:

ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output.mp4 

Ciò stream copy i flussi di bit, quindi non la codifica viene eseguita. Qui vengono modificati solo i metadati del primo stream video (v:0) e il player mostrerà il video in modo ruotato. (Non tutti i lettori supportano questo.)

Note aggiuntive:

  • Se si vuole "fisicamente" ruotare il video, si deve use the transpose filter. Il filtraggio richiederà la ricodifica, quindi dovrai rimuovere -c copy.

  • Se si omette -c copy e si desidera codificare anziché solo re-muxing, quindi ffmpeg ruoterà automaticamente il video se sono già presenti metadati di rotazione. È possibile disabilitare questo comportamento con -noautorotate.

+0

Grazie mille, ha funzionato! –

+0

Ho compilato l'ultimo codice di ffmpeg e non vi è alcun errore nell'esecuzione di questo comando ma il video non è ancora in grado di ruotare.pls help –

+1

@MohitChauhan Si noti che questo non ruota effettivamente il video. Imposta solo il flag di rotazione, che fa in modo che alcuni giocatori lo mostrino in modo ruotato. Se hai un problema con un comando, fai una domanda su [SU] e mostra il comando e l'output completo della console. – slhck

Problemi correlati