Command Palette

Search for a command to run...

Unire due clip è una ricodifica, non una pasta

Unire due clip è una ricodifica, non una pasta

T
Toolz Team
|Oct 21, 2026|18 min letto
Preferisci Toolz.dev su Google

Parte della raccolta Editor

Editor video

Unisci diverse clip in un unico video, taglia ognuna di esse, riordinale e imposta la risoluzione, la velocità e l'audio Tutto viene eseguito nel tuo browser, quindi non viene caricato nulla.

Usa il Editor video

Mettere due file video end-to-end suona come l'operazione più economica al mondo, e per circa cinque minuti ci ho creduto. Quindi ho unito una clip 1280x720 a 30 fps a una clip 640x480 a 25 fps utilizzando il metodo più veloce disponibile, che copia i flussi e non riscrive nulla. ha prodotto un file. Il file ha affermato di essere undici virgola nove sei secondi di lunghezza quando le due clip si sommano a undici, il contenitore diceva 1280x720 mentre la seconda metà del flusso era 640x480 e il muxer ha stampato un avviso sulle timestamp riscritte per ogni fotogramma della seconda clip. Tutto ciò che riguarda l'unione video deriva dal perché ciò accade.

tl; dr: Il join a buon mercato funziona solo quando entrambi i file sono già d'accordo su codec, risoluzione, frame rate e base temporale, che il filmato di due dispositivi non lo fa mai. L'onesto percorso decodifica entrambi e codifica un nuovo file, che è più lento e produce qualcosa che viene riprodotto. Misurato qui: il metodo di copia ha riportato 11.996 secondi per 11 secondi di metraggio e ha dichiarato la risoluzione errata; la ricodifica ha prodotto esattamente 11.000 secondi con un singolo 1280x720 coerente in 0,63 secondi. Clip di diverse dimensioni devono essere montate prima in un telaio o il join viene rifiutato a titolo definitivo. la videorenante Fa tutto nel browser, fino a otto clip e trenta minuti.

Perché due clip non possono essere semplicemente bloccate insieme?

Perché un file video non è un flusso di immagini con un'intestazione su di esso. È un contenitore che contiene flussi codificati e la codifica porta lo stato.

H.264 si comprime descrivendo la maggior parte dei frame come differenze rispetto ad altri frame. Un fotogramma chiave è da solo; tutto dopo è stato definito rispetto a quello che è venuto prima, fino al fotogramma chiave successivo. Il decoder ha anche bisogno dei set di parametri del flusso, che descrivono la risoluzione, il formato del colore e il profilo, e contiene una base temporale che converte i numeri su ogni pacchetto in secondi.

Due file realizzati da due dispositivi non concordano su nulla di tutto ciò. Risoluzione diversa significa diversi set di parametri. Frequenza di fotogrammi di solito significa una diversa base di tempo. Anche due clip dello stesso telefono, registrate a distanza di un anno, possono differire perché l'app della fotocamera ha cambiato le impostazioni del codificatore.

Concatenando i byte ti dà un flusso il cui decoder viene detto una cosa nell'intestazione e ne ha consegnato un'altra a metà. A volte un giocatore se la cava. Spesso mostra la prima clip e si ferma, o riproduce la seconda come rumore colorato.

Cosa produce il metodo FAST?

un file, un mucchio di avvertimenti e una durata che è sbagliata.

ffmpeg Demuxer concat Con la copia in streaming è il metodo che ogni "basta unisciti a loro" la risposta online raccomanda, ed è davvero lo strumento giusto quando gli input corrispondono. Puntato alle mie due clip non corrispondenti, esce con successo, ed ecco cosa si restituisce:

Misurare atteso prodotto
durata 11.000 s 11.996 s
Delibera dichiarata Un valore, corretto 1280x720 per un flusso che diventa 640x480
Avvisi di timestamp nessuno uno per fotogramma della seconda clip

Gli avvertimenti dicono tutti la stessa cosa:

Non-monotonic DTS; previous: 90981, current: 76133; changing to 90982.
This may result in incorrect timestamps in the output file.

I timestamp della seconda clip si riavviano da zero, come dovrebbero all'interno del proprio file, e il muxer non scriverà un flusso i cui timestamp vanno all'indietro. Quindi ne inventa di nuovi, un fotogramma alla volta, e la differenza accumulata tra il tempismo reale e il tempismo inventato è da dove viene il secondo extra.

