Domanda

Ho un sito che consente alle persone di caricare file video di grandi dimensioni in vari formati (avi, mp4, mkv e flv). Devo generare un "campione" di 1 minuto dal file più grande che è stato caricato e l'esempio deve essere nello stesso formato, avere le stesse dimensioni dei frame e la velocità in bit del file originale. C'è un modo per tagliare semplicemente una sezione del file in un nuovo file? Preferibilmente in ffmpeg (o in qualsiasi altro strumento se ffmpeg è impossibile).

È stato utile?

Soluzione

Per prima cosa ti consigliamo di capire come funzionano effettivamente i file video. Ecco una serie di tutorial che spiegano che: Overly Guida semplicistica al video su Internet .

Quindi, puoi provare una varietà di strumenti che potrebbero aiutarti a tagliare un campione. Uno è flvtool (se il tuo input è FLV) o FFmpeg . Con FFmpeg puoi specificare l'ora di inizio e l'ora di fine e tenterà di ritagliare esattamente ciò che chiedi (ma dovrà trovare il fotogramma chiave più vicino per iniziare a tagliare).

Ecco il comando FFmpeg per leggere un file chiamato input.flv, avviare 15 secondi nel video, quindi tagliare i successivi 60 secondi, ma altrimenti mantenere gli stessi parametri per il codice audio e il codec video e scriverlo su un file di output:

ffmpeg -i input.flv -ss 15 -t 60 -acodec copy -vcodec copy output.flv

Infine, se vuoi, puoi scrivere il codice del computer in C o C ++ (usando le librerie libav di FFmpeg) o Java (usando Xuggler ) per farlo programmaticamente, ma è piuttosto avanzato per il tuo caso d'uso.

Altri suggerimenti

In caso di problemi con la sincronizzazione automatica di video e auto come me, potrebbe essere utile quanto segue (disponibile su un altro sito Web):

ffmpeg -sameq -i file.flv -ss 00:01:00 -t 00:00:30 -ac 2 -r 25 -copyts output.flv

Come osserva Evan, l'approccio nella risposta accettata può comportare la perdita della sincronizzazione A / V. Tuttavia, la sua soluzione non è corretta perché -sameq è stato rimosso.

Come indicato in https://trac.ffmpeg.org/wiki/Seeking il < L'opzione code> -ss dovrebbe precedere -i non dopo. Ciò ha risolto il problema per me.

L'opzione successiva è usare l'opzione -fs . Esempio:

ff -i ip.mkv -fs 500M -c copy ~/Movies/reservoir/carbohydrates.mkv

Estrai 500 megabyte (500 × 1000 × 1000 byte + "sovraccarico") dalla fonte selezionata. -Basato sulla dimensione dei file, come si può dire

Un amore. E rispetto.

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