Domanda

Sto cercando un modo per ruotare i video girati con il mio Nexus 4 sul mio sistema Debian Wheezy.I video sono girati in modalità verticale e vorrei ruotarli in modalità orizzontale.Preferibilmente la rotazione è guidata dalla riga di comando.

Ho trovato diverse domande precedenti che suggeriscono una buona soluzione ma non riesco a farla funzionare.

Per cominciare c'era questa domanda:Rotazione di video con FFmpeg

Ma indica che ffmpeg è obsoleto e che dovrei usare avconv.Ho trovato questa domanda che descrive in dettaglio la strada da percorrere.https://askubuntu.com/questions/269429/how-can-i-rotate-video-by-180-degrees-with-avconv

Questo mi ha fatto usare il seguente comando:

avconv -i original.mp4 -vf "transpose=1" -codec:v libx264 -preset slow -crf 25 -codec:a copy flipped.mp4

Tuttavia, questo è estremamente lento (l'ultimo test mi ha richiesto più di 6 ore per meno di 3 minuti di riprese) e non produce un film riproducibile.Ricevo anche un errore nell'output di registrazione che indica Mb Rate> limite di livello.

C'è un problema qui con la ricodifica?Dovrei prima ricodificare i video dal mio telefono con un'altra codifica più "funzionante" prima di applicare le rotazioni?Oppure mi sto perdendo un altro punto importante?

È stato utile?

Soluzione

Se vuoi solo modificare i metadati tali che i mediaplayer che considerano il flag riproducono il file ruotato, prova qualcosa come:

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

Come trovato altrove su Stackoverflow .

Altri suggerimenti

Rotazione= 0 Risolto il mio problema.Ho iniziato a registrare video in modalità verticale, ha realizzato il mio errore e trasforma immediatamente il mio telefono per orizzontale per continuare a registrare.Il mio iPhone aveva segnato il video come ritratto per l'intero video.

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

fissato.

FFmpeg e programmi simili modificare i metadati anche con il -map_metadata opzione. exiftool può leggere la matrice di rotazione e il flag di rotazione e, dalla versione 10.89, anche scriverli come descritto di seguito.

Per ottenere un vero lossless (incl.metadati), non sono riuscito a trovare una soluzione, quindi ho preso un editor esadecimale (ad es HxD) e analizzato i file video ruotati.

Vera rotazione senza perdita di MP4:

  • apri mp4 con l'editor esadecimale e cerca vide per trovare i metadati della traccia video
  • dovresti vedere alcune righe sopra (per i miei file principalmente 9, a volte 12). trak...\tkhd
  • nel mezzo dovrebbe esserci un @ segno (HEX 40)
  • nelle due righe precedenti è memorizzata la matrice di rotazione
  • nessuna rotazione:

    00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    40
    
  • 180°:

    FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    40
    
  • 90° in senso orario:

    00 00 00 00 00 01 00 00 00 00 00 00 FF FF 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    40 
    
  • 90° antiorario:

    00 00 00 00 FF FF 00 00 00 00 00 00 00 01 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    40
    

Modifica il file quando ne hai bisogno e dovrebbe essere ruotato nei giocatori che supportano la bandiera di rotazione (la maggior parte dei giocatori attuali lo fa).

Nel caso in cui il tuo video contenga audio stereo, questo ovviamente non viene invertito, quindi nel caso in cui desideri che l'audio corrisponda alla rotazione del video (180°), devi invertire i canali sinistro e destro.

Ci sono molte cose che hai toccato nella tua domanda:

    .
  1. Non c'è quasi alcuna possibilità che tu possa ruotare senza ricodere. L'eccezione a tale regola (MJPEG Codec) è già stata indicata, ma è improbabile che tu lo stia usando, quindi va oltre lo scopo di questa domanda. Diremo che la ragione per questa abilità è che JPEG può essere convertito tramite metadati. Quindi se sarai in grado di trovare un contenitore che ha la rotazione dei metadati, sarai in grado di ruotare, ma nessuno esiste (o sono abbastanza spalancati) finora.
  2. Se ci sono volute le ore per ruotare e rieseguire 3 minuti del video, il problema può mentire su una risoluzione enorme . E voglio dire enormi ! Puoi fornire l'output del avprobe original.mp4 in modo che possa essere accertato.
  3. Libav contro i dibattiti FFMpeg sono molto controproductivi (puoi vedere che dalla quantità di FUD ha già pubblicato qui). Fondamentalmente ciò che è successo è stato una divisione del progetto con alcuni sviluppatori che vanno in un modo e nell'altro, il fatto che il progetto FFMpeg sia riuscito a mantenere il nome è solo un colpo di fortuna e non ha senso chiamare un progetto originale e un altro forcella. Le differenze tra i progetti sono per lo più nello stile di sviluppo e sulla filosofia. Se ti caratterizzeresti FFMPEG come più open source e lagav come software più libero, non saresti tutto ciò che sbaglia. Le persone razionali sperano che alla fine gli sviluppatori arriveranno ai loro sensi, e forse non unire i progetti, ma collaborare fino alla larga misura. Quando Ubuntu uscì in origine, in ogni chat Debian Gnu / Linux c'erano enormi messaggi lungo la linea di "Ubuntu non è Debian !!!!!!!", ma ora la situazione si è calmata e entrambe le parti sono abbastanza felici con uno un altro.

Questa risposta è semplicemente un riassunto dei commenti forniti da Lordneckbeard.

rotante senza codifica

rotante senza ri-codifica non è possibile a meno che:

    .
  • Il tuo input è mjpeg
  • Ruota sulla riproduzione

Ruota con la codifica utilizzando il FFMPEG

corretto

Per comprendere correttamente i passaggi necessari per questo, si dovrebbe iniziare a leggere o almeno skimming questa domanda:

quali sono le differenze e somiglianze tra ffmpeg, libav e avconv?

Summary: AVCONV è un forcella di FFMPEG, Debian Manutener ha scelto AvConv, devi compilare il FFMPEG corretto dalla sorgente.

Il passo successivo sarebbe compilato il corretto ffmpeg dalla sorgente come è dettagliato qui:

Guida della compilazione di ffmpeg per Debian

Il passaggio finale utilizza i comandi trovati in altri messaggi:

Come capovolgere un video 180 ° (verticale / capovolto) con ffmpeg? o Video rotanti con ffmpeg

Summary: ffmpeg -vfilters "rota= 90" -i input.mp4 output.mp4

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top