FFmpeg può ancora decodificare entrambe le metà in seguito, perché FFmpeg è insolitamente tollerante. un browser non lo è. Questo è il file che funziona bene sulla tua macchina e mostra un rettangolo nero per un visualizzatore.

Quanto costa l'adesione tramite un grafico del filtro e cosa acquista?

Costa una decodifica completa e una codifica. acquista un file corretto.

Invece di copiare i flussi, ogni input viene decodificato in frame, i frame vengono tagliati e uniti all'interno di un grafico filtrante e un nuovo flusso viene codificato dal risultato. Ogni frame passa attraverso un decoder e un codificatore, che è un vero lavoro.

Quello che acquista è che l'output ha un codec, una risoluzione, un frame rate e un set continuo di timestamp, perché è stato tutto codificato contemporaneamente da zero. Sulle stesse due clip:

Misurare Metodo copia Grafico filtrante
durata 11.996 s 11.000 s
Risoluzione dichiarato 1280x720, diventa 640x480 1280x720 tutto
ossatura 305 305
Tempo di esportazione istante 0,63 s
Dimensione più piccolo 2,1 MB

0,63 secondi di lavoro per 11 secondi di output, su un desktop in esecuzione nativamente FFmpeg. In una scheda del browser tramite WebAssembly è molte volte più lento, che è il commercio onesto e il motivo per cui il conteggio delle clip è limitato.

Perché ogni clip ha bisogno di ribasamenti sui timestamp?

Perché la concatenazione in un grafico filtrante unisce i flussi e i timestamp di un flusso sono assoluti.

I frame di ogni clip arrivano tempi di trasporto misurati dall'inizio del proprio file. Taglia una sezione dal centro di una clip e quei fotogrammi dicono ancora "Questo accade a 42 secondi". Uniscili a una clip che termina a 6 secondi e avrai un flusso che salta da 6 a 42, con 36 secondi di niente in mezzo.

setpts=PTS-STARTPTS Sottrae l'inizio di ogni clip da ogni fotogramma, quindi ogni clip inizia a zero prima di essere unito. L'equivalente audio è asetpts. Senza di essi l'output riproduce la prima clip, poi un congelamento lungo, poi il secondo. È il singolo errore più comune nei comandi di join ffmpeg scritti a mano, ed è silenzioso: il file è valido e la durata è semplicemente errata.

Cosa succede quando le clip sono di dimensioni diverse?

L'unione viene rifiutata e fino a poco tempo quel rifiuto era l'intera storia qui.

la filtro concat Confronta i suoi input e non verrà eseguito se le dimensioni del video o il rapporto di aspetto del campione non sono d'accordo:

Input link in0:v0 parameters (size 640x480, SAR 1:1) do not match the
corresponding output link in0:v0 parameters (1280x720, SAR 1:1)
Failed to configure output pad on Parsed_concat_8

Questo è un aborto, non un avviso: non viene prodotto alcun file. Due telefoni, o una clip del telefono e una registrazione dello schermo, sono esattamente il caso che lo attiva, ed è il motivo normale per cui qualcuno si unisce a clip.

L'audio non ha bisogno di tale aiuto, il che vale la pena sapere perché è controintuitivo. Lo stesso grafico ha unito una traccia mono da 44,1 kHz a una stereo a 48 kHz senza lamentele e ha prodotto un file esatto di 11.000 secondi. Solo il lato video è severo.

La soluzione è regolare un telaio per l'intera linea temporale e inserirlo in ogni clip prima di unirti. L'altezza deriva dalla risoluzione di output che hai scelto, o dalla prima clip quando mantieni la risoluzione della sorgente, e la larghezza segue le proporzioni della clip in modo che una linea temporale del filmato ritratti rimanga verticale. Ogni clip viene quindi ridimensionata per adattarsi all'interno di quel telaio e imbottita per riempirla:

scale=1280:720:force_original_aspect_ratio=decrease,
pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1

Montare piuttosto che riempire significa che una clip di una forma diversa viene posta in lettere invece di allungata, che è il minore dei due mali quando una clip 4:3 incontra una sequenza temporale 16:9. setsar=1 non è decorazione: il filtro confronta le proporzioni del campione e le dimensioni dei pixel, quindi due clip possono avere le stesse dimensioni e comunque essere rifiutate.

Entrambe le dimensioni sono arrotondate a numeri pari, perché H.264 in 4:2:0 memorizza il colore a metà risoluzione in ciascuna direzione e non può codificare una larghezza o un'altezza dispari.

Perché solo otto clip e trenta minuti?

Perché ogni clip costa un passaggio di decodifica all'interno di una scheda del browser e la scheda ha una quantità di memoria fissa.

Otto ingressi significano otto decoder in esecuzione sullo stesso grafico del filtro, più l'encoder, oltre a tutti i file di origine conservati in memoria perché non c'è un disco da cui scorrere. Trenta minuti di output sono il punto passato che la codifica richiede abbastanza tempo da far presumere alla pagina che le persone si appendano.

Nessuno dei due limiti è una legge del formato. Entrambi sono la linea passata che la build del browser smette di essere piacevole e vengono dichiarati in anticipo anziché scoperti quando una scheda si blocca quaranta minuti in un'esportazione. Viene rifiutata anche una clip più breve di un decimo di secondo, perché al di sotto di essa non contribuisce frame ed errori FFmpeg anziché avvisa.

Per qualsiasi cosa più grande, questo è lo strumento sbagliato e un editor desktop è quello giusto.

In che modo il taglio qui è diverso dal trimmer?

Il taglio all'interno di un join è accurato al telaio e non costa nulla in più.

il dedicato videosaccolo Offre una modalità veloce che copia il flusso e può tagliare solo un fotogramma chiave, motivo per cui l'inizio di un assetto a volte arriva fino a dieci secondi prima. La sua guida copre perché in dettaglio.

Quel commercio non esiste qui, perché l'esportazione sta ricodificando comunque tutto. Il rifinitura avviene all'interno del grafico del filtro, su fotogrammi decodificati, quindi un taglio a 4,3 secondi è un taglio a 4,3 secondi. Ottieni la precisione del frame gratuito, come effetto collaterale del costo che stai già pagando.

Quindi, se vuoi tagliare una clip e nient'altro, la modalità veloce del trimmer è molto più veloce. Se ti unisci a qualcosa, taglia qui.

Cosa fa un cambio di velocità all'audio?

Deve essere gestito separatamente e l'aritmetica non è la stessa del video.

La velocità video è un'operazione di timestamp: setpts=PTS/2 Dimezza il tempo di presentazione di ogni fotogramma e le cornici stesse non vengono toccate. L'audio non può funzionare in questo modo, perché la riproduzione di campioni due volte più velocemente aumenta il tono di un'ottava. la atempo Filtra invece i ricampionamenti, mantenendo il passo e modificando la durata.

atempo Accettato solo da 0,5 a 2,0 in un solo passaggio per la maggior parte della sua vita, quindi viene costruito un cambio 4X come due passaggi 2x e una modifica di 0,25 volte come due passaggi da 0,5 volte. Le build attuali hanno alzato il soffitto e FFmpeg 8.1 riporta un intervallo da 0,5 a 100. misurato su una clip, una singola atempo=4 e un incatenato atempo=2,atempo=2 Atterrato a 11 millisecondi di distanza.

La catena è ancora ciò che viene costruito, perché il nucleo di WebAssembly viene recuperato in fase di esecuzione anziché bloccato a una versione e moltiplicare i passaggi è corretto su ogni build che abbia mai spedito il filtro. La gamma di velocità offerta, da 0,25 a 4 volte, è dove il risultato è ancora una modifica piuttosto che una novità.

MP4 o WebM?

MP4 a meno che tu non abbia un motivo specifico e il motivo è quasi sempre una licenza piuttosto che un argomento di qualità.

mp4 Webm
video codec H.264 VP9
codec audio AAC opus
gioca dentro tutto browser, i giocatori più moderni
codificare la velocità in una scheda più a lungo notevolmente più lento
Taglia a qualità simile maggiore più piccolo

VP9 produce file più piccoli per la stessa qualità percepita, ed è privo di royalty, che conta per alcuni progetti e non per altri. FFmpeg Guida alla codifica VP9 è schietto sul costo della velocità. Quello che non è è veloce. Il percorso WebM qui funziona a un CRF più alto con una scadenza in tempo reale e cpu-used 5, che sono impostazioni che un desktop encode prenderebbe incurante, perché senza di esse una codifica VP9 in una scheda richiede abbastanza tempo per sentirsi rotto.

Il percorso MP4 utilizza -preset veryfast al CRF 23 con yuv420p, più -movflags +faststart, che sposta l'indice sulla parte anteriore del file in modo che venga riprodotto durante il download anziché solo dopo.

Quanto sarà grande l'esportazione e quanto tempo ci vorrà?

La dimensione è prevedibile dalla risoluzione. Il tempo non è prevedibile da nulla.

Poiché l'esportazione ricodifica sempre, le dimensioni del file di origine ti dicono molto poco del risultato. La stima mostrata invece deriva dall'altezza di uscita: circa 5 Mbps a 1080p, 2,5 a 720p, 1,2 al di sotto di quella, con WebM che atterra circa il 70% della cifra MP4 e l'audio che aggiunge 128 kbps a meno che non si muova.

Questa è una stima ed è etichettata come una, perché il contenuto conta più di qualsiasi formula. Un'intervista statica e una panoramica a mano attraverso gli alberi con la stessa risoluzione e lo stesso CRF differiscono di più volte, poiché CRF prende di mira un livello di qualità e spende qualsiasi bitrate che prende.

Il tempo dipende dalla tua macchina, dalla risoluzione, dal numero di clip e dal fatto che la scheda abbia qualcos'altro da fare. Il nativo FFmpeg viene eseguito al di sopra di 11 secondi di output in 0,63 secondi; aspettati che il browser sia molte volte più lento e aspettati che WebM sia di nuovo più lento.

Cosa questo non fa

Si unisce, rifila, riordina, scala, cambia velocità e rilascia l'audio. Questo è l'intero set di funzionalità e vale la pena essere chiariti tra esso e un editor video.

Non ci sono transizioni, titoli, brani musicali, correzioni del colore, nessun ritaglio, nessun volume per clip, nessun keyframe, nessuna anteprima della timeline finita. Ogni clip viene ritagliata e posizionata, un set di impostazioni di output si applica a tutte e il risultato è codificato.

Ciò copre un lavoro reale e comune: diverse registrazioni che devono diventare un file, tagliate alle parti utili, nell'ordine giusto, a una dimensione che qualcosa accetterà. Per qualsiasi cosa che coinvolga una decisione creativa, usa un editor.

In che ordine vanno le clip e puoi cambiarlo?

L'ordine in cui li hai aggiunti e sì, con i pulsanti su e giù su ogni clip.

Il riordino è un'operazione di elenco piuttosto che una video: spostando una clip cambia quale indice di input occupa nel grafico del filtro e nulla viene rileggeto o ridecodificato fino all'esecuzione dell'esportazione. Quindi una mossa è istantanea per quanto grandi siano i file e puoi riorganizzare una sequenza temporale tutte le volte che vuoi gratuitamente.

I pulsanti anziché il trascinamento sono una scelta deliberata per un elenco di al massimo otto elementi. Ognuno porta un'etichetta che nomina la clip che si muove, quindi l'ordine è modificabile tramite tastiera e leggibile da uno screen reader, nessuno dei quali una maniglia di trascinamento ti dà senza una buona dose di lavoro extra.

La cosa che vale la pena controllare prima dell'esportazione è la direzione della sequenza. Diverse registrazioni dello stesso evento di solito arrivano da un selettore di file in ordine alfabetico, che è l'ordine in cui i nomi dei file di una telecamera producono e non sempre l'ordine in cui sono state effettuate le registrazioni.

Perché questo viene eseguito nel browser?

Perché il filmato è solitamente del tipo che preferiresti non caricare e il lavoro non ha bisogno di server.

Ogni operazione qui è ffmpeg e ffmpeg Compila in WebAssembly. I file vengono letti dal tuo disco nella scheda, decodificato lì, uniti lì, codificati lì e restituiti come download. Non viene caricato nulla, nessuna coda contiene il tuo filmato e non c'è copia su una macchina che non controlli.

Le clip che le persone si uniscono sono interviste, consulenze, registrazioni familiari, screen capture di software interno, bozze in embargo. La solita alternativa carica diverse centinaia di megabyte su un servizio gratuito, lo converte su hardware di cui non sai nulla e lo mantiene sotto i termini che nessuno legge.

I costi sono i soffitti a otto clip e trenta minuti e una codifica più lenta di una desktop. Entrambi sono indicati prima di iniziare, che è il commercio che vale la pena prendere.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!