1 Descrizione
Questo documento descrive i formati supportati (muxer e demuxer) forniti dalla libreria libavformat.
2 Opzioni di formato
La libreria libavformat fornisce alcune opzioni globali generiche, che possono essere impostate su tutti i muxer e demuxer. Inoltre ciascun muxer o demuxer può supportare le cosiddette opzioni private, specifiche per quel componente.
Le opzioni possono essere impostate specificando il valore -option negli strumenti FFmpeg o impostando esplicitamente il valore nelle opzioni AVFormatContext o utilizzando l'API libavutil/opt.h per uso programmatico.
Di seguito l'elenco delle opzioni supportate:
- avioflags flags (input/output)
Valori possibili:
- ‘direct’
Ridurre il buffering.
- probesize integer (input)
Imposta la dimensione del sondaggio in byte, ovvero la dimensione dei dati da analizzare per ottenere informazioni sul flusso. Un valore più alto consentirà di rilevare più informazioni nel caso in cui siano disperse nel flusso, ma aumenterà la latenza. Deve essere un numero intero non inferiore a 32. Per impostazione predefinita è 5.000.000.
- max_probe_packets integer (input)
Imposta il numero massimo di pacchetti bufferizzati durante il sondaggio di un codec. L'impostazione predefinita è 2500 pacchetti.
- packetsize integer (output)
Imposta la dimensione del pacchetto.
- fflags flags
Imposta i flag di formato. Alcuni sono implementati per un numero limitato di formati.
Possibili valori per i file di input:
- ‘discardcorrupt’
Scarta i pacchetti danneggiati.
- ‘fastseek’
Abilita ricerche veloci ma imprecise per alcuni formati.
- ‘genpts’
Genera PTS mancante se DTS è presente.
- ‘igndts’
Ignorare DTS se è impostato anche PTS. Nel caso in cui sia impostato il PTS, il valore DTS è impostato su NOPTS. Questo viene ignorato quando è impostato il flag nofillin.
- ‘ignidx’
Ignora l'indice.
- ‘nobuffer’
Riduci la latenza introdotta dal buffering durante l'analisi iniziale dei flussi di input.
- ‘nofillin’
Non inserire valori mancanti nei campi del pacchetto che possono essere calcolati esattamente.
- ‘noparse’
Disabilita AVParsers, anche questo richiede +nofillin.
- ‘sortdts’
Prova ad intercalare i pacchetti di output tramite DTS. Al momento disponibile solo per AVI con indice.
Possibili valori per i file di output:
- ‘autobsf’
Applica automaticamente i filtri bitstream come richiesto dal formato di output. Abilitato per impostazione predefinita.
- ‘bitexact’
Scrivi solo dati indipendenti dalla piattaforma, dalla build e dal tempo. Ciò garantisce che i checksum di file e dati siano riproducibili e corrispondano tra le piattaforme. Il suo utilizzo principale è per i test di regressione.
- ‘flush_packets’
Scrivi immediatamente i pacchetti.
- ‘shortest’
Interrompi il multiplexing alla fine dello streaming più breve. Potrebbe essere necessario aumentare max_interleave_delta per evitare di scaricare i flussi più lunghi prima di EOF.
- seek2any integer (input)
Consenti la ricerca di fotogrammi non chiave a livello di demuxer quando supportato se impostato su 1. L'impostazione predefinita è 0.
- analyzeduration integer (input)
Specificare quanti microsecondi vengono analizzati per sondare l'input. Un valore più alto consentirà di rilevare informazioni più precise, ma aumenterà la latenza. Il valore predefinito è 5.000.000 di microsecondi = 5 secondi.
- cryptokey hexadecimal string (input)
Imposta la chiave di decrittazione.
- indexmem integer (input)
Imposta la memoria massima utilizzata per l'indice del timestamp (per flusso).
- rtbufsize integer (input)
Imposta la memoria massima utilizzata per il buffering dei frame in tempo reale.
- fdebug flags (input/output)
Stampa informazioni di debug specifiche.
Valori possibili:
- ‘ts’
- max_delay integer (input/output)
Imposta il ritardo massimo di muxing o demuxing in microsecondi.
- fpsprobesize integer (input)
Imposta il numero di fotogrammi utilizzati per verificare gli fps.
- audio_preload integer (output)
Imposta i microsecondi in base ai quali i pacchetti audio dovrebbero essere interlacciati prima.
- chunk_duration integer (output)
Imposta i microsecondi per ogni blocco.
- chunk_size integer (output)
Imposta la dimensione in byte per ogni blocco.
- err_detect, f_err_detect flags (input)
Imposta i flag di rilevamento degli errori. f_err_detect è deprecato e dovrebbe essere utilizzato solo tramite lo strumento ffmpeg.
Valori possibili:
- ‘crccheck’
Verificare i CRC incorporati.
- ‘bitstream’
Rileva le deviazioni delle specifiche del flusso di bit.
- ‘buffer’
Rileva la lunghezza del flusso di bit non corretta.
- ‘explode’
Interrompe la decodifica al rilevamento di errori minori.
- ‘careful’
Considera le cose che violano le specifiche e non sono state viste in natura come errori.
- ‘compliant’
Considerare tutte le non conformità alle specifiche come errori.
- ‘aggressive’
Considera le cose che un codificatore sano di mente non dovrebbe fare come un errore.
- max_interleave_delta integer (output)
Imposta la durata massima del buffering per l'interlacciamento. La durata è espressa in microsecondi e il valore predefinito è 10000000 (10 secondi).
Per garantire che tutti i flussi siano interlacciati correttamente, libavformat attenderà finché non avrà almeno un pacchetto per ciascun flusso prima di scrivere effettivamente qualsiasi pacchetto nel file di output. Quando alcuni flussi sono "sparsi" (ovvero vi sono ampi intervalli tra i pacchetti successivi), ciò può comportare un buffering eccessivo.
Questo campo specifica la differenza massima tra i timestamp del primo e dell'ultimo pacchetto nella coda di muxing, oltre la quale libavformat produrrà un pacchetto indipendentemente dal fatto che abbia messo in coda un pacchetto per tutti i flussi.
Se impostato su 0, libavformat continuerà a bufferizzare i pacchetti finché non avrà un pacchetto per ogni flusso, indipendentemente dalla differenza massima di timestamp tra i pacchetti bufferizzati.
- use_wallclock_as_timestamps integer (input)
Utilizza wallclock come timestamp se impostato su 1. L'impostazione predefinita è 0.
- avoid_negative_ts integer (output)
Valori possibili:
- ‘make_non_negative’
Sposta i timestamp per renderli non negativi. Si noti inoltre che ciò influisce solo sui timestamp negativi iniziali e non sui timestamp negativi non monotoni.
- ‘make_zero’
Sposta i timestamp in modo che il primo timestamp sia 0.
- ‘auto (default)’
Abilita lo spostamento quando richiesto dal formato di destinazione.
- ‘disabled’
Disabilita lo spostamento del timestamp.
Quando lo spostamento è abilitato, tutti i timestamp di uscita vengono spostati della stessa quantità. La desincronizzazione di audio, video e sottotitoli e le relative differenze di timestamp vengono preservate rispetto a come sarebbero state senza lo spostamento.
- skip_initial_bytes integer (input)
Imposta il numero di byte da saltare prima di leggere l'intestazione e i frame se impostato su 1. Il valore predefinito è 0.
- correct_ts_overflow integer (input)
Correggere gli overflow del timestamp singolo se impostato su 1. Il valore predefinito è 1.
- flush_packets integer (output)
Svuota il flusso I/O sottostante dopo ogni pacchetto. L'impostazione predefinita è -1 (auto), il che significa che sarà il protocollo sottostante a decidere, 1 lo abilita e ha l'effetto di ridurre la latenza, 0 lo disabilita e in alcuni casi può aumentare il throughput IO.
- output_ts_offset offset (output)
Imposta l'offset del tempo di uscita.
L'offset deve essere una specifica di durata temporale,Vedere (ffmpeg-utils) la sezione Durata tempo nel manuale ffmpeg-utils(1).
L'offset viene aggiunto dal muxer ai timestamp di output.
Specificare un offset positivo significa che i flussi corrispondenti vengono ritardati della durata temporale specificata in offset. Il valore predefinito è 0 (il che significa che non viene applicato alcun offset).
- format_whitelist list (input)
"," elenco separato dei demuxer consentiti. Per impostazione predefinita sono tutti consentiti.
- dump_separator string (input)
Separatore utilizzato per separare i campi stampati sulla riga di comando relativi ai parametri Stream. Ad esempio, per separare i campi con caratteri di fine riga e rientro:
ffprobe -dump_separator " " -i ~/videos/matrixbench_mpeg2.mpg - max_streams integer (input)
Specifica il numero massimo di flussi. Questo può essere utilizzato per rifiutare file che richiederebbero troppe risorse a causa di un numero elevato di flussi.
- skip_estimate_duration_from_pts bool (input)
Salta la stima della durata dell'input se richiede un'ulteriore indagine per PTS alla fine del file. Attualmente applicabile per MPEG-PS e MPEG-TS.
- duration_probesize integer (input)
Imposta la dimensione del sondaggio, in byte, per la stima della durata dell'input quando effettivamente richiede un sondaggio aggiuntivo per PTS alla fine del file (attualmente: MPEG-PS e MPEG-TS). È rivolto agli utenti interessati a durate migliori per sondare se stesso, o indirettamente perché utilizzano il demuxer concat, ad esempio. Il tipico caso d'uso è un CBR MPEG-TS con bitrate elevato, buffering video elevato e pulizia finale con PTS simili per video e audio: in uno scenario del genere, l'ampio divario fisico tra l'ultimo pacchetto video e l'ultimo pacchetto audio lo rende necessario leggere molti byte per ottenere la durata del flusso video. Un altro caso d'uso è quello in cui il comportamento di sondaggio predefinito raggiunge solo un singolo fotogramma video che non è l'ultimo del flusso a causa del riordino dei fotogrammi, quindi la durata non è precisa. L'impostazione di questa opzione ha un impatto sulle prestazioni anche per i file di piccole dimensioni poiché la dimensione del sondaggio è fissa. Il comportamento predefinito è un compromesso generale, in gran parte adattivo, ma la dimensione del sondaggio non verrà estesa per ottenere la durata dei flussi a tutti i costi. Deve essere un numero intero non inferiore a 1 o 0 per il comportamento predefinito.
- strict, f_strict integer (input/output)
Specificare quanto rigorosamente seguire gli standard. f_strict è deprecato e dovrebbe essere utilizzato solo tramite lo strumento ffmpeg.
Valori possibili:
- ‘very’
Rigorosamente conforme a una versione precedente e più rigorosa delle specifiche o del software di riferimento
- ‘strict’
Rigorosamente conforme a tutte le cose nelle specifiche, indipendentemente dalle conseguenze
- ‘normal’
- ‘unofficial’
Consentire estensioni non ufficiali
- ‘experimental’
Consentire cose sperimentali non standardizzate, decodificatori e codificatori sperimentali (non finiti/in lavorazione/non ben testati). Nota: i decoder sperimentali possono rappresentare un rischio per la sicurezza, non utilizzarli per decodificare input non attendibili.
2.1 Specificatori del flusso di formato
Gli identificatori del flusso di formato consentono la selezione di uno o più flussi che corrispondono a proprietà specifiche.
La semantica esatta degli specificatori di flusso è definita dalla funzione avformat_match_stream_specifier() dichiarata nel filelibavformat/avformat.hE documentato nella sezione (ffmpeg)Stream specifiers nel manuale ffmpeg(1).
3 demuxer
I demuxer sono elementi configurati in FFmpeg in grado di leggere i flussi multimediali da un particolare tipo di file.
Quando configuri la build di FFmpeg, tutti i demuxer supportati sono abilitati per impostazione predefinita. Puoi elencare tutti quelli disponibili utilizzando l'opzione di configurazione --list-demuxers.
È possibile disabilitare tutti i demuxer utilizzando l'opzione di configurazione --disable-demuxers e abilitare selettivamente un singolo demuxer con l'opzione --enable-demuxer=DEMUXER o disabilitarlo con l'opzione --disable-demuxer=DEMUXER.
L'opzione -demuxers degli strumenti ff* mostrerà l'elenco dei demuxer abilitati. Utilizzare -formats per visualizzare un elenco combinato di demuxer e muxer abilitati.
Segue la descrizione di alcuni dei demuxer attualmente disponibili.
3.1 aa
Demuxer in formato Audible 2, 3 e 4.
Questo demuxer viene utilizzato per demuxare file Audible Format 2, 3 e 4 (.aa).
3,2 ca
Demuxer AAC del flusso di trasporto dei dati audio grezzi.
Questo demuxer viene utilizzato per demuxare un input ADTS contenente un singolo flusso AAC insieme a eventuali tag ID3v1/2 o APE al suo interno.
3,3 ap
Demuxer animato di grafica di rete portatile.
Questo demuxer viene utilizzato per demuxare i file APNG. Tutte le intestazioni, tranne la firma PNG, fino al primo pezzo fcTL (escluso) vengono trasmessi come extradati. I frame vengono quindi divisi come tutti i blocchi tra due fcTL o tra gli ultimi blocchi fcTL e IEND.
- -ignore_loop bool
Ignora la variabile loop nel file, se impostata. L'impostazione predefinita è abilitata.
- -max_fps int
Frequenza fotogrammi massima in fotogrammi al secondo. Il valore predefinito 0 non impone alcun limite.
- -default_fps int
Frequenza fotogrammi predefinita in fotogrammi al secondo quando non ne è specificato nessuno nel file (0 significa il più veloce possibile). L'impostazione predefinita è 15.
3,4 qs
Demuxer di formati per sistemi avanzati.
Questo demuxer viene utilizzato per demuxare file ASF e flussi di rete MMS.
- -no_resync_search bool
Non tentare di risincronizzarsi cercando un determinato codice di avvio opzionale.
3,5 concat
Demuxer di script di concatenazione virtuale.
Questo demuxer legge un elenco di file e altre direttive da un file di testo e li demux uno dopo l'altro, come se tutti i loro pacchetti fossero stati messi insieme.
I timestamp nei file vengono regolati in modo che il primo file inizi da 0 e ogni file successivo inizi dove finisce quello precedente. Tieni presente che viene eseguito a livello globale e potrebbe causare lacune se tutti i flussi non hanno esattamente la stessa lunghezza.
Tutti i file devono avere gli stessi flussi (stessi codec, stessa base temporale, ecc.).
La durata di ciascun file viene utilizzata per regolare i timestamp del file successivo: se la durata non è corretta (perché è stata calcolata utilizzando il bit-rate o perché il file è troncato, ad esempio), può causare artefatti. La direttiva sulla durata può essere utilizzata per sovrascrivere la durata memorizzata in ciascun file.
3.5.1 Sintassi
Lo script è un file di testo in formato ASCII esteso, con una direttiva per riga. Le righe vuote, gli spazi iniziali e le righe che iniziano con '#' vengono ignorate. Viene riconosciuta la seguente direttiva:
- file path
Percorso di un file da leggere; i caratteri speciali e gli spazi devono essere preceduti da una barra rovesciata o da virgolette singole.
Tutte le successive direttive relative ai file si applicano a quel file.
- ffconcat version 1.0
Identificare il tipo e la versione dello script.
Per fare in modo che FFmpeg riconosca automaticamente il formato, questa direttiva deve apparire esattamente così com'è (senza spazi aggiuntivi o segni di ordine dei byte) sulla primissima riga dello script.
- duration dur
Durata del file. Queste informazioni possono essere specificate dal file; specificarlo qui potrebbe essere più efficiente o utile se le informazioni del file non sono disponibili o accurate.
Se la durata è impostata per tutti i file, è possibile cercare nell'intero video concatenato.
- inpoint timestamp
Nel punto del fascicolo. Quando il demuxer apre il file cerca immediatamente il timestamp specificato. La ricerca viene eseguita in modo che tutti i flussi possano essere presentati con successo nel punto In.
Questa direttiva funziona meglio con i codec intra frame, perché per quelli non intra frame di solito otterrai pacchetti aggiuntivi prima del punto In effettivo e il contenuto decodificato molto probabilmente conterrà frame anche prima del punto In.
Per ogni file, i pacchetti prima del file In point avranno un timestamp inferiore al timestamp di inizio calcolato del file (negativo nel caso del primo file), e la durata dei file (se non specificata dalla direttiva di durata) sarà ridotta in base al punto In specificato.
A causa dei potenziali pacchetti prima del punto In specificato, i timestamp dei pacchetti potrebbero sovrapporsi tra due file concatenati.
- outpoint timestamp
Punto di stacco del file. Quando il demuxer raggiunge il timestamp di decodifica specificato in uno qualsiasi dei flussi, lo gestisce come una condizione di fine file e salta il pacchetto corrente e tutti quelli rimanenti da tutti i flussi.
Il punto Out è esclusivo, il che significa che il demuxer non emetterà pacchetti con un timestamp di decodifica maggiore o uguale al punto Out.
Questa direttiva funziona meglio con codec intraframe e formati in cui tutti i flussi sono strettamente interlacciati. Per i codec non intra frame di solito riceverai pacchetti aggiuntivi con timestamp di presentazione dopo il punto Out, quindi molto probabilmente il contenuto decodificato conterrà frame anche dopo il punto Out. Se i tuoi flussi non sono strettamente interlacciati potresti non ricevere tutti i pacchetti da tutti i flussi prima del punto Out e potresti essere in grado di decodificare solo il primo flusso fino al punto Out.
La durata dei file (se non specificata dalla direttiva sulla durata) verrà ridotta in base al punto Out specificato.
- file_packet_metadata key=value
Metadati dei pacchetti del file. I metadati specificati verranno impostati per ciascun pacchetto di file. È possibile specificare questa direttiva più volte per aggiungere più voci di metadati. Questa direttiva è deprecata, utilizza invece file_packet_meta.
- file_packet_meta key value
Metadati dei pacchetti del file. I metadati specificati verranno impostati per ciascun pacchetto di file. È possibile specificare questa direttiva più volte per aggiungere più voci di metadati.
- option key value
Opzione per accedere, aprire e sondare il file. Può essere presente più volte.
- stream
Introdurre uno stream nel file virtuale. Tutte le successive direttive relative allo stream si applicano all'ultimo stream introdotto. Alcune proprietà dei flussi devono essere impostate per consentire l'identificazione dei flussi corrispondenti nei sottofile. Se nello script non sono definiti flussi, vengono copiati i flussi del primo file.
- exact_stream_id id
Imposta l'ID dello stream. Se viene fornita questa direttiva, verrà utilizzata la stringa con l'id corrispondente nei sottofile. Ciò è particolarmente utile per i file MPEG-PS (VOB), dove l'ordine dei flussi non è affidabile.
- stream_meta key value
Metadati per lo streaming. Può essere presente più volte.
- stream_codec value
Codec per lo streaming.
- stream_extradata hex_string
Extradati per la stringa, codificati in esadecimale.
- chapter id start end
Aggiungi un capitolo. id è un identificatore univoco, possibilmente piccolo e consecutivo.
3.5.2 Opzioni
Questo demuxer accetta la seguente opzione:
- safe
Se impostato su 1, rifiuta percorsi e direttive di file non sicuri. Un percorso file è considerato sicuro se non contiene una specifica di protocollo ed è relativo e tutti i componenti contengono solo caratteri del set di caratteri portabili (lettere, cifre, punto, carattere di sottolineatura e trattino) e non hanno punto all'inizio di un componente.
Se impostato su 0, viene accettato qualsiasi nome di file.
Il valore predefinito è 1.
- auto_convert
Se impostato su 1, prova a eseguire conversioni automatiche sui dati a pacchetto per rendere i flussi concatenabili. Il valore predefinito è 1.
Attualmente, l'unica conversione è l'aggiunta del filtro bitstream h264_mp4toannexb ai flussi H.264 in formato MP4. Ciò è necessario soprattutto in caso di modifiche della risoluzione.
- segment_time_metadata
Se impostato su 1, ogni pacchetto conterrà i valori dei metadati del pacchetto lavf.concat.start_time e lavf.concat.duration che sono start_time e la durata dei rispettivi segmenti di file nell'output concatenato espressi in microsecondi. I metadati della durata vengono impostati solo se noti in base al file concat. Il valore predefinito è 0.
3.5.3 Esempi
- Utilizza nomi di file assoluti e includi alcuni commenti:
# my first filename file /mnt/share/file-1.wav # my second filename including whitespace file '/mnt/share/file 2.wav' # my third filename including whitespace plus single quote file '/mnt/share/file 3'\''.wav' - Consenti il rilevamento automatico del formato di input, utilizza nomi di file sicuri e imposta la durata del primo file:
ffconcat version 1.0 file file-1.wav duration 20.0 file subdir/file-2.wav
3.6 trattino
Streaming adattivo dinamico su demuxer HTTP.
Questo demuxer presenta tutti gli AVStream trovati nel manifest. Impostando i flag di scarto su AVStreams il chiamante può decidere quali flussi ricevere effettivamente. Ciascun flusso rispecchia le proprietà ID e larghezza di banda della <Rappresentazione> come chiavi di metadati denominate rispettivamente "id" e "variant_bitrate".
3.6.1 Opzioni
Questo demuxer accetta la seguente opzione:
- cenc_decryption_key
Chiave da 16 byte, in formato esadecimale, per decrittografare i file crittografati utilizzando la crittografia comune ISO (CENC/AES-128 CTR; ISO/IEC 23001-7).
3.7 dvdvideo
Demuxer DVD-Video, basato su libdvdnav e libdvdread.
Può importare direttamente titoli DVD, in particolare PGC sequenziali, in una pipeline di conversione. Anche le risorse del menu, come video o audio di sfondo, possono essere demuxate in base alle coordinate del menu (nella migliore delle ipotesi). La ricerca non è supportata al momento.
Sono accettati dispositivi a blocchi (unità DVD), file ISO e strutture di directory. Attivalo con -f dvdvideo davanti a uno di questi ingressi.
Questo demuxer NON ha codici di decrittazione di alcun tipo. Stai lavorando da solo con DVD crittografati e non dovresti aspettarti supporto in merito.
La riproduzione sottostante è gestita da libdvdnav e l'analisi della struttura da libdvdread. FFmpeg deve essere creato con il supporto della libreria GPL disponibile così come le opzioni di configurazione --enable-libdvdnav e --enable-libdvdread.
Dovrai fornire il "numero del titolo" desiderato o le coordinate PGC/PG esatte. Molti lettori e strumenti DVD open source possono aiutare a fornire queste informazioni. Se non specificato, il demuxer utilizzerà per impostazione predefinita il titolo 1 che funziona con molti dischi. Tuttavia, data la flessibilità del formato, si consiglia di effettuare il controllo manualmente. Esistono molti dischi la cui creazione è strana o con intestazioni non valide.
Se l'input è una vera unità DVD, tieni presente che ci sono alcune unità che potrebbero fallire silenziosamente nella lettura dei settori danneggiati dal disco, restituendo invece bit casuali che sono effettivamente dati corrotti. Ciò è particolarmente evidente sui dischi invecchiati o marci. Sarebbero necessari un secondo passaggio e controlli di integrità per rilevare la corruzione. Questo non è un problema di FFmpeg.
3.7.1 Contesto
Il DVD-Video non è un formato contenitore lineare direttamente accessibile nel senso tradizionale. Invece, consente la riproduzione complessa e programmatica di flussi MPEG-PS attentamente muxizzati archiviati in file VOB senza intestazione. Per l'utente finale, questi flussi sono conosciuti semplicemente come "titoli", ma la sequenza logica di riproduzione effettiva è definita da uno o più "PGC", o catene di gruppi di programmi, all'interno del titolo. Il PGC è a sua volta composto da più "PG", o programmi", che sono i segmenti video effettivi (e per una caratteristica video tipica, ordinati in sequenza). La struttura PGC, insieme al layout dello streaming e ai metadati, sono archiviati nei file IFO che devono essere analizzati, i PGC possono essere considerati come playlist in termini più semplici.
Un vero lettore DVD si basa sull'interazione della GUI dell'utente tramite menu e una VM interna per guidare la direzione del demuxing. Generalmente, l'utente naviga (tramite i menu) o viene automaticamente reindirizzato al PGC di sua scelta. Durante questo processo e la successiva riproduzione, anche la VM interna del lettore DVD mantiene uno stato ed esegue istruzioni che possono creare salti a diversi settori durante la riproduzione. Questo è il motivo per cui è coinvolto libdvdnav, poiché una lettura lineare dei blob MPEG-PS sul disco (VOB) non è sufficiente per produrre la sequenza corretta in molti casi.
Ci sono molte altre strutture DVD (un argomento lungo) che non verranno discusse qui. I pacchetti NAV, in particolare, vengono gestiti da questo demuxer per creare tempistiche accurate ma non emessi come flusso. Per una buona comprensione di alto livello, fare riferimento a: Https://code.videolan.org/videolan/libdvdnav/-/blob/master/doc/dvd_structures
3.7.2 Opzioni
Questo demuxer accetta le seguenti opzioni:
- title int
Il numero del titolo da riprodurre. Deve essere impostato sepgcEpgNon sono impostati. Non applicabile ai menu. Il valore predefinito è 0 (auto), che attualmente seleziona solo il primo titolo disponibile (titolo 1) e avvisa l'utente delle implicazioni.
- chapter_start int
Il numero del capitolo, o PTT (parte del titolo), da cui iniziare. Non applicabile ai menu. L'impostazione predefinita è 1.
- chapter_end int
Il numero del capitolo, o PTT (parte del titolo), con cui terminare. Non applicabile ai menu. Il valore predefinito è 0, che è un valore speciale per segnalare la fine all'ultimo capitolo possibile.
- angle int
Il numero dell'angolo video, che si riferisce a quello che è essenzialmente un flusso video aggiuntivo composto da fotogrammi alternati intercalati nei VOB. Non applicabile ai menu. L'impostazione predefinita è 1.
- region int
Il codice regionale da utilizzare per la riproduzione. Alcuni dischi potrebbero utilizzarlo per la riproduzione predefinita con un angolo particolare in diverse regioni. Questa opzione non influenzerà il codice regionale di un'unità DVD reale, se utilizzata come input. Non applicabile ai menu. L'impostazione predefinita è 0, "mondo".
- menu bool
Demux delle risorse del menu invece di navigare in un titolo. Richiede le coordinate esatte del menu (menu_lu, menu_vts, pgc, pg). L'impostazione predefinita è falsa.
- menu_lu int
La lingua del menu da demuxare. Nel DVD, i menu sono raggruppati per lingua. L'impostazione predefinita è 0, la prima unità linguistica.
- menu_vts int
Il VTS in cui risiede il menu, o 0 se è un menu VMG (livello root). L'impostazione predefinita è 0, menu VMG.
- pgc int
La voce PGC per avviare la riproduzione, insieme a pag. Alternativa all'impostazione del titolo. I marcatori di capitolo non sono supportati al momento. Deve essere impostato esplicitamente per i menu. Il valore predefinito è 0, risolto automaticamente dal valore del titolo.
- pg int
La voce PG per avviare la riproduzione, insieme a pgc. Alternativa all'impostazione del titolo. I marcatori di capitolo non sono supportati al momento. L'impostazione predefinita è 0, risolve automaticamente dal valore del titolo o inizia dall'inizio (PG 1) del menu.
- preindex bool
Abilitarlo per avere marcatori di capitolo (PTT) accurati e misurazione della durata, che richiede una lettura lenta del secondo passaggio per indicizzare i timestamp dei marcatori di capitolo dai pacchetti NAV. Questo non è un lavoro extra non ideale per le unità ottiche reali. Si consiglia e più velocemente di utilizzare questa opzione con un backup della struttura del DVD memorizzata su un disco rigido. Non compatibile con pgc e pg. Non applicabile ai menu. Il valore predefinito è 0, falso.
- trim bool
Salta le celle di riempimento (ovvero le celle più corte di 1 secondo) dall'inizio. Esistono molti dischi con segmenti di riempimento all'inizio del PGC, spesso con dati spazzatura destinati a controllare la velocità di buffering di un vero lettore DVD e senza altri valori di dati materiali. Non applicabile ai menu. Il valore predefinito è 1, vero.
3.7.3 Esempi
- Apri il titolo 3 da una determinata struttura DVD:
ffmpeg -f dvdvideo -title 3 -i - Apri i capitoli 3-6 dal titolo 1 da una determinata struttura del DVD:
ffmpeg -f dvdvideo -chapter_start 3 -chapter_end 6 -title 1 -i - Apri solo il capitolo 5 dal titolo 1 di una determinata struttura DVD:
ffmpeg -f dvdvideo -chapter_start 5 -chapter_end 5 -title 1 -i - Menu Demux con lingua 1 da VTS 1, PGC 1, a partire da PG 1:
ffmpeg -f dvdvideo -menu 1 -menu_lu 1 -menu_vts 1 -pgc 1 -pg 1 -i
3,8 cad
Demuxer del formato multimediale di Electronic Arts.
Questo formato è utilizzato da vari giochi Electronic Arts.
3.8.1 Opzioni
- merge_alpha bool
Normalmente il canale alfa VP6 (se esiste) viene restituito come flusso video secondario, impostando questa opzione è possibile fare in modo che il demuxer restituisca un singolo flusso video che contiene il canale alfa oltre al video ordinario.
3,9 FMI
Demuxer interoperabile Master Format.
Questo demuxer presenta i flussi audio e video trovati in una composizione IMF, come specificato in SMPTE ST 2067-2.
ffmpeg [-assetmaps <path of ASSETMAP1>,<path of ASSETMAP2>,...] -i <path of CPL> ...
Se -assetmaps non è specificato, il demuxer cerca un file chiamato ASSETMAP.xml nella stessa directory del CPL.
3.10 flv, live_flv, kux
Demuxer del formato video Adobe Flash.
Questo demuxer viene utilizzato per demuxare file FLV e flussi di rete RTMP. In caso di streaming di rete live, se forzi il formato, puoi utilizzare l'opzione live_flv invece di flv per sopravvivere alle discontinuità del timestamp. KUX è una variante flv utilizzata sulla piattaforma Youku.
ffmpeg -f flv -i myfile.flv ...
ffmpeg -f live_flv -i rtmp://<any.server>/anything/key ....
- -flv_metadata bool
Assegnare i flussi in base al contenuto dell'array onMetaData.
- -flv_ignore_prevtag bool
Ignora la dimensione del valore del tag precedente.
- -flv_full_metadata bool<15:30>
Genera tutto il contesto di onMetadata.
3.11 gif
Demuxer di GIF animate.
Accetta le seguenti opzioni:
- min_delay
Imposta il ritardo minimo valido tra i fotogrammi in centesimi di secondo. L'intervallo è compreso tra 0 e 6000. Il valore predefinito è 2.
- max_gif_delay
Imposta il ritardo massimo valido tra i fotogrammi in centesimi di secondo. L'intervallo è compreso tra 0 e 65535. Il valore predefinito è 65535 (quasi undici minuti), il valore massimo consentito dalle specifiche.
- default_delay
Imposta il ritardo predefinito tra i fotogrammi in centesimi di secondo. L'intervallo è compreso tra 0 e 6000. Il valore predefinito è 10.
- ignore_loop
I file GIF possono contenere informazioni da ripetere un certo numero di volte (o all'infinito). Seignore_loopÈ impostato su 1, l'impostazione del loop dall'ingresso verrà ignorata e il loop non si verificherà. Se impostato su 0, si verificherà il looping e verrà ripetuto il numero di volte in base alla GIF. Il valore predefinito è 1.
Ad esempio, con il filtro di sovrapposizione, posiziona una GIF in loop infinito su un altro video:
ffmpeg -i input.mp4 -ignore_loop 0 -i input.gif -filter_complex overlay=shortest=1 out.mkv
Tieni presente che nell'esempio sopra l'opzione più breve per il filtro di sovrapposizione viene utilizzata per terminare il video di output alla lunghezza del file di input più breve, che in questo caso èinput.mp4Poiché la GIF in questo esempio si ripete all'infinito.
3,12 hl
Demuxer HLS
Demuxer Apple HTTP Live Streaming.
Questo demuxer presenta tutti gli AVStream da tutti i flussi varianti. Il campo id è impostato sul numero di indice della variante del bitrate. Impostando i flag di scarto su AVStreams (premendo 'a' o 'v' in ffplay), il chiamante può decidere quali varianti di flusso ricevere effettivamente. Il bitrate totale della variante a cui appartiene lo stream è disponibile in una chiave di metadati denominata "variant_bitrate".
Accetta le seguenti opzioni:
- live_start_index
Indice del segmento da cui avviare i live streaming (i valori negativi partono dalla fine).
- prefer_x_start
Preferisci usare #EXT-X-START se è nella playlist invece di live_start_index.
- allowed_extensions
’,’ elenco separato di estensioni di file a cui hls può accedere.
- max_reload
Numero massimo di tentativi di ricaricare un elenco insufficiente. Il valore predefinito è 1000.
- m3u8_hold_counters
Il numero massimo di volte in cui caricare m3u8 quando si aggiorna senza nuovi segmenti. Il valore predefinito è 1000.
- http_persistent
Utilizza connessioni HTTP persistenti. Applicabile solo per i flussi HTTP. Abilitato per impostazione predefinita.
- http_multiple
Utilizza più connessioni HTTP per scaricare segmenti HTTP. Abilitato per impostazione predefinita per i server HTTP/1.1.
- http_seekable
Utilizza le richieste parziali HTTP per scaricare segmenti HTTP. 0 = disabilita, 1 = abilita, -1 = automatico, l'impostazione predefinita è automatica.
- seg_format_options
Imposta le opzioni per il demuxer dei segmenti multimediali utilizzando un elenco di coppie chiave=valore separate da :.
- seg_max_retry
Numero massimo di volte per ricaricare un segmento in caso di errore, utile quando non si desidera saltare il segmento in caso di errore di rete. Il valore predefinito è 0.
3.13 immagine2
Demuxer di file immagine.
Questo demuxer legge da un elenco di file immagine specificati da un modello. La sintassi e il significato del modello sono specificati dall'opzione pattern_type.
Il modello può contenere un suffisso utilizzato per determinare automaticamente il formato delle immagini contenute nei file.
La dimensione, il formato in pixel e il formato di ciascuna immagine devono essere gli stessi per tutti i file della sequenza.
Questo demuxer accetta le seguenti opzioni:
- framerate
Imposta la frequenza fotogrammi per il flusso video. Il valore predefinito è 25.
- loop
Se impostato su 1, esegue il loop sull'ingresso. Il valore predefinito è 0.
- pattern_type
Seleziona il tipo di pattern utilizzato per interpretare il nome file fornito.
Pattern_type accetta uno dei seguenti valori.
- none
Disabilita la corrispondenza dei modelli, quindi il video conterrà solo l'immagine specificata. Dovresti utilizzare questa opzione se non desideri creare sequenze da più immagini e i nomi dei file potrebbero contenere caratteri di pattern speciali.
- sequence
Seleziona un tipo di modello di sequenza, utilizzato per specificare una sequenza di file indicizzati da numeri sequenziali.
Un modello di sequenza può contenere la stringa "%d" o "%0Nd", che specifica la posizione dei caratteri che rappresentano un numero sequenziale in ciascun nome di file corrispondente al modello. Se viene utilizzata la forma "%d0Nd", la stringa che rappresenta il numero in ciascun nome file è completata da 0 e N è il numero totale di cifre completate da 0 che rappresentano il numero. Il carattere letterale '%' può essere specificato nel modello con la stringa "%%".
Se il modello di sequenza contiene "%d" o "%0Nd", il primo nome file dell'elenco di file specificato dal modello deve contenere un numero incluso compreso tra numero_iniziale e numero_iniziale+intervallo_numeri_iniziali-1 e tutti i numeri successivi devono essere sequenziali.
Ad esempio, il modello "img-%03d.bmp" corrisponderà a una sequenza di nomi di file nella forma img-001.bmp, img-002.bmp, ..., img-010.bmp, ecc.; il modello "i%%m%%g-%d.jpg" corrisponderà a una sequenza di nomi di file nel formato i%m%g-1.jpg, i%m%g-2.jpg, ..., i %m%g-10.jpg, ecc.
Tieni presente che il pattern non deve necessariamente contenere "%d" o "%0Nd", ad esempio per convertire un singolo file immagine img.jpeg puoi utilizzare il comando:
ffmpeg -i img.jpeg img.png - glob
Seleziona un tipo di modello di caratteri jolly glob.
Il modello viene interpretato come un modello glob(). Questo è selezionabile solo se libavformat è stato compilato con il supporto globbing.
- glob_sequence (deprecated, will be removed)
Seleziona un modello di sequenza/carattere glob misto.
Se la tua versione di libavformat è stata compilata con il supporto globbing e il modello fornito contiene almeno un metacarattere glob tra %*?[]{} preceduto da un "%" senza caratteri di escape, il modello viene interpretato come un modello glob() , altrimenti viene interpretato come un modello di sequenza.
Tutti i caratteri speciali glob %*?[]{} devono avere il prefisso "%". Per sfuggire a un "%" letterale è necessario utilizzare "%%".
Ad esempio, il modello foo-%*.jpeg corrisponderà a tutti i nomi di file con il prefisso "foo-" e che terminano con ".jpeg", e foo-%?%?%?.jpeg corrisponderà a tutti i nomi di file con il prefisso "foo- ", seguito da una sequenza di tre caratteri e terminante con ".jpeg".
Questo tipo di modello è deprecato a favore di glob e sequenza.
Il valore predefinito è glob_sequence.
- pixel_format
Imposta il formato pixel delle immagini da leggere. Se non specificato, il formato pixel viene ricavato dal primo file immagine nella sequenza.
- start_number
Imposta l'indice del file corrispondente al modello del file immagine da cui iniziare la lettura. Il valore predefinito è 0.
- start_number_range
Imposta l'intervallo dell'indice da controllare quando si cerca il primo file immagine nella sequenza, a partire da start_number. Il valore predefinito è 5.
- ts_from_file
Se impostato su 1, imposterà il timestamp del fotogramma sull'ora di modifica del file immagine. Tieni presente che la monotonia dei timestamp non è fornita: le immagini vanno nello stesso ordine come senza questa opzione. Il valore predefinito è 0. Se impostato su 2, imposterà il timestamp del fotogramma sul tempo di modifica del file immagine con precisione al nanosecondo.
- video_size
Imposta la dimensione video delle immagini da leggere. Se non specificato, la dimensione del video viene ricavata dal primo file immagine nella sequenza.
- export_path_metadata
Se impostato su 1, aggiungerà due campi extra ai metadati trovati in input, rendendoli disponibili anche per altri filtri (vedi filtro drawtext per esempi). Il valore predefinito è 0. I campi aggiuntivi sono descritti di seguito:
- lavf.image2dec.source_path
Corrisponde al percorso completo del file di input da leggere.
- lavf.image2dec.source_basename
Corrisponde al nome del file letto.
3.13.1 Esempi
- Utilizza ffmpeg per creare un video dalle immagini nella sequenza di file img-001.jpeg, img-002.jpeg, ..., presupponendo una frequenza fotogrammi di input di 10 fotogrammi al secondo:
ffmpeg -framerate 10 -i 'img-%03d.jpeg' out.mkv - Come sopra, ma inizia leggendo da un file con indice 100 nella sequenza:
ffmpeg -framerate 10 -start_number 100 -i 'img-%03d.jpeg' out.mkv - Legge le immagini che corrispondono al pattern glob "*.png", ovvero tutti i file che terminano con il suffisso ".png":
ffmpeg -framerate 10 -pattern_type glob -i "*.png" out.mkv
3.14libgme
La libreria Game Music Emu è una raccolta di emulatori di file musicali per videogiochi.
Vedi https://bitbucket.org/mpyne/game-music-emu/overview per ulteriori informazioni.
Accetta le seguenti opzioni:
- track_index
Imposta l'indice della traccia da demuxare. Il demuxer può esportare solo una traccia. Gli indici delle tracce iniziano da 0. L'impostazione predefinita è scegliere la prima traccia. Il numero di tracce viene esportato come voce di metadati delle tracce.
- sample_rate
Imposta la frequenza di campionamento della traccia esportata. L'intervallo è compreso tra 1000 e 999999. Il valore predefinito è 44100.
- max_size (bytes)
Il demuxer bufferizza l'intero file in memoria. Regola questo valore per impostare la dimensione massima del buffer, che a sua volta funge da limite massimo per la dimensione dei file che possono essere letti. L'impostazione predefinita è 50 MiB.
3.15 libmodplug
Demuxer di moduli basato su ModPlug
Vedi https://github.com/Konstanty/libmodplug
Esporterà un flusso audio a 2 canali a 16 bit 44,1 kHz. Facoltativamente, è possibile esportare un flusso video pal8 a 16 colori con o senza metadati stampati.
Accetta le seguenti opzioni:
- noise_reduction
Applicare un semplice filtro passa-basso. Può essere 1 (acceso) o 0 (spento). L'impostazione predefinita è 0.
- reverb_depth
Imposta la quantità di riverbero. Intervallo 0-100. L'impostazione predefinita è 0.
- reverb_delay
Imposta il ritardo in ms, limitato a 40-250 ms. L'impostazione predefinita è 0.
- bass_amount
Applica l'espansione dei bassi, ovvero XBass o megabass. L'intervallo è compreso tra 0 (basso) e 100 (alto). L'impostazione predefinita è 0.
- bass_range
Imposta il limite superiore, ovvero il limite superiore, per le frequenze dei bassi. La gamma è 10-100 Hz. L'impostazione predefinita è 0.
- surround_depth
Applicare un effetto surround Dolby Pro-Logic. L'intervallo è compreso tra 0 (silenzioso) e 100 (pesante). L'impostazione predefinita è 0.
- surround_delay
Imposta il ritardo surround in ms, limitato a 5-40 ms. L'impostazione predefinita è 0.
- max_size
Il demuxer bufferizza l'intero file in memoria. Regola questo valore per impostare la dimensione massima del buffer, che a sua volta funge da limite massimo per la dimensione dei file che possono essere letti. L'intervallo è compreso tra 0 e 100 MiB. 0 rimuove il limite della dimensione del buffer (non consigliato). L'impostazione predefinita è 5 MiB.
- video_stream_expr
Stringa che viene valutata utilizzando l'API eval per assegnare colori al flusso video generato. Le variabili che possono essere utilizzate sono x, y, w, h, t, velocità, tempo, ordine, pattern e riga.
- video_stream
Genera flusso video. Può essere 1 (acceso) o 0 (spento). L'impostazione predefinita è 0.
- video_stream_w
Imposta la larghezza del fotogramma video in "caratteri" dove un carattere indica 8 pixel. L'intervallo è 20-512. L'impostazione predefinita è 30.
- video_stream_h
Imposta l'altezza del fotogramma video in "caratteri" dove un carattere indica 8 pixel. L'intervallo è 20-512. L'impostazione predefinita è 30.
- video_stream_ptxt
Stampa i metadati sul flusso video. Include velocità, tempo, ordine, pattern, riga e ts (tempo in ms). Può essere 1 (acceso) o 0 (spento). L'impostazione predefinita è 1.
3.16libopenmpt
Demuxer di moduli basato su libopenmpt
Vedi https://lib.openmpt.org/libopenmpt/ per ulteriori informazioni.
Alcuni file hanno più sottobrani (tracce), che possono essere impostati con il filesubsongOpzione.
Accetta le seguenti opzioni:
- subsong
Imposta l'indice della sottocanzone. Può essere "all", "auto" o l'indice del sottobrano. Gli indici dei brani secondari iniziano da 0. Il valore predefinito è 'auto'.
Il valore predefinito è lasciare che libopenmpt scelga.
- layout
Imposta il layout del canale. I valori validi sono i layout a 1, 2 e 4 canali. Il valore predefinito è STEREO.
- sample_rate
Imposta la frequenza di campionamento per libopenmpt sull'output. L'intervallo è compreso tra 1000 e INT_MAX. Il valore predefinito è 48000.
3.17mov/mp4/3gp
Demuxer per formato file Quicktime e formato file multimediale di base ISO/IEC (ISO/IEC 14496-12 o MPEG-4 Parte 12, ISO/IEC 15444-12 o JPEG 2000 Parte 12).
Estensioni registrate: mov, mp4, m4a, 3gp, 3g2, mj2, psp, m4b, ism, ismv, isma, f4v
3.17.1 Opzioni
Questo demuxer accetta le seguenti opzioni:
- enable_drefs
Abilita il caricamento di tracce esterne, disabilitato per impostazione predefinita. Abilitare questa opzione può teoricamente far trapelare informazioni in alcuni casi d'uso.
- use_absolute_path
Consente il caricamento di tracce esterne tramite percorsi assoluti, disabilitati per impostazione predefinita. Abilitarlo comporta un rischio per la sicurezza. Dovrebbe essere abilitato solo se è noto che la fonte non è dannosa.
- seek_streams_individually
Durante la ricerca, identificare individualmente il punto più vicino in ciascun flusso e demuxare i pacchetti in quel flusso dal punto identificato. Ciò può portare a una diversa sequenza di pacchetti rispetto al demuxing lineare dall'inizio. L'impostazione predefinita è vera.
- ignore_editlist
Ignora eventuali atomi dell'elenco di modifica. Il demuxer, per impostazione predefinita, modifica l'indice del flusso per riflettere la sequenza temporale descritta dall'elenco di modifica. L'impostazione predefinita è falsa.
- advanced_editlist
Modifica l'indice del flusso in modo che rifletta la sequenza temporale descritta dall'elenco di modifica. ignore_editlist deve essere impostato su false affinché questa opzione sia effettiva. Se sia ignore_editlist che questa opzione sono impostati su false, solo l'inizio dell'indice del flusso viene modificato per riflettere il tempo di permanenza iniziale o il timestamp di inizio descritto dall'elenco di modifica. L'impostazione predefinita è vera.
- ignore_chapters
Non analizzare i capitoli. Ciò include tag/momenti GoPro "HiLight". Tieni presente che i capitoli vengono analizzati solo quando l'input è ricercabile. L'impostazione predefinita è falsa.
- use_mfra_for
Per l'input frammentato ricercabile, imposta il timestamp iniziale del frammento dalla casella di accesso casuale del frammento multimediale, se presente.
Sono disponibili le seguenti opzioni:
- ‘auto’
Rileva automaticamente se impostare i timestamp mfra come PTS o DTS (impostazione predefinita)
- ‘dts’
Imposta i timestamp mfra come DTS
- ‘pts’
Imposta i timestamp di mfra come PTS
- ‘0’
Non utilizzare la casella mfra per impostare i timestamp
- use_tfdt
Per l'input frammentato, imposta il timestamp iniziale del frammento su baseMediaDecodeTime dalla casella tfdt. Per impostazione predefinita è abilitato, che preferirà utilizzare la casella tfdt per impostare DTS. Disabilita l'utilizzo del early_presentation_time dalla casella sidx. In entrambi i casi, verrà utilizzato il timestamp della casella mfra se disponibile e use_mfra_for è impostato su pts o dts.
- export_all
Esporta caselle non riconosciute all'interno della casella udta come voci di metadati. I primi quattro caratteri del tipo di casella vengono impostati come chiave. L'impostazione predefinita è falsa.
- export_xmp
Esporta l'intero contenuto della casella XMP_ e della casella uuid come una stringa con la chiave xmp. Tieni presente che se export_all è impostato e questa opzione non lo è, il contenuto della casella XMP_ viene comunque esportato ma con la chiave XMP_. L'impostazione predefinita è falsa.
- activation_bytes
Chiave da 4 byte necessaria per decrittografare i file Audible AAX e AAX+. Vedere la sottosezione Audible AAX di seguito.
- audible_fixed_key
Chiave fissa utilizzata per gestire i file Audible AAX/AAX+. È stato preimpostato quindi non dovrebbe essere necessario specificarlo.
- decryption_key
Chiave da 16 byte, in formato esadecimale, per decrittografare i file crittografati utilizzando la crittografia comune ISO (CENC/AES-128 CTR; ISO/IEC 23001-7).
- max_stts_delta
Occasionalmente possono essere intesi delta di esempio molto elevati scritti nella casella stts di un trak, ma di solito vengono scritti per errore o utilizzati per memorizzare un valore negativo per la correzione dts quando trattati come interi a 32 bit con segno. Questa opzione consente all'utente di impostare un limite superiore, oltre il quale il delta viene bloccato a 1. I valori maggiori del limite se negativi quando vengono trasmessi a int32 vengono utilizzati per regolare i dts successivi.
L'unità è la scala temporale della traccia. L'intervallo è compreso tra 0 e UINT_MAX. L'impostazione predefinita è UINT_MAX - 48000*10 che consente una correzione dts fino a 10 secondi per flussi audio a 48 kHz soddisfacendo il 99,9% dell'intervallo uint32.
- interleaved_read
Interlaccia i pacchetti da più tracce a livello di demuxer. Per i file con interlacciamento errato, ciò previene problemi di riproduzione causati da ampi divari tra i pacchetti in tracce diverse, poiché MOV/MP4 non hanno requisiti di posizionamento dei pacchetti. Tuttavia, ciò può causare una ricerca eccessiva su file con interlacciamento molto errato, a causa della ricerca tra le tracce, quindi disabilitarla potrebbe prevenire problemi di I/O, a scapito della riproduzione.
3.17.2 AAX sonoro
I file Audible AAX sono file M4B crittografati e possono essere decrittografati specificando un segreto di attivazione di 4 byte.
ffmpeg -activation_bytes 1CEB00DA -i test.aax -vn -c:a copy output.mp4
3,18 mpeg
Demuxer del flusso di trasporto MPEG-2.
Questo demuxer accetta le seguenti opzioni:
- resync_size
Imposta il limite di dimensione per la ricerca di una nuova sincronizzazione. Il valore predefinito è 65536.
- skip_unknown_pmt
Salta PMT per programmi non definiti nel PAT. Il valore predefinito è 0.
- fix_teletext_pts
Sostituisce i valori PTS e DTS del pacchetto televideo con i timestamp calcolati dalla PCR del primo programma di cui fa parte il flusso televideo e non viene scartato. Il valore predefinito è 1, impostare questa opzione su 0 se si desidera che i valori PTS e DTS del pacchetto televideo non vengano modificati.
- ts_packetsize
Opzione di output che trasporta la dimensione del pacchetto non elaborato in byte. Mostra la dimensione del pacchetto raw rilevato, non può essere impostata dall'utente.
- scan_all_pmts
Scansiona e combina tutti i PMT. Il valore è un numero intero con valore compreso tra -1 e 1 (-1 significa impostazione automatica, 1 significa abilitato, 0 significa disabilitato). Il valore predefinito è -1.
- merge_pmt_versions
Riutilizza i flussi esistenti quando la versione di PMT viene aggiornata e i flussi elementari vengono spostati su PID diversi. Il valore predefinito è 0.
- max_packet_size
Imposta la dimensione massima, in byte, del pacchetto emesso dal demuxer. I carichi utili superiori a questa dimensione vengono suddivisi su più pacchetti. L'intervallo è compreso tra 1 e INT_MAX/2. Il valore predefinito è 204800 byte.
3,19 mpjpeg
MJPEG incapsulato in un demuxer MIME multiparte.
Questo demuxer consente la lettura di MJPEG, dove ciascun fotogramma è rappresentato come parte di un flusso multipart/x-mixed-replace.
- strict_mime_boundary
L'implementazione predefinita applica uno standard rilassato al rilevamento dei limiti MIME in più parti, per impedire la regressione con numerosi endpoint esistenti che non generano un flusso MIME MJPEG corretto. Attivando questa opzione impostandola su 1 si otterrà un controllo più rigoroso del valore limite.
3.20 video grezzo
Demuxer video grezzo.
Questo demuxer consente di leggere i dati video grezzi. Poiché non esiste un'intestazione che specifichi i parametri video assunti, l'utente deve specificarli per poter decodificare correttamente i dati.
Questo demuxer accetta le seguenti opzioni:
- framerate
Imposta la frequenza dei fotogrammi del video in ingresso. Il valore predefinito è 25.
- pixel_format
Imposta il formato pixel del video in ingresso. Il valore predefinito è yuv420p.
- video_size
Imposta la dimensione del video in ingresso. Questo valore deve essere specificato esplicitamente.
Ad esempio per leggere un file rawvideoinput.rawCon ffplay, presupponendo un formato pixel rgb24, una dimensione video di 320x240 e un frame rate di 10 immagini al secondo, utilizzare il comando:
ffplay -f rawvideo -pixel_format rgb24 -video_size 320x240 -framerate 10 input.raw
3,21 rcwt
RCWT (Raw Captions With Time) è un formato nativo di ccextractor, uno strumento open source comunemente utilizzato per l'elaborazione di sorgenti di sottotitoli chiusi (CC) 608/708. Per ulteriori informazioni sul formato, vedere (ffmpeg-formats)rcwtenc.
Questo demuxer implementa la specifica a partire da marzo 2024, che è rimasta stabile e invariata da aprile 2014.
3.21.1 Esempi
- Renderizza CC in ASS utilizzando il decodificatore integrato:
- Converti un backup RCWT nel formato Scenarist (SCC):
3,22 sb
Demuxer di script SBaGen.
Questo demuxer legge il linguaggio di script utilizzato da SBaGen http://uazu.net/sbagen/ per generare sessioni di battiti binaurali. Uno script SBG è simile al seguente:
-SE
a: 300-2.5/3 440+4.5/0
b: 300-2.5/0 440+4.5/3
off: -
NOW == a
+0:07:00 == b
+0:14:00 == a
+0:21:00 == b
+0:30:00 off
Uno script SBG può combinare timestamp assoluti e relativi. Se lo script utilizza solo timestamp assoluti (inclusa l'ora di inizio dello script) o solo relativi, il suo layout è fisso e la conversione è semplice. D'altra parte, se lo script combina entrambi i tipi di timestamp, il riferimento ADESSO per i timestamp relativi verrà preso dall'ora del giorno corrente nel momento in cui lo script viene letto e il layout dello script verrà congelato in base a quel riferimento. Ciò significa che se lo script viene riprodotto direttamente, i tempi effettivi corrisponderanno ai timestamp assoluti fino alla precisione dell'orologio del controller del suono, ma se l'utente in qualche modo mette in pausa la riproduzione o effettua la ricerca, tutti i tempi verranno spostati di conseguenza.
3.23 tedcaptions
Sottotitoli JSON utilizzati per i TED Talks.
TED non fornisce collegamenti alle didascalie, ma è possibile intuirle dalla pagina. Il file tools/bookmarklets.html dall'albero dei sorgenti di FFmpeg contiene un bookmarklet per esporli.
Questo demuxer accetta la seguente opzione:
- start_time
Imposta l'ora di inizio della conferenza TED, in millisecondi. Il valore predefinito è 15000 (15 s). Viene utilizzato per sincronizzare i sottotitoli con i video scaricabili, poiché includono un'introduzione di 15 secondi.
Esempio: converti i sottotitoli in un formato comprensibile alla maggior parte dei giocatori:
ffmpeg -i http://www.ted.com/talks/subtitles/id/1/lang/en talk1-en.srt
3.24 vaporsintetico
Involucro di vaporynth.
Per motivi di sicurezza, gli script Vapoursynth non verranno rilevati automaticamente, quindi il formato di input dovrà essere forzato. Per gli strumenti CLI ff*, aggiungi -f vapoursynth prima dell'input -i yourscript.vpy.
Questo demuxer accetta la seguente opzione:
- max_script_size
Il demuxer bufferizza l'intero script in memoria. Regola questo valore per impostare la dimensione massima del buffer, che a sua volta funge da limite massimo per la dimensione degli script che possono essere letti. L'impostazione predefinita è 1 MiB.
3.25 w64
Demuxatore audio Sony Wave64.
Questo demuxer accetta le seguenti opzioni:
- max_size
Vedi la stessa opzione per il demuxer wav.
3,26 ond
Demuxer RIFF Wave Audio.
Questo demuxer accetta le seguenti opzioni:
- max_size
Specificare la dimensione massima del pacchetto in byte per i pacchetti demux. Per impostazione predefinita è impostato su 0, il che significa che viene scelto un valore ragionevole in base al formato di input.
4 Muxer
I muxer sono elementi configurati in FFmpeg che consentono di scrivere flussi multimediali su un particolare tipo di file.
Quando configuri la build di FFmpeg, tutti i muxer supportati sono abilitati per impostazione predefinita. Puoi elencare tutti i muxer disponibili utilizzando l'opzione di configurazione --list-muxers.
È possibile disabilitare tutti i muxer con l'opzione di configurazione --disable-muxers e abilitare/disabilitare selettivamente singoli muxer con le opzioni --enable-muxer=MUXER / --disable-muxer=MUXER.
L'opzione -muxers degli strumenti ff* mostrerà l'elenco dei muxer abilitati. Utilizzare -formats per visualizzare un elenco combinato di demuxer e muxer abilitati.
Segue una descrizione di alcuni dei muxer attualmente disponibili.
4.1 Muxer grezzi
Questa sezione riguarda i muxer grezzi. Accettano un singolo flusso corrispondente al codec designato. Non memorizzano timestamp o metadati. L'estensione riconosciuta è la stessa del nome del muxer se non diversamente indicato.
Comprende i seguenti muxer. Vengono inoltre visualizzati il tipo di media e le eventuali estensioni utilizzate per selezionare automaticamente il muxer dalle estensioni di output.
- ‘ac3 audio’
Dolby Digital, noto anche come AC-3.
- ‘adx audio’
Audio ADX del middleware CRI.
Questo muxer scriverà il conteggio totale dei campioni vicino all'inizio del primo pacchetto quando l'output è ricercabile e il conteggio può essere memorizzato in 32 bit.
- ‘aptx audio’
AptX (tecnologia di elaborazione audio per Bluetooth)
- ‘aptx_hd audio (aptxdh)’
Audio aptX HD (tecnologia di elaborazione audio per Bluetooth).
- ‘avs2 video (avs, avs2)’
AVS2-P2 (standard audio video - Seconda generazione - Parte 2) / video IEEE 1857.4
- ‘avs3 video (avs3)’
AVS3-P2 (standard audio video - Terza generazione - Parte 2) / video IEEE 1857.10
- ‘cavsvideo video (cavs)’
AVS cinese (standard audio video - prima generazione)
- ‘codec2raw audio’
Audio codec2.
Nessuna estensione è registrata, quindi è necessario fornire il nome del formato, ad es. con lo strumento CLI ffmpeg -f codec2raw.
- ‘data any’
Muxer di dati generico.
Questo muxer accetta un singolo flusso con qualsiasi codec di qualsiasi tipo. Il flusso di input deve essere selezionato utilizzando l'opzione -map con lo strumento CLI ffmpeg.
Nessuna estensione è registrata, quindi è necessario fornire il nome del formato, ad es. con lo strumento CLI ffmpeg -f data.
- ‘dfpwm audio (dfpwm)’
Muxer audio Raw DFPWM1a (Dynamic Filter Pulse With Modulation).
- ‘dirac video (drc, vc2)’
Video della BBC Dirac.
Il codec Dirac Pro è un sottoinsieme ed è standardizzato come SMPTE VC-2.
- ‘dnxhd video (dnxhd, dnxhr)’
Video avido DNxHD.
È standardizzato come SMPTE VC-3. Accetta flussi DNxHR.
- ‘dts audio’
Audio DTS Coherent Acoustics (DCA).
- ‘eac3 audio’
Dolby Digital Plus, noto anche come Enhanced AC-3
- ‘evc video (evc)’
MPEG-5 Essential Video Coding (EVC) / EVC / MPEG-5 Parte 1 Video EVC
- ‘g722 audio’
Audio ITU-T G.722
- ‘g723_1 audio (tco, rco)’
Audio ITU-T G.723.1
- ‘g726 audio’
Audio big-endian ITU-T G.726 ("giustificato a sinistra").
Nessuna estensione è registrata, quindi è necessario fornire il nome del formato, ad es. con lo strumento CLI ffmpeg -f g726.
- ‘g726le audio’
Audio little-endian ITU-T G.726 ("giustificato a destra").
Nessuna estensione è registrata, quindi è necessario fornire il nome del formato, ad es. con lo strumento CLI ffmpeg -f g726le.
- ‘gsm audio’
Sistema globale per l'audio delle comunicazioni mobili
- ‘h261 video’
Video ITU-T H.261
- ‘h263 video’
ITU-T H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 versione 2 video
- ‘h264 video (h264, 264)’
Video AVC ITU-T H.264 / MPEG-4 Parte 10. Bitstream verrà convertito nella sintassi dell'allegato B se è in modalità con prefisso di lunghezza.
- ‘hevc video (hevc, h265, 265)’
Video HEVC ITU-T H.265/MPEG-H Parte 2. Bitstream verrà convertito nella sintassi dell'allegato B se è in modalità con prefisso di lunghezza.
- ‘m4v video’
Video MPEG-4 Parte 2
- ‘mjpeg video (mjpg, mjpeg)’
Video JPEG in movimento
- ‘mlp audio’
Meridian Lossless Packing, noto anche come Packed PCM
- ‘mp2 audio (mp2, m2a, mpa)’
Audio MPEG-1 Livello II
- ‘mpeg1video video (mpg, mpeg, m1v)’
Video MPEG-1 Parte 2.
- ‘mpeg2video video (m2v)’
Video ITU-T H.262 / MPEG-2 Parte 2
- ‘obu video’
AV1 muxer Open Bitstream Units a basso costo.
Le OBU delimitatrici temporali verranno inserite in tutte le unità temporali del flusso.
- ‘rawvideo video (yuv, rgb)’
Video grezzo non compresso.
- ‘sbc audio (sbc, msbc)’
Audio codec sottobanda Bluetooth SIG a bassa complessità
- ‘truehd audio (thd)’
Audio Dolby TrueHD
- ‘vc1 video’
Video SMPTE 421M/VC-1
4.1.1 Esempi
- Memorizza fotogrammi video non elaborati con il muxer "rawvideo" utilizzando ffmpeg:
ffmpeg -f lavfi -i testsrc -t 10 -s hd1080p testsrc.yuv Poiché il muxer rawvideo non memorizza le informazioni relative alla dimensione e al formato, queste informazioni devono essere fornite durante il demux del file: ffplay -video_size 1920x1080 -pixel_format rgb24 -f rawvideo testsrc.rgb
4.2 Muxer PCM grezzi
Questa sezione tratta i muxer audio PCM (Pulse-Code Modulation) grezzi.
Accettano un singolo flusso corrispondente al codec designato. Non memorizzano timestamp o metadati. L'estensione riconosciuta è la stessa del nome del muxer.
Comprende i seguenti muxer. Tra parentesi viene mostrata anche l'estensione aggiuntiva opzionale utilizzata per selezionare automaticamente il muxer dall'estensione di uscita.
- ‘alaw (al)’
Legge A del PCM
- ‘f32be’
PCM big-endian in virgola mobile a 32 bit
- ‘f32le’
Little-endian in virgola mobile PCM a 32 bit
- ‘f64be’
PCM big-endian in virgola mobile a 64 bit
- ‘f64le’
Little Endian in virgola mobile PCM a 64 bit
- ‘mulaw (ul)’
Legge mu PCM
- ‘s16be’
PCM firmato big-endian a 16 bit
- ‘s16le’
PCM firmato little-endian a 16 bit
- ‘s24be’
PCM firmato big-endian a 24 bit
- ‘s24le’
PCM firmato little-endian a 24 bit
- ‘s32be’
PCM firmato big-endian a 32 bit
- ‘s32le’
PCM firmato little-endian a 32 bit
- ‘s8 (sb)’
PCM firmato a 8 bit
- ‘u16be’
PCM big-endian a 16 bit senza segno
- ‘u16le’
PCM little-endian a 16 bit senza segno
- ‘u24be’
PCM big-endian a 24 bit senza segno
- ‘u24le’
PCM little-endian a 24 bit senza segno
- ‘u32be’
PCM big-endian a 32 bit senza segno
- ‘u32le’
PCM little-endian a 32 bit senza segno
- ‘u8 (ub)’
PCM a 8 bit senza segno
- ‘vidc’
PCM Archimede VIDC
4.3 Muxer di streaming di programmi MPEG-1/MPEG-2
Questa sezione copre i formati appartenenti alla famiglia dei sistemi MPEG-1 e MPEG-2.
Il formato MPEG-1 Systems (noto anche come ISO/IEEC 11172-1 o flusso di programma MPEG-1) è stato adottato per il formato della traccia multimediale memorizzata in VCD (Video Compact Disc).
Lo standard MPEG-2 Systems (noto anche come ISO/IEEC 13818-1) copre due formati contenitori, uno noto come flusso di trasporto e uno noto come flusso di programma; solo quest'ultimo è trattato qui.
Il formato del flusso di programma MPEG-2 (noto anche come VOB per la corrispondente estensione del file) è un'estensione del flusso di programma MPEG-1: oltre a supportare diversi codec per i flussi audio e video, memorizza anche i sottotitoli e i metadati di navigazione. Il flusso di programma MPEG-2 è stato adottato per archiviare flussi multimediali in dispositivi di archiviazione SVCD e DVD.
Questa sezione comprende i seguenti muxer.
- ‘mpeg (mpg,mpeg)’
Sistemi MPEG-1 / Muxer dello streaming di programmi MPEG-1.
- ‘vcd’
Muxer MPEG-1 Systems/MPEG-1 program stream (VCD).
Questo muxer può essere utilizzato per generare tracce nel formato accettato dai dispositivi di memorizzazione VCD (Video Compact Disc).
È lo stesso del 'mpeg' muxer con alcune differenze.
- ‘vob’
Muxer di streaming di programmi MPEG-2 (VOB).
- ‘dvd’
Muxer del flusso di programmi MPEG-2 (DVD VOB).
Questo muxer può essere utilizzato per generare tracce nel formato accettato dai dispositivi di archiviazione DVD (Digital Versatile Disc).
Questo è lo stesso del 'vob' muxer con alcune differenze.
- ‘svcd (vob)’
Muxer del flusso di programma MPEG-2 (SVCD VOB).
Questo muxer può essere utilizzato per generare tracce nel formato accettato dai dispositivi di memorizzazione SVCD (Super Video Compact Disc).
Questo è lo stesso del 'vob' muxer con alcune differenze.
4.3.1 Opzioni
- muxrate rate
Imposta la velocità mux definita dall'utente espressa in numero di bit/s. Se non specificato, viene utilizzato il tasso mux calcolato automaticamente. Il valore predefinito è 0.
- preload delay
Imposta il ritardo iniziale della decodifica demux in microsecondi. Il valore predefinito è 500000.
4.4 Muxer MOV/MPEG-4/ISOMBFF
Questa sezione copre i formati appartenenti alla famiglia QuickTime/MOV, incluso il formato MPEG-4 Parte 14 e il formato file multimediale di base ISO (ISOBMFF). Questi formati condividono una struttura comune basata sul formato file multimediale di base ISO (ISOBMFF).
Il formato MOV è stato originariamente sviluppato per l'utilizzo con Apple QuickTime. Successivamente è stato utilizzato come base per il formato MPEG-4 Parte 1 (poi Parte 14), noto anche come ISO/IEC 14496-1. Quel formato è stato poi generalizzato in ISOBMFF, chiamato anche formato MPEG-4 Parte 12, ISO/IEC 14496-12 o ISO/IEC 15444-12.
Comprende i seguenti muxer.
- ‘3gp’
Formato Third Generation Partnership Project (3GPP) per servizi multimediali 3G UMTS
- ‘3g2’
Formato Third Generation Partnership Project 2 (3GP2 o 3GPP2) per servizi multimediali 3G CDMA2000, simile a '3gp’ con estensioni e limitazioni
- ‘f4v’
Formato videoAdobe Flash
- ‘ipod’
Formato file audio MPEG-4, come MOV/MP4 ma limitato a contenere solo flussi audio, generalmente riprodotto con il dispositivo iPod Apple
- ‘ismv’
Formato Microsoft IIS (Internet Information Services) Smooth Streaming Audio/Video (ISMV o ISMA). Si basa sul formato MPEG-4 Parte 14 con alcune varianti incompatibili, utilizzato per lo streaming di file multimediali per il server Microsoft IIS.
- ‘mov’
Formato player QuickTime identificato dall'estensione .mov
- ‘mp4’
Formato MP4 o MPEG-4 Parte 14
- ‘psp’
Variante del formato PlayStation Portable MP4/MPEG-4 Parte 14. Si basa sul formato MPEG-4 Parte 14 con alcune varianti incompatibili, utilizzato per riprodurre file sui dispositivi PlayStation.
4.4.1 Frammentazione
IL 'mov', 'mp4', E 'ismvI muxer supportano la frammentazione. Normalmente, un file MOV/MP4 contiene tutti i metadati di tutti i pacchetti archiviati in un'unica posizione.
Questi dati vengono solitamente scritti alla fine del file, ma possono essere spostati all'inizio per una migliore riproduzione aggiungendo +faststart a -movflags o utilizzando lo strumento qt-faststart).
Un file frammentato è costituito da una serie di frammenti, in cui i pacchetti e i relativi metadati vengono archiviati insieme. Scrivere un file frammentato ha il vantaggio che il file è decodificabile anche se la scrittura viene interrotta (mentre un normale MOV/MP4 è indecodificabile se non è finito correttamente), e richiede meno memoria quando si scrivono file molto lunghi (poiché scrivere normali MOV /MP4 memorizza le informazioni su ogni singolo pacchetto in memoria finché il file non viene chiuso). Lo svantaggio è che è meno compatibile con altre applicazioni.
La frammentazione viene abilitata impostando una delle opzioni che definiscono come tagliare il file in frammenti:
- frag_duration
- frag_size
- min_frag_duration
- movflags +frag_keyframe
- movflags +frag_custom
Se viene specificata più di una condizione, i frammenti vengono tagliati quando viene soddisfatta una delle condizioni specificate. L'eccezione a questa è l'opzionemin_frag_duration, che deve essere soddisfatta affinché si applichi una qualsiasi delle altre condizioni.
4.4.2 Opzioni
- brand brand_string
Sostituisci il marchio principale.
- empty_hdlr_name bool
Abilita per saltare la scrittura del nome all'interno di una casella hdlr. L'impostazione predefinita è falsa.
- encryption_key key
Impostare la chiave di crittografia multimediale in formato esadecimale
- encryption_kid kid
Impostare l'identificatore della chiave di crittografia multimediale in formato esadecimale
- encryption_scheme scheme
Configurare lo schema di crittografia, i valori consentiti sono "none" e "cenc-aes-ctr"
- frag_duration duration
Crea frammenti della durata di microsecondi.
- frag_interleave number
Interlaccia i campioni all'interno dei frammenti (numero massimo di campioni consecutivi, inferiore è l'interlacciamento più stretto, ma con più sovraccarico. È impostato su 0 per impostazione predefinita.
- frag_size size
Creare frammenti che contengono fino a dimensioni di byte di dati di payload
- iods_audio_profile profile
Specificare il numero di iod per l'atom del profilo audio (da -1 a 255), il valore predefinito è -1
- iods_video_profile profile
Specificare il numero di iod per l'atomo del profilo video (da -1 a 255), il valore predefinito è -1
- ism_lookahead num_entries
Specificare il numero di voci lookahead per i file ISM (da 0 a 255), il valore predefinito è 0
- min_frag_duration duration
Non creare frammenti di durata inferiore ai microsecondi
- moov_size bytes
Riserva spazio per l'atomo moov all'inizio del file invece di posizionare l'atomo moov alla fine. Se lo spazio riservato è insufficiente, il multiplexing fallirà.
- mov_gamma gamma
Specifica il valore gamma per gama atom (come numero decimale da 0 a 10), il valore predefinito è 0.0, deve essere impostato insieme a + movflags
- movflags flags
Imposta vari interruttori di muxing. È possibile utilizzare i seguenti flag:
- ‘cmaf’
Scrivere output MP4 frammentato compatibile con CMAF (Common Media Application Format).
- ‘dash’
Scrivere output MP4 frammentato compatibile con DASH (Dynamic Adaptive Streaming over HTTP).
- ‘default_base_moof’
Analogamente al flag "omit_tfhd_offset", questo flag evita di scrivere il campo base_data_offset assoluto negli atomi tfhd, ma lo fa utilizzando invece il nuovo flag default-base-is-moof. Questa bandiera è nuova da 14496-12:2012. Ciò potrebbe rendere i frammenti più facili da analizzare in determinate circostanze (evitando di basare i calcoli sulla posizione del frammento di traccia sull'estremità implicita del frammento di traccia precedente).
- ‘delay_moov’
Ritardare la scrittura del moov iniziale finché il primo frammento non viene tagliato o finché il primo frammento non viene scaricato
- ‘disable_chpl’
Disabilita i marcatori di capitolo di Nero (chpl atom). Normalmente, nel file vengono scritti sia i capitoli Nero che una traccia capitolo QuickTime. Con questa opzione impostata, verrà scritta solo la traccia del capitolo QuickTime. I capitoli di Nero possono causare errori quando il file viene rielaborato con alcuni programmi di tag, come mp3Tag 2.61a e iTunes 11.3; molto probabilmente anche altre versioni sono interessate.
- ‘faststart’
Esegui un secondo passaggio spostando l'indice (moov atom) all'inizio del file. Questa operazione può richiedere del tempo e non funzionerà in varie situazioni come l'output frammentato, quindi non è abilitata per impostazione predefinita.
- ‘frag_custom’
Consenti al chiamante di scegliere manualmente quando tagliare i frammenti, chiamando av_write_frame(ctx, NULL) per scrivere un frammento con i pacchetti scritti finora. (Questo è utile solo con altre applicazioni che integrano libavformat, non con ffmpeg.)
- ‘frag_discont’
Segnalano che il frammento successivo è discontinuo rispetto a quelli precedenti
- ‘frag_every_frame’
Frammento ad ogni fotogramma
- ‘frag_keyframe’
Inizia un nuovo frammento in ogni fotogramma chiave del video
- ‘global_sidx’
Scrivere un indice sidx globale all'inizio del file
- ‘isml’
Creare un feed live streaming fluido (da inviare a un punto di pubblicazione)
- ‘negative_cts_offsets’
Abilita l'utilizzo della versione 1 della casella CTTS, in cui gli offset CTS possono essere negativi. Ciò consente al campione iniziale di avere DTS/CTS pari a zero e riduce la necessità di elenchi di modifica per alcuni casi come le tracce video con fotogrammi B. Inoltre, facilita la conformità con le linee guida sull'interoperabilità DASH-IF.
Questa opzione viene impostata implicitamente durante la scrittura di file "ismv" (Smooth Streaming).
- ‘omit_tfhd_offset’
Non scrivere alcun base_data_offset assoluto negli atomi tfhd. Ciò evita di legare i frammenti alle posizioni assolute dei byte nel file/flusso.
- ‘prefer_icc’
Se si scrive colr atom, dare la priorità all'utilizzo del profilo ICC se esiste nei dati lato pacchetto del flusso.
- ‘rtphint’
Aggiungi tracce di suggerimento RTP al file di output
- ‘separate_moof’
Scrivi un moof (frammento di film) separato per ogni traccia. Normalmente, i pacchetti per tutte le tracce sono scritti in un moof atom (che è leggermente più efficiente), ma con questa opzione impostata, il muxer scrive una coppia moof/mdat per ogni traccia, rendendo più semplice la separazione delle tracce.
- ‘skip_sidx’
Salta la scrittura di sidx atom. Quando il sovraccarico del bitrate dovuto a sidx atom è elevato, questa opzione può essere utilizzata nei casi in cui sidx atom non è obbligatorio. Quando il 'global_sidx' è abilitato, questa opzione viene ignorata.
- ‘skip_trailer’
Salta la scrittura del trailer mfra/tfra/mfro per i file frammentati
- ‘use_metadata_tags’
Utilizzare mdta atom per i metadati
- ‘write_colr’
Scrivi colr atom anche se le informazioni sul colore non sono specificate. Questo flag è sperimentale, può essere rinominato o modificato, non utilizzare da script.
- ‘write_gama’
Scrivere gama atom deprecato
- ‘hybrid_fragmented’
Per la recuperabilità: scrivere il file di output come file frammentato. Ciò consente la lettura del file intermedio durante la scrittura (in particolare, se il processo di scrittura viene interrotto in modo non corretto). Al termine della scrittura, il file viene convertito in un file normale, non frammentato, più compatibile e che consente una ricerca più semplice e rapida.
Se la scrittura viene interrotta, il file intermedio può essere rimosso manualmente per ottenere un file regolare e non frammentato di ciò che era stato scritto nel file incompleto.
- movie_timescale scale
Imposta la scala temporale scritta nella casella di intestazione del film (mvhd). L'intervallo è compreso tra 1 e INT_MAX. L'impostazione predefinita è 1000.
- rtpflags flags
Aggiungi tracce di suggerimenti RTP al file di output.
È possibile utilizzare i seguenti flag:
- ‘h264_mode0’
Utilizzare la modalità 0 per H.264 in RTP
- ‘latm’
Utilizzare la pacchettizzazione MP4A-LATM invece di MPEG4-GENERIC per AAC
- ‘rfc2190’
Utilizzare la pacchettizzazione RFC 2190 invece di RFC 4629 per H.263
- ‘send_bye’
Invia pacchetti RTCP BYE al termine
- ‘skip_rtcp’
Non inviare report mittente RTCP
- skip_iods bool
Salta la scrittura dell'atomo di iod (il valore predefinito è vero)
- use_editlist bool
Usa l'elenco di modifica (il valore predefinito è automatico)
- use_stream_ids_as_track_ids bool
Utilizza gli ID dello streaming come ID delle tracce (il valore predefinito è false)
- video_track_timescale scale
Imposta la scala temporale utilizzata per le tracce video. L'intervallo è compreso tra 0 e INT_MAX. Se impostato su 0, la scala temporale viene impostata automaticamente in base alla base temporale del flusso nativo. L'impostazione predefinita è 0.
- write_btrt bool
Forza o disabilita la scrittura del box bitrate all'interno del box stsd di una traccia. La casella contiene la dimensione del buffer di decodifica (in byte), il bitrate massimo e il bitrate medio per la traccia. La casella verrà saltata se nessuno di questi valori può essere calcolato. L'impostazione predefinita è -1 o auto, che scriverà la casella solo in modalità MP4.
- write_prft option
Scrivere la casella di riferimento temporale del produttore (PRFT) con un'origine temporale specificata per il campo NTP nella casella PRFT. Imposta il valore come "wallclock" per specificare timesource come orario del wallclock e "pts" per specificare timesource come valori PTS dei pacchetti di input.
- write_tmcd bool
Specificare on per forzare la scrittura di una traccia timecode, off per disabilitarla e auto per scrivere una traccia timecode solo per l'output mov e mp4 (impostazione predefinita).
L'impostazione del valore su "pts" è applicabile solo per un caso d'uso di codifica live, in cui i valori PTS sono impostati come l'ora dell'orologio alla fonte. Ad esempio, un caso d'uso di codifica con la sorgente di acquisizione decklink in cui video_pts e audio_pts sono impostati su "abs_wallclock".
4.4.3 Esempi
- Invia i contenuti Smooth Streaming in tempo reale a un punto di pubblicazione su IIS con il muxer "ismv" utilizzando ffmpeg:
ffmpeg -re <normal input/transcoding options> -movflags isml+frag_keyframe -f ismv http://server/publishingpoint.isml/Streams(Encoder1)
4.5a64
Muxer video A64 Commodore 64.
Questo muxer accetta un singolo flusso video codec a64_multi o a64_multi5.
4.6ac4
Muxer audio AC-4 grezzo.
Questo muxer accetta un singolo flusso audio AC4.
4.6.1 Opzioni
- write_crc bool
Quando abilitato, scrive un checksum CRC per ogni pacchetto sull'output, il valore predefinito è false
4.7 annunci
Muxer del flusso di trasporto dati audio.
Accetta un singolo flusso AAC.
4.7.1 Opzioni
- write_id3v2 bool
Abilita la scrittura dei tag ID3v2.4 all'inizio dello stream. L'impostazione predefinita è disabilitata.
- write_apetag bool
Abilita la scrittura dei tag APE alla fine dello stream. L'impostazione predefinita è disabilitata.
- write_mpeg2 bool
Abilita l'impostazione del bit della versione MPEG nell'intestazione del frame ADTS su 1 che indica MPEG-2. Il valore predefinito è 0, che indica MPEG-4.
4,8 bis
Muxer audio MD STUDIO.
Questo muxer accetta un singolo flusso audio ATRAC1 con uno o due canali e una frequenza di campionamento di 44100 Hz.
Poiché AEA supporta la memorizzazione del titolo della traccia, questo muxer scriverà anche il titolo dai metadati dello stream al contenitore.
4.9 aiff
Muxer del formato file di interscambio audio.
4.9.1 Opzioni
- write_id3v2 bool
Abilita la scrittura dei tag ID3v2 quando impostato su 1. Il valore predefinito è 0 (disabilitato).
- id3v2_version bool
Seleziona la versione ID3v2 da scrivere. Attualmente sono supportate solo le versioni 3 e 4 (aka ID3v2.3 e ID3v2.4). L'impostazione predefinita è la versione 4.
4.10 Alpe
Muxer audio per giochi Lego Racers di High Voltage Software.
Accetta un singolo flusso ADPCM_IMA_ALP con non più di 2 canali e una frequenza di campionamento non superiore a 44100 Hz.
Estensioni: tun, pcm
4.10.1 Opzioni
- type type
Imposta il tipo di file.
Type accetta i seguenti valori:
- ‘tun’
Imposta il tipo di file come musica. Deve avere una frequenza di campionamento di 22050 Hz.
- ‘pcm’
Imposta il tipo di file come sfx.
- ‘auto’
Imposta il tipo di file in base all'estensione del file di output. .pcm risulta nel tipo pcm altrimenti è impostato il tipo tun. (predefinito)
4.11
Muxer audio 3GPP AMR (Adaptive Multi-Rate).
Accetta un singolo flusso audio contenente un flusso AMR NB.
4.12 amv
Muxer in formato AMV (Actions Media Video).
16:13
Muxer audio Ubisoft Rayman 2 APM.
Accetta un singolo flusso audio ADPCM IMA APM.
4.14 ap
Muxer animato di grafica di rete portatile.
Accetta un singolo flusso video APNG.
4.14.1 Opzioni
- final_delay delay
Forza un ritardo espresso in secondi dopo l'ultimo fotogramma di ogni ripetizione. Il valore predefinito è 0,0.
- plays repetitions
Specificare quante volte riprodurre il contenuto, 0 provoca un loop infinito, con 1 non c'è loop
4.14.2 Esempi
- Usa ffmpeg per generare un output APNG con 2 ripetizioni e con un ritardo di mezzo secondo dopo la prima ripetizione:
ffmpeg -i INPUT -final_delay 0.5 -plays 2 out.apng
4.15argo_asf
Muxer audio ASF di Argonaut Games.
Accetta un singolo flusso audio ADPCM.
4.15.1 Opzioni
- version_major version
Sovrascrive la versione principale del file, specificata come numero intero, il valore predefinito è 2
- version_minor version
Sovrascrive la versione secondaria del file, specificata come numero intero, il valore predefinito è 1
- name name
Incorpora il nome del file nel file, se non specificato utilizza il nome del file di output. Il nome viene troncato a 8 caratteri.
4.16argo_cvg
Muxer audio CVG di Argonaut Games.
Accetta un singolo flusso audio ADPCM 22050Hz a un canale.
ILloopEreverbLe opzioni impostano i flag corrispondenti nell'intestazione che possono essere successivamente recuperati per elaborare di conseguenza il flusso audio.
4.16.1 Opzioni
- skip_rate_check bool
Salta il controllo della frequenza di campionamento (l'impostazione predefinita è falsa)
- loop bool
Imposta il flag del ciclo (il valore predefinito è falso)
- reverb boolean
Imposta il flag del riverbero (il valore predefinito è true)
4.17 asf, asf_stream
Muxer audio in formato Sistemi Avanzati/Attivi (o Streaming).
Per lo streaming deve essere selezionata la variante "asf_stream".
Tieni presente che anche Windows Media Audio (wma) e Windows Media Video (wmv) utilizzano questo muxer.
4.17.1 Opzioni
- packet_size size
Imposta la dimensione del pacchetto muxer come numero di byte. Ottimizzando questa impostazione puoi ridurre la frammentazione dei dati o il sovraccarico del muxer a seconda della tua origine. Il valore predefinito è 3200, il minimo è 100, il massimo è 64Ki.
4.18 ass
Muxer di sottotitoli ASS/SSA (SubStation Alpha).
Accetta un singolo flusso di sottotitoli ASS.
4.18.1 Opzioni
- ignore_readorder bool
Scrivi immediatamente gli eventi di dialogo, anche se sono fuori ordine, il valore predefinito è false, altrimenti vengono memorizzati nella cache finché non viene trovato l'evento temporale previsto.
4:19
Muxer AST (flusso audio).
Questo formato viene utilizzato per riprodurre l'audio su alcuni giochi Nintendo Wii.
Accetta un singolo flusso audio.
ILloopstartEloopendLe opzioni possono essere usate per definire una sezione del file da ripetere per i giocatori che rispettano tali opzioni.
4.19.1 Opzioni
- loopstart start
Specificare la posizione di inizio del loop espressa in millisecondi, da -1 a INT_MAX, nel caso in cui sia impostato -1 non viene specificato alcun loop (default -1) e il valore di fine loop viene ignorato.
- loopend end
Specificare la posizione finale del loop espressa in millisecondi, da 0 a INT_MAX, il valore predefinito è 0, nel caso in cui venga impostato 0 si assume la durata totale dello streaming.
4.20 au
Muxer audio SUN AU.
Accetta un singolo flusso audio.
4.21 avi
Muxer Audio Video Interleaved.
AVI è un formato proprietario sviluppato da Microsoft e successivamente specificato formalmente tramite la specifica Open DML.
A causa delle differenze nelle implementazioni dei lettori, potrebbe essere necessario impostare alcune opzioni per assicurarsi che l'output generato possa essere riprodotto correttamente dal lettore di destinazione.
4.21.1 Opzioni
- flipped_raw_rgb bool
Se impostato su true, memorizza l'altezza positiva per le bitmap RGB grezze, che indica che la bitmap è memorizzata dal basso verso l'alto. Tieni presente che questa opzione non capovolge la bitmap, operazione che deve essere eseguita manualmente in anticipo, ad es. utilizzando il filtro "vflip". L'impostazione predefinita è false e indica che la bitmap è archiviata dall'alto verso il basso.
- reserve_index_space size
Riserva la quantità specificata di byte per l'indice master OpenDML di ciascun flusso all'interno dell'intestazione del file. Per impostazione predefinita, nei pacchetti di dati vengono incorporati indici master aggiuntivi se non c'è più spazio nel primo indice master e sono collegati insieme come una catena di indici. Questa struttura dell'indice può causare problemi per alcuni casi d'uso, ad es. software di terze parti che si basa strettamente sulle specifiche dell'indice OpenDML o quando la ricerca dei file è lenta. Riservare spazio indice sufficiente nell'intestazione del file evita questi problemi.
Lo spazio dell'indice richiesto dipende dalla dimensione del file di output e dovrebbe essere di circa 16 byte per gigabyte. Quando questa opzione viene omessa o impostata a zero, viene indovinato lo spazio indice necessario.
Il valore predefinito è 0.
- write_channel_mask bool
Scrivi la maschera di layout del canale nell'intestazione del flusso audio.
Questa opzione è abilitata per impostazione predefinita. Disabilitare la maschera del canale può essere utile in scenari specifici, ad es. quando si uniscono più flussi audio in uno solo per compatibilità con software che supporta solo un singolo flusso audio in AVI (vedere (ffmpeg-filters)la sezione "amerge" nel manuale di ffmpeg-filters).
4.22 av
Muxer del formato immagine AV1 (Alliance for Open Media Video codec 1).
Questo muxer memorizza le immagini codificate utilizzando il codec AV1.
Accetta uno o due flussi video. Nel caso in cui siano forniti due flussi video, il secondo conterrà un unico piano contenente la maschera alfa.
Nel caso in cui venga fornita più di un'immagine, l'output generato è considerato un AVIF animato e il numero di loop può essere specificato con il comandoloopOpzione.
Questo si basa sulle specifiche di Alliance for Open Media all'URL https://aomediacodec.github.io/av1-avif.
4.22.1 Opzioni
- loop count
Numero di volte per ripetere in loop un AVIF animato, 0 specifica un loop infinito, il valore predefinito è 0
- movie_timescale timescale
Imposta la scala temporale scritta nella casella di intestazione del film (mvhd). L'intervallo è compreso tra 1 e INT_MAX. L'impostazione predefinita è 1000.
4,23 avm2
Muxer in formato ShockWave Flash (SWF)/ActionScript Virtual Machine 2 (AVM2).
Accetta un flusso audio, un flusso video o entrambi.
4,24 bit
Muxer in formato file G.729 (.bit).
Accetta un singolo flusso audio G.729.
4,25 ca
Muxer Apple CAF (Core Audio Format).
Accetta un singolo flusso audio.
4.26 codec2
Muxer audio Codec2.
Accetta un singolo flusso audio codec2.
4.27 cromastampa
Muxer per impronte digitali Chromaprint.
Per abilitare la compilazione di questo filtro è necessario configurare FFmpeg con --enable-chromaprint.
Questo muxer fornisce dati audio alla libreria Chromaprint, che genera un'impronta digitale per i dati audio forniti. Vedi: https://acoustid.org/chromaprint
Richiede un singolo flusso audio non elaborato native-endian a 16 bit firmato di massimo 2 canali.
4.27.1 Opzioni
- algorithm version
Seleziona la versione dell'algoritmo con cui eseguire l'impronta digitale. L'intervallo è compreso tra 0 e 4. La versione 3 consente il rilevamento del silenzio. L'impostazione predefinita è 1.
- fp_format format
Formato per l'output dell'impronta digitale come. Accetta le seguenti opzioni:
- ‘base64’
Impronta digitale compressa Base64 (impostazione predefinita)
- ‘compressed’
Impronta digitale compressa binaria
- ‘raw’
Impronta digitale grezza binaria
- silence_threshold threshold
Soglia per il rilevamento del silenzio. L'intervallo va da -1 a 32767, dove -1 disabilita il rilevamento del silenzio. Il rilevamento del silenzio può essere utilizzato solo con la versione 3 dell'algoritmo.
Il rilevamento del silenzio deve essere disabilitato per l'utilizzo con il servizio AcoustID. L'impostazione predefinita è -1.
4,28 crc
Muxer CRC (Cyclic Redundancy Check).
Questo muxer calcola e stampa il CRC Adler-32 di tutti i fotogrammi audio e video in ingresso. Per impostazione predefinita, i fotogrammi audio vengono convertiti in audio non elaborato a 16 bit con segno e i fotogrammi video in video non elaborato prima di calcolare il CRC.
L'output del muxer è costituito da una singola riga nel formato: CRC=0xCRC, dove CRC è un numero esadecimale riempito con 0 a 8 cifre contenente il CRC per tutti i frame di input decodificati.
Vedi anche il muxer framecrc.
4.28.1 Esempi
- Usa ffmpeg per calcolare il CRC dell'input e memorizzalo nel file out.crc:
ffmpeg -i INPUT -f crc out.crc - Usa ffmpeg per stampare il CRC su stdout con il comando:
ffmpeg -i INPUT -f crc - - Puoi selezionare il formato di output di ciascun fotogramma con ffmpeg specificando il codec e il formato audio e video. Ad esempio, per calcolare il CRC dell'audio in ingresso convertito in PCM a 8 bit senza segno e del video in ingresso convertito in video MPEG-2, utilizzare il comando:
ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f crc -
4.29 trattino
Muxer di streaming adattivo dinamico su HTTP (DASH).
Questo muxer crea segmenti e file manifest secondo lo standard MPEG-DASH ISO/IEC 23009-1:2014 e successivi aggiornamenti standard.
Per ulteriori informazioni, vedere:
- Specifiche ISO DASH: Http://standards.iso.org/ittf/PubliclyAvailableStandards/c065274_ISO_IEC_23009-1_2014.zip
- Specifiche WebM DASH: Https://sites.google.com/a/webmproject.org/wiki/adaptive-streaming/webm-dash-specification
Questo muxer crea un file manifest MPD (Media Presentation Description) e file di segmenti per ogni flusso. I file di segmento vengono inseriti nella stessa directory del file manifest MPD.
Il nome file del segmento potrebbe contenere identificatori predefiniti utilizzati nella sezione SegmentTemplate manifest come definito nella sezione 5.3.9.4.4 dello standard.
Gli identificatori disponibili sono $RepresentationID$, $Number$, $Bandwidth$ e $Time$. Oltre agli identificatori standard, è supportato anche un identificatore $ext$ specifico per ffmpeg. Quando specificato, ffmpeg sostituirà $ext$ nel nome del file con le estensioni del formato muxing come mp4, webm ecc.
4.29.1 Opzioni
- adaptation_sets adaptation_sets
Assegnare flussi a set di adattamento, specificati nella sezione AdaptationSets del manifest MPD.
Un set di adattamento contiene un insieme di uno o più flussi a cui si accede come un singolo sottoinsieme, ad es. corrispondenti flussi codificati con dimensioni diverse selezionabili dall'utente a seconda della larghezza di banda disponibile, oppure a diversi flussi audio con una lingua diversa.
Ogni set di adattamento è specificato con la sintassi:
id=index,streams=streams Dove indice deve essere un indice numerico e stream è una sequenza di indici di stream separati da ,-. È possibile specificare più set di adattamento, separati da spazi.
Per mappare tutti i flussi video (o audio) su un set di adattamento, v (o a) può essere utilizzato come identificatore del flusso anziché ID.
Quando non viene definita alcuna assegnazione, per impostazione predefinita viene utilizzato un set di adattamento per ciascun flusso.
È inoltre possibile specificare i seguenti campi facoltativi:
- descriptor
Definire il descrittore come definito dalla norma ISO/IEC 23009-1:2014/Amd.2:2015.
Per esempio:
<SupplementalProperty schemeIdUri=\"urn:mpeg:dash:srd:2014\" value=\"0,0,0,1,1,2,2\"/> La stringa descrittiva deve essere un tag XML a chiusura automatica.
- frag_duration
Sostituisci la durata del frammento globale specificata confrag_durationOpzione.
- frag_type
Sostituisci il tipo di frammento globale specificato confrag_typeOpzione.
- seg_duration
Sostituisci la durata del segmento globale specificata conseg_durationOpzione.
- trick_id
Contrassegnare un set di adattamento come contenente flussi destinati a essere utilizzati per la modalità Trick per il set di adattamento di riferimento.
Di seguito sono riportati alcuni esempi di possibili valori per l'opzione adjustment_sets:
id=0,seg_duration=2,frag_duration=1,frag_type=duration,streams=v id=1,seg_duration=2,frag_type=none,streams=a id=0,seg_duration=2,frag_type=none,streams=0 id=1,seg_duration=10,frag_type=none,trick_id=0,streams=1 - dash_segment_type type
Imposta il tipo di file del segmento DASH.
Valori possibili:
- ‘auto’
Il formato dei file del segmento trattino verrà selezionato in base al codec del flusso. Questa è la modalità di default.
- ‘mp4’
I file dei segmenti del trattino saranno in formato ISOBMFF/MP4
- ‘webm’
I file dei segmenti del trattino saranno in formato WebM
- extra_window_size size
Imposta il numero massimo di segmenti mantenuti all'esterno del manifest prima della rimozione dal disco.
- format_options options_list
Imposta le opzioni del formato contenitore (mp4/webm) utilizzando un elenco :-separato di parametri chiave=valore. I valori contenenti: i caratteri speciali devono essere sottoposti a escape.
- frag_duration duration
Imposta la lunghezza in secondi dei frammenti all'interno dei segmenti, è anche possibile impostare il valore frazionario.
- frag_type type
Imposta il tipo di intervallo per la frammentazione.
Valori possibili:
- ‘auto’
Impostare un frammento per segmento
- ‘every_frame’
Frammento ad ogni fotogramma
- ‘duration’
Frammento a intervalli di tempo specifici
- ‘pframes’
Frammento ai fotogrammi chiave e successivo riordino dei fotogrammi P (solo video, sperimentale)
- global_sidx bool
Scrivi l'atomo SIDX globale. Applicabile solo per file singolo, output mp4, modalità non streaming.
- hls_master_name file_name
Nome della playlist principale HLS. L'impostazione predefinita è master.m3u8.
- hls_playlist bool
Genera file di playlist HLS. La playlist principale viene generata con il nome file specificato dall'opzione hls_master_name. Per ogni streaming viene generato un file di playlist multimediale con nomi di file media_0.m3u8, media_1.m3u8, ecc.
- http_opts http_opts
Specificare un elenco di opzioni :-separated key=value da passare al protocollo HTTP sottostante. Applicabile solo per l'output HTTP.
- http_persistent bool
Utilizza connessioni HTTP persistenti. Applicabile solo per l'output HTTP.
- http_user_agent user_agent
Sostituisci il campo User-Agent nell'intestazione HTTP. Applicabile solo per l'output HTTP.
- ignore_io_errors bool
Ignora gli errori di I/O durante l'apertura e la scrittura. Utile per corse di lunga durata con output di rete. Questa impostazione è disabilitata per impostazione predefinita.
- index_correction bool
Abilita o disabilita la logica di correzione dell'indice del segmento. Applicabile solo quando use_template è abilitato e use_timeline è disabilitato. Questa impostazione è disabilitata per impostazione predefinita.
Quando abilitata, la logica monitora il flusso degli indici dei segmenti. Se il valore dell'indice del segmento di un flusso non si trova nella posizione prevista in tempo reale, la logica corregge quel valore dell'indice.
In genere questa logica è necessaria nei casi d'uso del live streaming. Le fluttuazioni della larghezza di banda della rete sono comuni durante lo streaming a lungo termine. Ogni fluttuazione può far sì che gli indici dei segmenti scendano indietro rispetto alla posizione prevista in tempo reale.
- init_seg_name init_name
Nome basato sul modello DASH da utilizzare per il segmento di inizializzazione. L'impostazione predefinita è init-stream$RepresentationID$.$ext$. $ext$ viene sostituito con l'estensione del nome file specifica per il formato del segmento.
- ldash bool
Abilita Dash a bassa latenza vincolando la presenza e i valori di alcuni elementi. Questa impostazione è disabilitata per impostazione predefinita.
- lhls bool
Abilita HLS a bassa latenza (LHLS). Aggiungi il tag #EXT-X-PREFETCH con l'URI del segmento corrente. I giocatori di hls.js stanno cercando di standardizzare una specifica LHLS aperta. La bozza delle specifiche è disponibile su "https://github.com/video-dev/hlsjs-rfcs/blob/lhls-spec/proposals/0001-lhls.md".
Questa opzione tenta di rispettare le specifiche aperte di cui sopra. Abilita automaticamente le opzioni di streaming e hls_playlist. Questa è una funzionalità sperimentale.
Nota: questa non è la versione LHLS di Apple.Vedi https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis
- master_m3u8_publish_rate segment_intervals_count
Pubblica la playlist principale ripetutamente dopo un numero specificato di intervalli di segmento.
- max_playback_rate rate
Impostare la velocità di riproduzione massima indicata in modo appropriato allo scopo di regolare automaticamente la latenza di riproduzione e l'occupazione del buffer durante la normale riproduzione da parte dei client.
- media_seg_name segment_name
Nome basato sul modello DASH da utilizzare per i segmenti multimediali. L'impostazione predefinita è [chunk-stream$RepresentationID$-$Number%05d$.$ext$. $ext$] viene sostituito con l'estensione del nome file specifica per il formato del segmento.
- method method
Utilizza il metodo HTTP fornito per creare file di output. Generalmente impostato su PUT o POST.
- min_playback_rate rate
Impostare la velocità di riproduzione minima indicata in modo appropriato allo scopo di regolare automaticamente la latenza di riproduzione e l'occupazione del buffer durante la normale riproduzione da parte dei client.
- mpd_profile flags
Imposta uno o più profili manifest MPD.
Valori possibili:
- ‘dash’
Profilo live del formato file multimediale MPEG-DASH ISO Base
- ‘dvb_dash’
Profilo DVB-DASH
Il valore predefinito è trattino.
- remove_at_exit bool
Abilita o disabilita la rimozione di tutti i segmenti al termine. Questa impostazione è disabilitata per impostazione predefinita.
- seg_duration duration
Imposta la lunghezza del segmento in secondi (è possibile impostare un valore frazionario). Il valore viene trattato come durata media del segmento quando l'opzione use_template è abilitata e l'opzione use_timeline è disabilitata e come durata minima del segmento per tutti gli altri casi d'uso.
Il valore predefinito è 5.
- single_file bool
Abilita o disabilita la memorizzazione di tutti i segmenti in un file, a cui si accede utilizzando intervalli di byte. Questa impostazione è disabilitata per impostazione predefinita.
Il nome del singolo file può essere specificato con l'opzione single_file_name, se non specificato assume il nome base del file manifest con l'estensione del formato di output.
- single_file_name file_name
Nome basato sul modello DASH da utilizzare per l'elemento baseURL manifest. Implica che l'opzione single_file sia impostata su true. Nel modello, $ext$ viene sostituito con l'estensione del nome file specifica per il formato del segmento.
- streaming bool
Abilita o disabilita la modalità di streaming di blocchi di output. Nella modalità di streaming a blocchi, ogni fotogramma sarà un frammento moof che forma un pezzo. Questa impostazione è disabilitata per impostazione predefinita.
- target_latency target_latency
Imposta una latenza target prevista in secondi per la pubblicazione (è possibile impostare un valore frazionario). Applicabile solo quando le opzioni streaming e write_prft sono abilitate. Si tratta di un campo informativo che i clienti possono utilizzare per misurare la latenza del servizio.
- timeout timeout
Imposta il timeout per le operazioni I/O del socket espresso in secondi (è possibile impostare un valore frazionario). Applicabile solo per l'output HTTP.
- update_period period
Imposta il periodo di aggiornamento MPD, per i contenuti dinamici. L'unità è la seconda. Se impostato su 0, il periodo viene calcolato automaticamente.
Il valore predefinito è 0.
- use_template bool
Abilita o disabilita l'uso di SegmentTemplate invece di SegmentList nel manifest. Questo è abilitato per impostazione predefinita.
- use_timeline bool
Abilita o disabilita l'uso di SegmentTimeline nella sezione manifest SegmentTemplate. Questo è abilitato per impostazione predefinita.
- utc_timing_url url
URL della pagina che restituirà il timestamp UTC in formato ISO, ad esempio https://time.akamai.com/?iso
- window_size size
Imposta il numero massimo di segmenti mantenuti nel manifest, scarta quello più vecchio. Questo è utile per lo streaming live.
Se il valore è 0, tutti i segmenti vengono mantenuti nel manifest. Il valore predefinito è 0.
- write_prft write_prft
Scrivi elementi Tempo di riferimento del produttore sui flussi supportati. Ciò consente anche di scrivere box prft nel muxer sottostante. Applicabile solo quando l'opzione utc_url è abilitata. È impostato su automatico per impostazione predefinita, nel qual caso il muxer tenterà di abilitarlo solo nelle modalità che lo richiedono.
4.29.2 Esempio
Genera una lettura di output DASH da una sorgente di input in tempo reale utilizzando ffmpeg.
Dal file di input vengono generati due flussi multimediali, entrambi contenenti un flusso video codificato tramite "libx264" e un flusso audio codificato con "libfdk_aac". Il primo flusso multimediale contiene video con bitrate di 800k e audio alla velocità predefinita, il secondo con video scalato a 320x170 pixel a 300k e audio ricampionato a 22005 Hz.
L'opzione window_size mantiene solo gli ultimi 5 segmenti con la durata predefinita di 5 secondi.
ffmpeg -re -i <input> -map 0 -map 0 -c:a libfdk_aac -c:v libx264 \
-b:v:0 800k -profile:v:0 main \
-b:v:1 300k -s:v:1 320x170 -profile:v:1 baseline -ar:a:1 22050 \
-bf 1 -keyint_min 120 -g 120 -sc_threshold 0 -b_strategy 0 \
-use_timeline 1 -use_template 1 -window_size 5 \
-adaptation_sets "id=0,streams=v id=1,streams=a" \
-f dash /path/to/out.mpd
4.30 papà
Muxer audio D-Cinema.
Accetta un singolo flusso audio a 6 canali ricampionato a 96000 Hz codificato con il codec "pcm_24daud".
4.30.1 Esempio
Usa ffmpeg per eseguire il muxing dell'audio in ingresso su un layout di canale "5.1" ricampionato a 96000Hz:
ffmpeg -i INPUT -af aresample=96000,pan=5.1 slow.302
Per le versioni di ffmpeg precedenti alla 7.0 potresti dover utilizzare il comando "asetnsamples' per limitare la dimensione dei pacchetti con multiplexing, perché questo formato non supporta i pacchetti con multiplexing più grandi di 65535 byte (3640 campioni). Per le versioni più recenti di ffmpeg, l'audio viene automaticamente suddiviso in pacchetti da 36.000 byte (2.000 campioni).
4.31 dv
Muxer DV (video digitale).
Accetta esattamente un flusso video "dvvideo" e al massimo due flussi audio "pcm_s16". Ulteriori vincoli sono definiti dalla proprietà del video, che deve corrispondere ad un profilo supportato dal video DV, e dal framerate.
4.31.1 Esempio
Usa ffmpeg per convertire l'input:
ffmpeg -i INPUT -s:v 720x480 -pix_fmt yuv411p -r 29.97 -ac 2 -ar 48000 -y out.dv
4.32 ffmetadati
Muxer di metadati FFmpeg.
Questo muxer scrive i metadati dei flussi nel formato "ffmetadata".
Vedi (ffmpeg-formats) il capitolo Metadati per informazioni sul formato.
4.32.1 Esempio
Utilizza ffmpeg per estrarre i metadati da un file di input in un file metadata.ffmeta nel formato "ffmetadata":
ffmpeg -i INPUT -f ffmetadata metadata.ffmeta
4.33 fifo
Muxer FIFO (First-In First-Out).
Lo pseudo-muxer "fifo" consente la separazione della codifica e del multiplexing utilizzando una coda first-in-first-out ed eseguendo il muxer effettivo in un thread separato.
Ciò è particolarmente utile in combinazione con il tee muxer e può essere utilizzato per inviare dati a diverse destinazioni con diversa affidabilità/velocità di scrittura/latenza.
Il muxer di destinazione viene selezionato dal nome di output o specificato tramite l'opzione fifo_format.
Il comportamento del muxer "fifo" se la coda si riempie o se l'output fallisce (ad esempio se un pacchetto non può essere scritto sull'output) è selezionabile:
- L'output può essere riavviato in modo trasparente con un ritardo configurabile tra i tentativi in base al tempo reale o all'ora del flusso elaborato.
- La codifica può essere bloccata durante un errore temporaneo o continuare a scartare i pacchetti in modo trasparente nel caso in cui la coda FIFO si riempia.
Gli utenti API devono essere consapevoli che le funzioni di callback (interrupt_callback, io_open e io_close) utilizzate all'interno di AVFormatContext devono essere thread-safe.
4.33.1 Opzioni
- attempt_recovery bool
Se si verifica un errore, tentare di ripristinare l'output. Ciò è particolarmente utile se utilizzato con l'output di rete, poiché rende possibile riavviare lo streaming in modo trasparente. Per impostazione predefinita questa opzione è impostata su false.
- drop_pkts_on_overflow bool
Se impostato su true, nel caso in cui la coda fifo si riempia, i pacchetti verranno eliminati anziché bloccare il codificatore. Ciò rende possibile continuare lo streaming senza ritardare l'input, al costo di omettere parte dello streaming. Per impostazione predefinita questa opzione è impostata su false, quindi in questi casi il codificatore verrà bloccato finché il muxer non elabora alcuni pacchetti e nessuno di essi viene perso.
- fifo_format format_name
Specificare il nome del formato. Utile se non può essere dedotto dal suffisso del nome di output.
- format_opts options
Specificare le opzioni di formato per il muxer sottostante. Le opzioni Muxer possono essere specificate come un elenco di coppie chiave=valore separate da ":".
- max_recovery_attempts count
Imposta il numero massimo di tentativi di ripristino consecutivi non riusciti dopo i quali l'output fallisce in modo permanente. Per impostazione predefinita questa opzione è impostata su 0 (illimitato).
- queue_size size
Specificare la dimensione della coda come numero di pacchetti. Il valore predefinito è 60.
- recover_any_error bool
Se impostato su true, verrà tentato il ripristino indipendentemente dal tipo di errore che ha causato l'errore. Per impostazione predefinita questa opzione è impostata su false e in caso di determinati errori (solitamente permanenti) il ripristino non viene tentato anche quando l'opzione try_recovery è impostata su true.
- recovery_wait_streamtime bool
Se impostato su false, viene utilizzato il tempo reale durante l'attesa del tentativo di ripristino (ovvero il ripristino verrà tentato dopo il tempo specificato dall'opzione recovery_wait_time).
Se impostato su true, viene invece preso in considerazione l'orario del flusso elaborato (ovvero il ripristino verrà tentato dopo aver scartato i pacchetti corrispondenti all'opzione recovery_wait_time).
Per impostazione predefinita questa opzione è impostata su false.
- recovery_wait_time duration
Specificare il tempo di attesa in secondi prima del successivo tentativo di ripristino dopo il precedente tentativo di ripristino non riuscito. Il valore predefinito è 5.
- restart_with_keyframe bool
Specificare se attendere il fotogramma chiave dopo il ripristino dall'overflow o dall'errore della coda. Questa opzione è impostata su false per impostazione predefinita.
- timeshift duration
Memorizza nel buffer la quantità specificata di pacchetti e ritarda la scrittura dell'output. Si noti che il valore diqueue_sizeL'opzione deve essere abbastanza grande da contenere i pacchetti per il timeshift. Alla fine dell'input il buffer fifo viene svuotato a velocità in tempo reale.
4.33.2 Esempio
Utilizza ffmpeg per eseguire lo streaming su un server RTMP, continuare a elaborare lo streaming alla velocità in tempo reale anche in caso di guasto temporaneo (interruzione della rete) e tentare di ripristinare lo streaming ogni secondo a tempo indeterminato:
ffmpeg -re -i ... -c:v libx264 -c:a aac -f fifo -fifo_format flv \
-drop_pkts_on_overflow 1 -attempt_recovery 1 -recovery_wait_time 1 \
-map 0:v -map 0:a rtmp://example.com/live/stream_name
4.34film_cpk
Muxer di film Sega (.cpk).
Questo formato è stato utilizzato come formato interno per diversi giochi Sega.
Per ulteriori informazioni sul formato file dei film Sega, visitare http://wiki.multimedia.cx/index.php?title=Sega_FILM.
Accetta al massimo un "cinepak" o flusso video non elaborato e al massimo un flusso audio.
4:35 pellicola
Multiplexer Adobe Filmstrip.
Questo formato viene utilizzato da diversi strumenti Adobe per archiviare l'esportazione della pellicola generata. Accetta un singolo flusso video non elaborato.
4.36 si adatta
Muxer FITS (Flexible Image Transport System).
Questo formato immagine viene utilizzato per memorizzare dati astronomici.
Per ulteriori informazioni sul formato, visitare https://fits.gsfc.nasa.gov.
4,37 fl
Muxer audio FLAC grezzo.
Questo muxer accetta esattamente un flusso audio FLAC. Inoltre, è possibile aggiungere immagini con disposizione "attached_pic".
4.37.1 Opzioni
- write_header bool
Scrivi l'intestazione del file se impostato su true, il valore predefinito è true
4.37.2 Esempio
Utilizza ffmpeg per archiviare il flusso audio da un file di input, insieme a diverse immagini utilizzate con la disposizione "attached_pic":
ffmpeg -i INPUT -i pic1.png -i pic2.jpg -map 0:a -map 1 -map 2 -disposition:v attached_pic OUTPUT
4,38 fiorini
Muxer del formato video Adobe Flash.
4.38.1 Opzioni
- flvflags flags
Valori possibili:
- ‘aac_seq_header_detect’
Posiziona l'intestazione della sequenza AAC in base ai dati del flusso audio.
- ‘no_sequence_end’
Disabilita tag di fine sequenza.
- ‘no_metadata’
Disabilita tag metadati.
- ‘no_duration_filesize’
Disabilita la durata e la dimensione del file nei metadati quando sono uguali a zero alla fine dello streaming. (Abituarsi al flusso vivente non ricercabile).
- ‘add_keyframe_index’
Utilizzato per facilitare la ricerca; in particolare per lo pseudo streaming HTTP.
4.39 framecrc
Formato di test CRC (Cyclic Redundancy Check) per pacchetto.
Questo muxer calcola e stampa il CRC Adler-32 per ciascun pacchetto audio e video. Per impostazione predefinita, i fotogrammi audio vengono convertiti in audio non elaborato a 16 bit con segno e i fotogrammi video in video non elaborato prima di calcolare il CRC.
L'output del muxer è costituito da una linea per ogni pacchetto audio e video della forma:
stream_index, packet_dts, packet_pts, packet_duration, packet_size, 0xCRC
CRC è un numero esadecimale riempito con 0 fino a 8 cifre contenente il CRC del pacchetto.
4.39.1 Esempi
Ad esempio per calcolare il CRC dei fotogrammi audio e video inINPUT, convertito in pacchetti audio e video grezzi e memorizzarlo nel fileout.crc:
ffmpeg -i INPUT -f framecrc out.crc
Per stampare le informazioni su stdout, utilizzare il comando:
ffmpeg -i INPUT -f framecrc -
Con ffmpeg, puoi selezionare il formato di output in cui vengono codificati i fotogrammi audio e video prima di calcolare il CRC per ciascun pacchetto specificando il codec audio e video. Ad esempio, per calcolare il CRC di ciascun fotogramma audio in ingresso decodificato convertito in PCM a 8 bit senza segno e di ciascun fotogramma video in ingresso decodificato convertito in video MPEG-2, utilizzare il comando:
ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f framecrc -
Vedi anche il muxer crc.
4.40 framehash
Formato di test dell'hash per pacchetto.
Questo muxer calcola e stampa un hash crittografico per ciascun pacchetto audio e video. Questo può essere utilizzato per controlli di uguaglianza pacchetto per pacchetto senza dover eseguire individualmente un confronto binario su ciascuno.
Per impostazione predefinita, i fotogrammi audio vengono convertiti in audio non elaborato a 16 bit firmato e i fotogrammi video in video non elaborato prima di calcolare l'hash, ma è possibile utilizzare anche l'output di conversioni esplicite ad altri codec. Utilizza la funzione hash crittografica SHA-256 per impostazione predefinita, ma supporta molti altri algoritmi.
L'output del muxer è costituito da una linea per ogni pacchetto audio e video della forma:
stream_index, packet_dts, packet_pts, packet_duration, packet_size, hash
Hash è un numero esadecimale che rappresenta l'hash calcolato per il pacchetto.
- hash algorithm
Utilizza la funzione hash crittografica specificata dall'algoritmo di stringa. I valori supportati includono MD5, murmur3, RIPEMD128, RIPEMD160, RIPEMD256, RIPEMD320, SHA160, SHA224, SHA256 (predefinito), SHA512/224, SHA512/256, SHA384, SHA512, CRC32 e adler32.
4.40.1 Esempi
Per calcolare l'hash SHA-256 dei fotogrammi audio e video inINPUT, convertito in pacchetti audio e video grezzi, e memorizzarlo nel file out.sha256:
ffmpeg -i INPUT -f framehash out.sha256
Per stampare le informazioni su stdout, utilizzando la funzione hash MD5, utilizzare il comando:
ffmpeg -i INPUT -f framehash -hash md5 -
Vedi anche l'hash muxer.
4.41 framemd5
Formato di test MD5 per pacchetto.
Questa è una variante del muxer framehash. A differenza di quel muxer, per impostazione predefinita utilizza la funzione hash MD5.
4.41.1 Esempi
Per calcolare l'hash MD5 dei fotogrammi audio e video in INPUT, convertiti in pacchetti audio e video grezzi, e memorizzarlo nel file out.md5:
ffmpeg -i INPUT -f framemd5 out.md5
Per stampare le informazioni su stdout, utilizzare il comando:
ffmpeg -i INPUT -f framemd5 -
Vedi anche i muxer framehash e md5.
4,42 gif
Muxer GIF animate.
Da notare che il formato GIF ha una base temporale molto ampia: il ritardo tra due fotogrammi non può quindi essere inferiore a un centesimo di secondo.
4.42.1 Opzioni
- loop bool
Imposta il numero di volte in cui eseguire il loop dell'uscita. Utilizzare -1 per nessun ciclo, 0 per il ciclo indefinito (impostazione predefinita).
- final_delay delay
Forza il ritardo (espresso in centisecondi) dopo l'ultimo fotogramma. Ogni fotogramma termina con un ritardo fino al fotogramma successivo. Il valore predefinito è -1, che è un valore speciale per indicare al muxer di riutilizzare il ritardo precedente. In caso di loop, potresti voler personalizzare questo valore per contrassegnare, ad esempio, una pausa.
4.42.2 Esempio
Codifica una gif in loop 10 volte, con un ritardo di 5 secondi tra i loop:
ffmpeg -i INPUT -loop 10 -final_delay 500 out.gif
Nota 1: se desideri estrarre i fotogrammi in file GIF separati, devi forzare il muxer image2:
ffmpeg -i INPUT -c:v gif -f image2 "out%d.gif"
4.43 gxf
Muxer GXF (General Exchange Format).
GXF è stato sviluppato da Grass Valley Group, poi standardizzato da SMPTE come SMPTE 360M ed è stato esteso in SMPTE RDD 14-2007 per includere risoluzioni video ad alta definizione.
Accetta al massimo un flusso video con codec 'mjpeg', O 'mpeg1video', O 'mpeg2video', O 'dvvideo’ con delibera ‘512x480' O '608x576’, e diversi flussi audio con frequenza 48000Hz e codec ‘pcm16_le’.
4.44 hash
Formato di test hash.
Questo muxer calcola e stampa un hash crittografico di tutti i fotogrammi audio e video in ingresso. Questo può essere utilizzato per controlli di uguaglianza senza dover eseguire un confronto binario completo.
Per impostazione predefinita, i fotogrammi audio vengono convertiti in audio non elaborato a 16 bit firmato e i fotogrammi video in video non elaborato prima di calcolare l'hash, ma è possibile utilizzare anche l'output di conversioni esplicite ad altri codec. I timestamp vengono ignorati. Utilizza la funzione hash crittografica SHA-256 per impostazione predefinita, ma supporta molti altri algoritmi.
L'output del muxer è costituito da una singola riga nel formato: algo=hash, dove algo è una breve stringa che rappresenta la funzione hash utilizzata e hash è un numero esadecimale che rappresenta l'hash calcolato.
- hash algorithm
Utilizza la funzione hash crittografica specificata dall'algoritmo di stringa. I valori supportati includono MD5, murmur3, RIPEMD128, RIPEMD160, RIPEMD256, RIPEMD320, SHA160, SHA224, SHA256 (predefinito), SHA512/224, SHA512/256, SHA384, SHA512, CRC32 e adler32.
4.44.1 Esempi
Per calcolare l'hash SHA-256 dell'input convertito in audio e video non elaborati e memorizzarlo nel file out.sha256:
ffmpeg -i INPUT -f hash out.sha256
Per stampare un hash MD5 su stdout utilizzare il comando:
ffmpeg -i INPUT -f hash -hash md5 -
Vedi anche il muxer framehash.
4,45 hd
Muxer HTTP Dynamic Streaming (HDS).
Lo streaming dinamico HTTP, o HDS, è un metodo di streaming con bitrate adattivo sviluppato da Adobe. HDS fornisce contenuti video MP4 tramite connessioni HTTP. HDS può essere utilizzato per lo streaming on-demand o live streaming.
Questo muxer crea un manifest .f4m (Adobe Flash Media Manifest File), un .abst (Adobe Bootstrap File) per ogni flusso e segmenta i file in una directory specificata come output.
È necessario che un lettore HDS possa accedervi tramite HTTPS affinché possa eseguire la riproduzione sul flusso generato.
4.45.1 Opzioni
- extra_window_size int
Numero di frammenti mantenuti all'esterno del manifest prima della rimozione dal disco
- min_frag_duration microseconds
Durata minima del frammento (in microsecondi), il valore predefinito è 1 secondo (10000000)
- remove_at_exit bool
Rimuovi tutti i frammenti al termine quando impostato su true
- window_size int
Numero di frammenti conservati nel manifest, se impostato su un valore diverso da 0. Per impostazione predefinita tutti i segmenti vengono conservati nella directory di output.
4.45.2 Esempio
Usa ffmpeg per generare file HDS nel fileoutput.hdsDirectory in tempo reale tariffa:
ffmpeg -re -i INPUT -f hds -b:v 200k output.hds
4,46 hl
Muxer Apple HTTP Live Streaming che segmenta MPEG-TS in base alla specifica HTTP Live Streaming (HLS).
Crea un file di playlist e uno o più file di segmenti. Il nome del file di output specifica il nome del file della playlist.
Per impostazione predefinita, il muxer crea un file per ogni segmento prodotto. Questi file hanno lo stesso nome della playlist, seguito da un numero sequenziale e da un'estensione .ts.
Assicurati di richiedere un GOP chiuso durante la codifica e di impostare la dimensione GOP per adattarla al vincolo temporale del segmento.
Ad esempio, per convertire un file di input con ffmpeg:
ffmpeg -i in.mkv -c:v h264 -flags +cgop -g 30 -hls_time 1 out.m3u8
Questo esempio produrrà la playlist, out.m3u8 e i file di segmento: out0.ts, out1.ts, out2.ts, ecc.
Vedere anche il segment muxer, che fornisce un'implementazione più generica e flessibile di un segmentatore e può essere utilizzato per eseguire la segmentazione HLS.
4.46.1 Opzioni
- hls_init_time duration
Imposta la lunghezza del segmento target iniziale. Il valore predefinito è 0.
La durata deve essere una specifica di durata temporale, vedere (ffmpeg-utils) la sezione Durata temporale nel manuale ffmpeg-utils(1).
Il segmento verrà tagliato sul fotogramma chiave successivo dopo che questo tempo è trascorso nel primo elenco m3u8. Dopo che la playlist iniziale è stata riempita, ffmpeg taglierà i segmenti con una durata pari a hls_time.
- hls_time duration
Imposta la lunghezza del segmento target. Il valore predefinito è 2.
La durata deve essere una specifica di durata temporale, vedere (ffmpeg-utils) la sezione Durata temporale nel manuale ffmpeg-utils(1). Il segmento verrà tagliato sul fotogramma chiave successivo una volta trascorso questo tempo.
- hls_list_size size
Imposta il numero massimo di voci della playlist. Se impostato su 0 il file elenco conterrà tutti i segmenti. Il valore predefinito è 5.
- hls_delete_threshold size
Imposta il numero di segmenti senza riferimenti da conservare sul disco prima che hls_flags delete_segments li elimini. Aumentarlo per consentire ai clienti continui di scaricare segmenti a cui si fa riferimento di recente nella playlist. Il valore predefinito è 1, il che significa che i segmenti più vecchi di hls_list_size+1 verranno eliminati.
- hls_start_number_source source
Avvia il numero di sequenza della playlist (#EXT-X-MEDIA-SEQUENCE) in base alla sorgente specificata. A meno che non sia impostato hls_flags single_file, specifica anche l'origine dei numeri di sequenza iniziali dei nomi di file di segmenti e sottotitoli. In ogni caso, se hls_flags append_list è impostato e il numero di sequenza della playlist letta è maggiore del numero di sequenza iniziale specificato, quel valore verrà utilizzato come valore iniziale.
Accetta i seguenti valori:
- generic (default)
Imposta i numeri di partenza in base al valore dell'opzione start_number.
- epoch
Imposta il numero di partenza come secondi trascorsi dall'epoca (1970-01-01 00:00:00).
- epoch_us
Imposta il numero iniziale in microsecondi dall'epoca (1970-01-01 00:00:00).
- datetime
Imposta il numero di partenza in base alla data/ora corrente come AAAAmmggHHMMSS. per esempio. 20161231235759.
- start_number number
Avvia il numero di sequenza della playlist (#EXT-X-MEDIA-SEQUENCE) dal numero specificato quando il valore hls_start_number_source è generico. (Questo è il caso predefinito.) A meno che non sia impostato hls_flags single_file, specifica anche i numeri di sequenza iniziali dei nomi di file di segmenti e sottotitoli. Il valore predefinito è 0.
- hls_allow_cache bool
Imposta esplicitamente se il client PUÒ (1) o NON DEVE (0) memorizzare nella cache i segmenti multimediali.
- hls_base_url baseurl
Aggiungi baseurl a ogni voce nella playlist. Utile per generare playlist con percorsi assoluti.
Tieni presente che il numero di sequenza della playlist deve essere univoco per ciascun segmento e non deve essere confuso con il numero di sequenza del nome del file del segmento che può essere ciclico, ad esempio se è specificata l'opzione di avvolgimento.
- hls_segment_filename filename
Imposta il nome del file del segmento. A meno che ilhls_flagsL'opzione è impostata con 'single_file’, il nome file viene utilizzato come formato stringa con l'aggiunta del numero del segmento.
Per esempio:
ffmpeg -i in.nut -hls_segment_filename 'file%03d.ts' out.m3u8 Produrrà la playlist, out.m3u8 e i file di segmento: file000.ts, file001.ts, file002.ts, ecc.
Il nome file può contenere un percorso completo o una specifica di percorso relativo, ma solo la parte del nome file senza alcun percorso sarà contenuta nell'elenco dei segmenti m3u8. Se viene specificato un percorso relativo, il percorso dei file di segmento creati sarà relativo alla directory di lavoro corrente. Quando è impostato strftime_mkdir, l'intero valore espanso del nome file verrà scritto nell'elenco dei segmenti m3u8.
Quando var_stream_map è impostato con due o più flussi varianti, il modello del nome file deve contenere la stringa "%v" e questa stringa verrà espansa nella posizione dell'indice del flusso variante nei nomi file del segmento generato.
Per esempio:
ffmpeg -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \ -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \ -hls_segment_filename 'file_%v_%03d.ts' out_%v.m3u8 Produrrà i set di file dei segmenti delle playlist: file_0_000.ts, file_0_001.ts, file_0_002.ts, ecc. e file_1_000.ts, file_1_001.ts, file_1_002.ts, ecc.
La stringa "%v" può essere presente nel nome del file o nell'ultimo nome della directory che contiene il file, ma solo in uno di essi. (Inoltre, %v potrebbe apparire più volte nell'ultima sottodirectory o nome file.) Se la stringa %v è presente nel nome della directory, le sottodirectory vengono create dopo aver espanso il modello del nome della directory. Ciò consente la creazione di segmenti corrispondenti a diversi flussi di varianti nelle sottodirectory.
Per esempio:
ffmpeg -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \ -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \ -hls_segment_filename 'vs%v/file_%03d.ts' vs%v/out.m3u8 Produrrà i set di file dei segmenti delle playlist: vs0/file_000.ts, vs0/file_001.ts, vs0/file_002.ts, ecc. e vs1/file_000.ts, vs1/file_001.ts, vs1/file_002.ts, ecc.
- strftime bool
Utilizzare strftime() su nomefile per espandere il nome file del segmento con l'ora locale. Il numero del segmento è disponibile anche in questa modalità, ma per utilizzarlo è necessario impostare "second_level_segment_index" in hls_flag e %%d sarà lo specificatore.
Per esempio:
ffmpeg -i in.nut -strftime 1 -hls_segment_filename 'file-%Y%m%d-%s.ts' out.m3u8 Produrrà la playlist, out.m3u8 e i file di segmento: file-20160215-1455569023.ts, file-20160215-1455569024.ts, ecc. Nota: su alcuni sistemi/ambienti, l'identificatore %s non è disponibile. Vedi la documentazione di strftime().
Per esempio:
ffmpeg -i in.nut -strftime 1 -hls_flags second_level_segment_index -hls_segment_filename 'file-%Y%m%d-%%04d.ts' out.m3u8 Produrrà la playlist, out.m3u8 e i file di segmento: file-20160215-0001.ts, file-20160215-0002.ts, ecc.
- strftime_mkdir bool
Utilizzato insieme a strftime, creerà tutte le sottodirectory presenti nei valori espansi dell'opzione hls_segment_filename.
Per esempio:
ffmpeg -i in.nut -strftime 1 -strftime_mkdir 1 -hls_segment_filename '%Y%m%d/file-%Y%m%d-%s.ts' out.m3u8 Creerà una directory 201560215 (se non esiste), quindi produrrà la playlist, out.m3u8, e i file segmentati: 20160215/file-20160215-1455569023.ts, 20160215/file-20160215-1455569024.ts, ecc.
Per esempio:
ffmpeg -i in.nut -strftime 1 -strftime_mkdir 1 -hls_segment_filename '%Y/%m/%d/file-%Y%m%d-%s.ts' out.m3u8 Creerà una gerarchia di directory 2016/02/15 (se qualcuna di esse non esiste), quindi produrrà la playlist, out.m3u8 e i file di segmento: 2016/02/15/file-20160215-1455569023.ts, 2016/ 02/15/file-20160215-1455569024.ts, ecc.
- hls_segment_options options_list
Imposta le opzioni del formato di output utilizzando un elenco :-separato di parametri chiave=valore. I valori contenenti: i caratteri speciali devono essere sottoposti a escape.
- hls_key_info_file key_info_file
Utilizza le informazioni in key_info_file per la crittografia del segmento. La prima riga di key_info_file specifica l'URI della chiave scritta nella playlist. L'URL della chiave viene utilizzato per accedere alla chiave di crittografia durante la riproduzione. La seconda riga specifica il percorso del file della chiave utilizzato per ottenere la chiave durante il processo di crittografia. Il file chiave viene letto come un unico array compresso di 16 ottetti in formato binario. La terza riga opzionale specifica il vettore di inizializzazione (IV) come stringa esadecimale da utilizzare al posto del numero di sequenza del segmento (predefinito) per la crittografia. Le modifiche a key_info_file comporteranno la crittografia del segmento con la nuova chiave/IV e una voce nella playlist per la nuova chiave URI/IV se hls_flags periodic_rekey è abilitato.
Formato file delle informazioni chiave:
key URI key file path IV (optional) URI chiave di esempio:
http://server/file.key /path/to/file.key file.key Percorsi di file chiave di esempio:
file.key /path/to/file.key Esempio IV:
0123456789ABCDEF0123456789ABCDEF Esempio di file con informazioni chiave:
http://server/file.key /path/to/file.key 0123456789ABCDEF0123456789ABCDEF Esempio di script di shell:
#!/bin/sh BASE_URL=${1:-'.'} openssl rand 16 > file.key echo $BASE_URL/file.key > file.keyinfo echo file.key >> file.keyinfo echo $(openssl rand -hex 16) >> file.keyinfo ffmpeg -f lavfi -re -i testsrc -c:v h264 -hls_flags delete_segments \ -hls_key_info_file file.keyinfo out.m3u8 - hls_enc bool
Abilita (1) o disabilita (0) la crittografia AES128. Quando abilitato, ogni segmento generato viene crittografato e la chiave di crittografia viene salvata come nome playlist.chiave.
- hls_enc_key key
Specificare una chiave di 16 ottetti per crittografare i segmenti, per impostazione predefinita viene generata in modo casuale.
- hls_enc_key_url keyurl
Se impostato, keyurl viene anteposto al posto di baseurl al nome file della chiave nella playlist.
- hls_enc_iv iv
Specificare il vettore di inizializzazione a 16 ottetti per ogni segmento invece di quelli generati automaticamente.
- hls_segment_type flags
Valori possibili:
- ‘mpegts’
File di segmenti di output in formato MPEG-2 Transport Stream. Questo è compatibile con tutte le versioni HLS.
- ‘fmp4’
File di segmenti di output in formato MP4 frammentato, simile a MPEG-DASH. I file fmp4 possono essere utilizzati nella versione HLS 7 e successive.
- hls_fmp4_init_filename filename
Imposta il nome file per il file di intestazione dei file di frammento, il nome file predefinito è init.mp4.
Quando strftime è abilitato, il nome file viene espanso nel segmento nome file con ora locale.
Per esempio:
ffmpeg -i in.nut -hls_segment_type fmp4 -strftime 1 -hls_fmp4_init_filename "%s_init.mp4" out.m3u8 Produrrà init in questo modo 1602678741_init.mp4.
- hls_fmp4_init_resend bool
Invia nuovamente il file init dopo l'aggiornamento del file m3u8 ogni volta, il valore predefinito è 0.
Quando var_stream_map è impostato con due o più flussi varianti, il modello del nome file deve contenere la stringa "%v", questa stringa specifica la posizione dell'indice del flusso variante nei nomi dei file init generati. La stringa "%v" può essere presente nel nome del file o nell'ultimo nome della directory che contiene il file. Se la stringa è presente nel nome della directory, le sottodirectory vengono create dopo aver espanso il modello del nome della directory. Ciò consente la creazione di file init corrispondenti a diversi flussi di varianti nelle sottodirectory.
- hls_flags flags
Valori possibili:
- ‘single_file’
Se questo flag è impostato, il muxer memorizzerà tutti i segmenti in un singolo file MPEG-TS e utilizzerà gli intervalli di byte nella playlist. Le playlist HLS generate in questo modo avranno la versione numero 4.
Per esempio:
ffmpeg -i in.nut -hls_flags single_file out.m3u8 Produrrà la playlist, out.m3u8, e un file a segmento singolo, out.ts.
- ‘delete_segments’
I file di segmenti rimossi dalla playlist vengono eliminati dopo un periodo di tempo pari alla durata del segmento più la durata della playlist.
- ‘append_list’
Aggiungi nuovi segmenti alla fine del vecchio elenco di segmenti e rimuovi #EXT-X-ENDLIST dal vecchio elenco di segmenti.
- ‘round_durations’
Arrotonda le informazioni sulla durata nelle informazioni sul segmento del file della playlist a valori interi, invece di utilizzare la virgola mobile. Se non ci sono altre funzionalità che richiedono l'utilizzo di versioni HLS superiori, ciò consentirà a ffmpeg di produrre una versione HLS 2 m3u8.
- ‘discont_start’
Aggiungi il tag #EXT-X-DISCONTINUITY alla playlist, prima delle informazioni del primo segmento.
- ‘omit_endlist’
Non aggiungere il tag EXT-X-ENDLIST alla fine della playlist.
- ‘periodic_rekey’
Il file specificato da hls_key_info_file verrà controllato periodicamente e rileverà gli aggiornamenti alle informazioni di crittografia. Assicurati di sostituire questo file in modo atomico, incluso il file contenente la chiave di crittografia AES.
- ‘independent_segments’
Aggiungi il tag #EXT-X-INDEPENDENT-SEGments alle playlist che contengono segmenti video e quando è garantito che tutti i segmenti di quella playlist inizino con un fotogramma chiave.
- ‘iframes_only’
Aggiungi il tag #EXT-X-I-FRAMES-ONLY alle playlist che contengono segmenti video e possono riprodurre solo I-frame nella modalità #EXT-X-BYTERANGE.
- ‘split_by_time’
Consenti ai segmenti di iniziare su fotogrammi diversi dai fotogrammi chiave. Ciò migliora il comportamento di alcuni giocatori quando il tempo tra i fotogrammi chiave non è coerente, ma potrebbe peggiorare le cose per altri e causare alcune stranezze durante la ricerca. Questo flag deve essere utilizzato con l'opzione hls_time.
- ‘program_date_time’
Genera tag EXT-X-PROGRAM-DATE-TIME.
- ‘second_level_segment_index’
Rendi possibile utilizzare gli indici di segmento come %%d nell'espressione dell'opzione hls_segment_filename oltre ai valori di data/ora quandostrftimeL'opzione è attiva. Per ottenere numeri a larghezza fissa con zeri finali, è disponibile il formato %%0xd dove x è la larghezza richiesta.
- ‘second_level_segment_size’
Rende possibile l'utilizzo delle dimensioni dei segmenti (contate in byte) come %%s nell'espressione dell'opzione hls_segment_filename oltre ai valori di data/ora quando strftime è attivo. Per ottenere numeri a larghezza fissa con zeri finali, è disponibile il formato %%0xs dove x è la larghezza richiesta.
- ‘second_level_segment_duration’
Consenti di utilizzare la durata del segmento (calcolata in microsecondi) come %%t nell'espressione dell'opzione hls_segment_filename oltre ai valori di data/ora quando strftime è attivo. Per ottenere numeri a larghezza fissa con zeri finali, è disponibile il formato %%0xt dove x è la larghezza richiesta.
Per esempio:
ffmpeg -i sample.mpeg \ -f hls -hls_time 3 -hls_list_size 5 \ -hls_flags second_level_segment_index+second_level_segment_size+second_level_segment_duration \ -strftime 1 -strftime_mkdir 1 -hls_segment_filename "segment_%Y%m%d%H%M%S_%%04d_%%08s_%%013t.ts" stream.m3u8 Produrrà segmenti come questo: segment_20170102194334_0003_00122200_0000003000000.ts, segment_20170102194334_0004_00120072_0000003000000.ts ecc.
- ‘temp_file’
Scrivi i dati del segmento infilename.tmpE rinominarlo in nome file solo una volta completato il segmento.
Un server web che fornisce segmenti può essere configurato per rifiutare le richieste a *.tmp per impedire l'accesso ai segmenti in corso prima che siano stati aggiunti alla playlist m3u8.
Questo flag influisce anche sul modo in cui vengono creati i file della playlist m3u8. Se questo flag è impostato, tutti i file della playlist verranno scritti in un file temporaneo e rinominati una volta completati, in modo simile a come vengono gestiti i segmenti. Ma le playlist con protocollo file e con tipo hls_playlist_type diverso da "vod" vengono sempre scritte in un file temporaneo indipendentemente da questo flag.
I file della playlist principale specificati con master_pl_name, se presenti, con il protocollo file, vengono sempre scritti nel file temporaneo indipendentemente da questo flag semaster_pl_publish_rateIl valore è diverso da zero.
- hls_playlist_type type
Se il tipo è "evento", emetti #EXT-X-PLAYLIST-TYPE:EVENT nell'intestazione m3u8. Ciò forza hls_list_size su 0; la playlist può essere solo aggiunta.
Se il tipo è "vod", emetti #EXT-X-PLAYLIST-TYPE:VOD nell'intestazione m3u8. Ciò forza hls_list_size su 0; la playlist non deve cambiare.
- method method
Utilizza il metodo HTTP indicato per creare i file hls.
Per esempio:
ffmpeg -re -i in.ts -f hls -method PUT http://example.com/live/out.m3u8 Caricherà tutti i file dei segmenti mpegts sul server HTTP utilizzando il metodo HTTP PUT e aggiornerà i file m3u8 a ogni aggiornamento utilizzando lo stesso metodo. Tieni presente che il server HTTP deve supportare il metodo specificato per il caricamento dei file.
- http_user_agent agent
Sostituisci il campo User-Agent nell'intestazione HTTP. Applicabile solo per l'output HTTP.
- var_stream_map stream_map
Specificare una stringa di mappa che definisce come raggruppare i flussi audio, video e sottotitoli in flussi di varianti diverse. I gruppi di flussi di varianti sono separati da uno spazio.
Il formato della stringa previsto è simile a questo "a:0,v:0 a:1,v:1 ....". Qui a:, v:, s: sono i tasti per specificare rispettivamente i flussi audio, video e sottotitoli. I valori consentiti sono compresi tra 0 e 9 (limitati solo in base all'uso pratico).
Quando sono presenti due o più flussi varianti, il modello del nome file di output deve contenere la stringa "%v": questa stringa specifica la posizione dell'indice del flusso variante nei nomi file della playlist del supporto di output. La stringa "%v" può essere presente nel nome del file o nell'ultimo nome della directory che contiene il file. Se la stringa è presente nel nome della directory, le sottodirectory vengono create dopo aver espanso il modello del nome della directory. Ciò consente la creazione di flussi varianti nelle sottodirectory.
Seguono alcuni esempi.
• Creare due flussi di varianti HLS. Il flusso della prima variante conterrà un flusso video con velocità in bit di 1000k e un flusso audio con velocità in bit di 64k e il flusso della seconda variante conterrà un flusso video con velocità in bit di 256k e un flusso audio con velocità in bit di 32k. Qui verranno create due playlist multimediali con nomi di file out_0.m3u8 e out_1.m3u8.
ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \ -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \ http://example.com/live/out_%v.m3u8 • Se desideri qualcosa di testo significativo invece degli indici nei nomi dei risultati, puoi specificare i nomi per ciascuna o alcune varianti. L'esempio seguente creerà due flussi varianti hls come nel precedente. Ma qui verranno create le due playlist multimediali con i nomi di file out_my_hd.m3u8 e out_my_sd.m3u8.
ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \ -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0,name:my_hd v:1,a:1,name:my_sd" \ http://example.com/live/out_%v.m3u8 • Creare tre flussi di varianti hls. Il flusso della prima variante sarà un flusso solo video con bitrate video di 1000k, il flusso della seconda variante sarà un flusso solo audio con bitrate di 64k e il flusso della terza variante sarà un flusso solo video con bitrate di 256k. Qui verranno create tre playlist multimediali con nomi di file out_0.m3u8, out_1.m3u8 e out_2.m3u8.
ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k \ -map 0:v -map 0:a -map 0:v -f hls -var_stream_map "v:0 a:0 v:1" \ http://example.com/live/out_%v.m3u8 • Creare i flussi varianti nelle sottodirectory. Qui, la prima playlist multimediale viene creata su http://example.com/live/vs_0/out.m3u8 e la seconda su http://example.com/live/vs_1/out.m3u8.
ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \ -map 0:v -map 0:a -map 0:v -map 0:a -f hls -var_stream_map "v:0,a:0 v:1,a:1" \ http://example.com/live/vs_%v/out.m3u8 • Creare due flussi varianti solo audio e due varianti solo video. Oltre al tag #EXT-X-STREAM-INF per ogni variante di streaming nella playlist principale, viene aggiunto anche il tag #EXT-X-MEDIA per i due streaming di varianti solo audio e questi vengono mappati alle due varianti solo video stream con nomi di gruppi audio "aud_low" e "aud_high". Per impostazione predefinita, viene creata una singola variante hls contenente tutti i flussi codificati.
ffmpeg -re -i in.ts -b:a:0 32k -b:a:1 64k -b:v:0 1000k -b:v:1 3000k \ -map 0:a -map 0:a -map 0:v -map 0:v -f hls \ -var_stream_map "a:0,agroup:aud_low a:1,agroup:aud_high v:0,agroup:aud_low v:1,agroup:aud_high" \ -master_pl_name master.m3u8 \ http://example.com/live/out_%v.m3u8 • Creare due flussi varianti solo audio e uno solo video. Oltre al tag #EXT-X-STREAM-INF per ogni variante di streaming nella playlist principale, viene aggiunto anche il tag #EXT-X-MEDIA per i due streaming di varianti solo audio e questi vengono mappati alla variante solo video trasmette in streaming con il nome del gruppo audio "aud_low" e la statistica predefinita del gruppo audio è NO o SÌ. Per impostazione predefinita, viene creata una singola variante hls contenente tutti i flussi codificati.
ffmpeg -re -i in.ts -b:a:0 32k -b:a:1 64k -b:v:0 1000k \ -map 0:a -map 0:a -map 0:v -f hls \ -var_stream_map "a:0,agroup:aud_low,default:yes a:1,agroup:aud_low v:0,agroup:aud_low" \ -master_pl_name master.m3u8 \ http://example.com/live/out_%v.m3u8 • Creare due flussi varianti solo audio e uno solo video. Oltre al tag #EXT-X-STREAM-INF per ogni variante di streaming nella playlist principale, viene aggiunto anche il tag #EXT-X-MEDIA per i due streaming di varianti solo audio e questi vengono mappati alla variante solo video trasmette in streaming con il nome del gruppo audio "aud_low" e la statistica predefinita del gruppo audio è NO o SÌ e un audio e una lingua si chiamano ENG, l'altra lingua audio si chiama CHN. Per impostazione predefinita, viene creata una singola variante hls contenente tutti i flussi codificati.
ffmpeg -re -i in.ts -b:a:0 32k -b:a:1 64k -b:v:0 1000k \ -map 0:a -map 0:a -map 0:v -f hls \ -var_stream_map "a:0,agroup:aud_low,default:yes,language:ENG a:1,agroup:aud_low,language:CHN v:0,agroup:aud_low" \ -master_pl_name master.m3u8 \ http://example.com/live/out_%v.m3u8 • Creare un singolo flusso di varianti. Aggiungi il tag #EXT-X-MEDIA con TYPE=SUBTITLES nella playlist principale con il nome del gruppo di sottotitoli webvtt "sottotitolo". Assicurati che il file di input contenga almeno un flusso di sottotitoli di testo.
ffmpeg -y -i input_with_subtitle.mkv \ -b:v:0 5250k -c:v h264 -pix_fmt yuv420p -profile:v main -level 4.1 \ -b:a:0 256k \ -c:s webvtt -c:a mp2 -ar 48000 -ac 2 -map 0:v -map 0:a:0 -map 0:s:0 \ -f hls -var_stream_map "v:0,a:0,s:0,sgroup:subtitle" \ -master_pl_name master.m3u8 -t 300 -hls_time 10 -hls_init_time 4 -hls_list_size \ 10 -master_pl_publish_rate 10 -hls_flags \ delete_segments+discont_start+split_by_time ./tmp/video.m3u8 - cc_stream_map cc_stream_map
Stringa di mappa che specifica diversi gruppi di sottotitoli codificati e i relativi attributi. I gruppi di stream dei sottotitoli sono separati da uno spazio.
Il formato della stringa previsto è simile a questo "ccgroup:<nome gruppo>,instreamid:<INSTREAM-ID>,lingua:<codice lingua> ....". "ccgroup" e "instreamid" sono attributi obbligatori. 'lingua' è un attributo facoltativo.
I gruppi di sottotitoli configurati utilizzando questa opzione vengono mappati su flussi di varianti diverse fornendo lo stesso nome "ccgroup" nella stringa var_stream_map.
Per esempio:
ffmpeg -re -i in.ts -b:v:0 1000k -b:v:1 256k -b:a:0 64k -b:a:1 32k \ -a53cc:0 1 -a53cc:1 1 \ -map 0:v -map 0:a -map 0:v -map 0:a -f hls \ -cc_stream_map "ccgroup:cc,instreamid:CC1,language:en ccgroup:cc,instreamid:CC2,language:sp" \ -var_stream_map "v:0,a:0,ccgroup:cc v:1,a:1,ccgroup:cc" \ -master_pl_name master.m3u8 \ http://example.com/live/out_%v.m3u8 Aggiungerà due tag #EXT-X-MEDIA con TYPE=CLOSED-CAPTIONS nella playlist principale per gli INSTREAM-ID 'CC1' e 'CC2'. Inoltre, aggiungerà l'attributo CLOSED-CAPTIONS con il nome del gruppo "cc" per i due flussi di varianti di output.
Se var_stream_map non è impostato, il primo ccgroup disponibile in cc_stream_map viene mappato al flusso della variante di output.
Per esempio:
ffmpeg -re -i in.ts -b:v 1000k -b:a 64k -a53cc 1 -f hls \ -cc_stream_map "ccgroup:cc,instreamid:CC1,language:en" \ -master_pl_name master.m3u8 \ http://example.com/live/out.m3u8 Questo aggiungerà il tag #EXT-X-MEDIA con TYPE=CLOSED-CAPTIONS nella playlist principale con nome gruppo 'cc', lingua 'en' (inglese) e INSTREAM-ID 'CC1'. Inoltre, aggiungerà l'attributo CLOSED-CAPTIONS con il nome del gruppo "cc" per il flusso della variante di output.
- master_pl_name name
Crea playlist principale HLS con il nome indicato.
Per esempio:
ffmpeg -re -i in.ts -f hls -master_pl_name master.m3u8 http://example.com/live/out.m3u8 Crea una playlist principale HLS con nomemaster.m3u8Che è pubblicato su http://example.com/live/.
- master_pl_publish_rate count
Pubblica la playlist principale ripetutamente dopo un numero specificato di intervalli di segmenti.
Per esempio:
ffmpeg -re -i in.ts -f hls -master_pl_name master.m3u8 \ -hls_time 2 -master_pl_publish_rate 30 http://example.com/live/out.m3u8 Crea una playlist principale HLS con nomemaster.m3u8E continua a pubblicarlo ripetutamente ogni 30 segmenti, ovvero ogni 60 anni.
- http_persistent bool
Utilizza connessioni HTTP persistenti. Applicabile solo per l'output HTTP.
- timeout timeout
Imposta il timeout per le operazioni I/O del socket. Applicabile solo per l'output HTTP.
- ignore_io_errors bool
Ignora gli errori di I/O durante l'apertura, la scrittura e l'eliminazione. Utile per corse di lunga durata con output di rete.
- headers headers
Imposta intestazioni HTTP personalizzate, puoi sovrascrivere le intestazioni predefinite integrate. Applicabile solo per l'output HTTP.
4.47 iamf
Muxer di modelli e formati audio immersivi (IAMF).
IAMF viene utilizzato per fornire contenuti audio coinvolgenti per la presentazione su un'ampia gamma di dispositivi sia in applicazioni di streaming che offline. Queste applicazioni includono streaming audio su Internet, servizi multicasting/broadcasting, download di file, giochi, comunicazione, realtà virtuale e aumentata e altro. In queste applicazioni, l'audio può essere riprodotto su un'ampia gamma di dispositivi, ad esempio cuffie, telefoni cellulari, tablet, TV, soundbar, sistemi home theater e grandi schermi.
Questo formato è stato promosso e progettato da Alliance for Open Media.
Per ulteriori informazioni su questo formato, vedere https://aomedia.org/iamf/.
4.48 icona
Miscelatore di file ICO.
Il formato del file icona (ICO) di Microsoft presenta alcune limitazioni rigorose che è opportuno tenere presente:
- La dimensione non può superare i 256 pixel in qualsiasi dimensione
- È possibile archiviare solo immagini BMP e PNG
- Se viene utilizzata un'immagine BMP, deve avere uno dei seguenti formati pixel:
BMP Bit Depth FFmpeg Pixel Format 1bit pal8 4bit pal8 8bit pal8 16bit rgb555le 24bit bgr24 32bit bgra - Se viene utilizzata un'immagine BMP, deve utilizzare l'intestazione DIB BITMAPINFOHEADER
- Se viene utilizzata un'immagine PNG, deve utilizzare il formato pixel rgba
4,49 ilbc
Muxer non elaborato Internet Low Bitrate Codec (iLBC).
Accetta un singolo "ilbcFlusso audio.
4.50 immagine2, immagine2pipe
Multiplexer di file immagine.
Il muxer "image2" scrive fotogrammi video su file immagine.
I nomi dei file di output sono specificati da un modello, che può essere utilizzato per produrre serie di file numerate in sequenza. Il modello può contenere la stringa "%d" o "%0Nd", questa stringa specifica la posizione dei caratteri che rappresentano una numerazione nei nomi dei file. Se viene utilizzata la forma "%0Nd", la stringa che rappresenta il numero in ciascun nome file viene completata con 0 fino a N cifre. Il carattere letterale '%' può essere specificato nel modello con la stringa "%%".
Se il modello contiene "%d" o "%0Nd", il primo nome file dell'elenco file specificato conterrà il numero 1, tutti i numeri successivi saranno sequenziali.
Il modello può contenere un suffisso utilizzato per determinare automaticamente il formato dei file immagine da scrivere.
Ad esempio, il pattern "img-%03d.bmp" specificherà una sequenza di nomi di file nel formato img-001.bmp, img-002.bmp, ..., img-010.bmp, ecc. Il pattern "img% %-%d.jpg" specificherà una sequenza di nomi di file nel formato img%-1.jpg, img%-2.jpg, ..., img%-10.jpg, ecc.
Il multiplexer di immagini supporta il formato file immagine .Y.U.V. Questo formato è speciale in quanto ogni fotogramma immagine è composto da tre file, per ciascuno dei componenti YUV420P. Per leggere o scrivere questo formato di file immagine, specificare il nome del file ".Y". Il muxer aprirà automaticamente i file '.U' e '.V' come richiesto.
Il muxer "image2pipe" accetta le stesse opzioni del muxer "image2", ma ignora la verifica e l'espansione del pattern, poiché dovrebbe scrivere sull'output del comando anziché su un file effettivamente memorizzato.
4.50.1 Opzioni
- frame_pts bool
Se impostato a 1, espande il nome del file con il pacchetto PTS (time stamp di presentazione). Il valore predefinito è 0.
- start_number count
Inizia la sequenza dal numero specificato. Il valore predefinito è 1.
- update bool
Se impostato su 1, il nome file verrà sempre interpretato semplicemente come nome file, non come modello, e il file corrispondente verrà continuamente sovrascritto con nuove immagini. Il valore predefinito è 0.
- strftime bool
Se impostato su 1, espande il nome file con le informazioni su data e ora da strftime(). Il valore predefinito è 0.
- atomic_writing bool
Scrive l'output in un file temporaneo, che viene rinominato con il nome del file di destinazione una volta completata la scrittura. L'impostazione predefinita è disabilitata.
- protocol_opts options_list
Imposta le opzioni del protocollo come un elenco :-separato di parametri chiave=valore. I valori contenenti il carattere speciale: devono essere sottoposti a escape.
4.50.2 Esempi
- Utilizza ffmpeg per creare una sequenza di file img-001.jpeg, img-002.jpeg, ..., prendendo un'immagine ogni secondo dal video in ingresso:
ffmpeg -i in.avi -vsync cfr -r 1 -f image2 'img-%03d.jpeg' Tieni presente che con ffmpeg, se il formato non è specificato con l'opzione -f e il nome del file di output specifica un formato di file immagine, il muxer image2 viene selezionato automaticamente, quindi il comando precedente può essere scritto come: ffmpeg -i in.avi -vsync cfr -r 1 'img-%03d.jpeg' Da notare inoltre che il pattern non deve necessariamente contenere "%d" o "%0Nd", ad esempio per creare un singolo file immagine img.jpeg dall'inizio del video in input è possibile utilizzare il comando: ffmpeg -i in.avi -f image2 -frames:v 1 img.jpeg - L'opzione strftime consente di espandere il nome del file con informazioni su data e ora. Controllare la documentazione della funzione strftime() per la sintassi.
Per generare file di immagine dal modello strftime() "%Y-%m-%d_%H-%M-%S", è possibile utilizzare il seguente comando ffmpeg: ffmpeg -f v4l2 -r 1 -i /dev/video0 -f image2 -strftime 1 "%Y-%m-%d_%H-%M-%S.jpg" - Imposta il nome del file con il PTS del frame corrente:
ffmpeg -f v4l2 -r 1 -i /dev/video0 -copyts -f image2 -frame_pts true %d.jpg - Pubblica i contenuti del tuo desktop direttamente su un server WebDAV ogni secondo:
ffmpeg -f x11grab -framerate 1 -i :0.0 -q:v 6 -update 1 -protocol_opts method=PUT http://example.com/desktop.jpg
4.51 IRCAM
Muxer in formato Berkeley / IRCAM / CARL Sound Filesystem (BICSF).
Il formato audio Berkeley/IRCAM/CARL, sviluppato negli anni '80, è il risultato della fusione di diversi formati e sistemi di file audio precedenti, incluso il sistema csound sviluppato dal dottor Gareth Loy presso il Computer Audio Research Lab (CARL) presso l'UC San Diego, il file system audio IRCAM sviluppato da Rob Gross e Dan Timis presso l'Institut de Recherche et Coordination Acoustique / Musique di Parigi e il Berkeley Fast Filesystem.
È stato sviluppato inizialmente come parte del Berkeley/IRCAM/CARL Sound Filesystem, una suite di programmi progettati per implementare un filesystem per applicazioni audio in esecuzione sotto Berkeley UNIX. Era particolarmente popolare nei centri di ricerca musicale accademica e fu utilizzato più volte nella creazione delle prime composizioni generate al computer.
Questo muxer accetta un singolo flusso audio contenente dati PCM.
4,52 ivf
Muxer IVF On2.
La fecondazione in vitro è stata sviluppata da On2 Technologies (precedentemente nota come Duck Corporation), per archiviare codec sviluppati internamente.
Questo muxer accetta un singolo flusso video "vp8", "vp9" o "av1".
4.53 jacosub
Muxer del formato dei sottotitoli JACOsub.
Questo muxer accetta un singolo flusso di sottotitoli "jacosub".
Per ulteriori informazioni sul formato, vedere http://unicorn.us.com/jacosub/jscripts.html.
4,54 kvag
Muxer VAG interattivo Simon & Schuster.
Questo contenitore VAG personalizzato viene utilizzato da alcuni giochi Simon & Schuster Interactive come "Real War" e "Real War: Rogue States".
Questo muxer accetta un singolo flusso audio "adpcm_ima_ssi".
4,55 l3
Bluetooth SIG Codec di comunicazione a bassa complessità audio (LC3) o Codec di comunicazione a bassa complessità ETSI TS 103 634 plus (LC3plus).
Questo muxer accetta un singolo flusso audio "lc3".
4,56 lrc
Muxer in formato file di testi LRC.
LRC (abbreviazione di LyRiCs) è un formato di file per computer che sincronizza i testi delle canzoni con un file audio, come MP3, Vorbis o MIDI.
Questo muxer accetta un singolo flusso di sottotitoli "subrip" o "testo".
4.56.1 Metadati
I seguenti tag di metadati vengono convertiti nel formato dei metadati corrispondenti:
- title
- album
- artist
- author
- creator
- encoder
- encoder_version
Se "encoder_version" non è impostato esplicitamente, viene automaticamente impostato sulla versione libavformat.
4.57 matroška
Muxer contenitore Matroska.
Questo muxer implementa le specifiche del contenitore matroska e webm.
4.57.1 Metadati
Le impostazioni dei metadati riconosciute in questo muxer sono:
- title
Imposta il nome del titolo fornito a una singola traccia. Questo viene mappato all'elemento FileDescription per un flusso scritto come allegato.
- language
Specificare la lingua della traccia nel modulo delle lingue Matroska.
La lingua può essere la forma bibliografica ISO-639-2 (ISO 639-2/B) di 3 lettere (come "fre" per il francese), oppure un codice lingua mescolato con un codice paese per le specialità linguistiche (come "fre- ca" per il francese canadese).
- stereo_mode
Imposta il layout video 3D stereo di due visualizzazioni in un'unica traccia video.
Sono riconosciuti i seguenti valori:
- ‘mono’
Il video non è stereo
- ‘left_right’
Entrambe le visualizzazioni sono disposte fianco a fianco, la visualizzazione dell'occhio sinistro è a sinistra
- ‘bottom_top’
Entrambe le viste sono disposte con orientamento dall'alto in basso, la vista dall'occhio sinistro è in basso
- ‘top_bottom’
Entrambe le visualizzazioni sono disposte con orientamento dall'alto in basso, la visualizzazione dell'occhio sinistro è in alto
- ‘checkerboard_rl’
Ciascuna visualizzazione è organizzata secondo uno schema intercalato a scacchiera, con la visualizzazione dell'occhio sinistro per prima
- ‘checkerboard_lr’
Ciascuna visualizzazione è organizzata secondo uno schema intercalato a scacchiera, con la visualizzazione dell'occhio destro per prima
- ‘row_interleaved_rl’
Ciascuna vista è costituita da un interlacciamento basato su righe, la vista dall'occhio destro è la prima riga
- ‘row_interleaved_lr’
Ciascuna vista è costituita da un interlacciamento basato su righe, la vista dall'occhio sinistro è la prima riga
- ‘col_interleaved_rl’
Entrambe le visualizzazioni sono disposte in modo interlacciato basato su colonne, la visualizzazione dall'occhio destro è la prima colonna
- ‘col_interleaved_lr’
Entrambe le visualizzazioni sono disposte in modo interlacciato basato su colonne, la visualizzazione dall'occhio sinistro è la prima colonna
- ‘anaglyph_cyan_red’
Tutti i fotogrammi sono in formato anaglifi visualizzabili attraverso filtri rosso-ciano
- ‘right_left’
Entrambe le visualizzazioni sono disposte fianco a fianco, la visualizzazione dell'occhio destro è a sinistra
- ‘anaglyph_green_magenta’
Tutti i fotogrammi sono in formato anaglifi visualizzabili attraverso filtri verde-magenta
- ‘block_lr’
Entrambi gli occhi sono collegati in un blocco, la vista con l'occhio sinistro è la prima
- ‘block_rl’
Entrambi gli occhi sono collegati in un unico blocco, la vista con l'occhio destro è la prima
Ad esempio, è possibile creare una clip 3D WebM utilizzando la seguente riga di comando:
ffmpeg -i sample_left_right_clip.mpg -an -c:v libvpx -metadata stereo_mode=left_right -y stereo_clip.webm
4.57.2 Opzioni
- reserve_index_space size
Per impostazione predefinita, questo muxer scrive l'indice per la ricerca (chiamato cue in termini Matroska) alla fine del file, perché non può sapere in anticipo quanto spazio lasciare per l'indice all'inizio del file. Tuttavia, per alcuni casi d'uso, ad es. streaming dove la ricerca è possibile ma lenta – è utile mettere l'indice all'inizio del file.
Se questa opzione è impostata su un valore diverso da zero, il muxer riserverà una dimensione di byte di spazio nell'intestazione del file e quindi proverà a scrivere i cue lì al termine del muxing. Se lo spazio riservato non è sufficiente non verrà scritta alcuna Cue, il file verrà finalizzato e la scrittura del trailer restituirà un errore. Una dimensione sicura per la maggior parte dei casi d'uso dovrebbe essere di circa 50 kB per ora di video.
Tieni presente che le cue vengono scritte solo se l'output è ricercabile e questa opzione non avrà alcun effetto in caso contrario.
- cues_to_front bool
Se impostato, il muxer scriverà l'indice all'inizio del file spostando i dati principali se necessario. Questo può essere combinato con Reserve_index_space nel qual caso i dati vengono spostati solo se lo spazio inizialmente riservato risulta essere insufficiente.
Questa opzione viene ignorata se l'output non è ricercabile.
- cluster_size_limit size
Archivia al massimo la quantità di byte fornita in un cluster.
Se non specificato, il limite viene impostato automaticamente su un valore fisso codificato.
- cluster_time_limit duration
Memorizza al massimo il numero di millisecondi fornito in un cluster.
Se non specificato, il limite viene impostato automaticamente su un valore fisso codificato.
- dash bool
Crea un file WebM conforme alle specifiche WebM DASH. Per impostazione predefinita è impostato su false.
- dash_track_number index
Numero di traccia per il flusso DASH. Di default è impostato su 1.
- live bool
Scrivi i file presupponendo che si tratti di uno streaming live. Per impostazione predefinita è impostato su false.
- allow_raw_vfw bool
Consenti la modalità VFW grezza. Per impostazione predefinita è impostato su false.
- flipped_raw_rgb bool
Se impostato su true, memorizza l'altezza positiva per le bitmap RGB grezze, che indica che la bitmap è memorizzata dal basso verso l'alto. Tieni presente che questa opzione non capovolge la bitmap, operazione che deve essere eseguita manualmente in anticipo, ad es. utilizzando il filtro "vflip". L'impostazione predefinita è false e indica che la bitmap è archiviata dall'alto verso il basso.
- write_crc32 bool
Scrivi un elemento CRC32 all'interno di ogni elemento di Livello 1. Per impostazione predefinita è impostato su true. Questa opzione viene ignorata per WebM.
- default_mode mode
Controlla come verrà impostato il FlagDefault delle tracce di output. Influisce su quali tracce i giocatori dovrebbero riprodurre per impostazione predefinita. La modalità predefinita è "passthrough’.
- ‘infer’
Ogni traccia con disposizione predefinita avrà il FlagDefault impostato. Inoltre, per ciascun tipo di traccia (audio, video o sottotitoli), se non esiste alcuna traccia con disposizione predefinita di questo tipo, la prima traccia di questo tipo verrà contrassegnata come predefinita (se esistente). Ciò garantisce che il flag predefinito sia impostato in modo sensato anche se l'input proviene da contenitori a cui manca il concetto di tracce predefinite.
- ‘infer_no_subs’
Questa modalità è la stessa di deduzione, tranne per il fatto che se non esiste alcuna traccia di sottotitoli con disposizione predefinita, nessuna traccia di sottotitoli verrà contrassegnata come predefinita.
- ‘passthrough’
In questa modalità il FlagDefault viene impostato se e solo se il flag AV_DISPOSITION_DEFAULT è impostato nella disposizione del flusso corrispondente.
4,58 md5
Formato di test MD5.
Questa è una variante dell'hash muxer. A differenza di quel muxer, per impostazione predefinita utilizza la funzione hash MD5.
Vedi anche i muxer hash e framemd5.
4.58.1 Esempi
- Per calcolare l'hash MD5 dell'input convertito in audio e video non elaborati e memorizzarlo nel file out.md5:
ffmpeg -i INPUT -f md5 out.md5 - Per stampare l'hash MD5 su stdout:
ffmpeg -i INPUT -f md5 -
MicroDVD 4,59
Muxer del formato sottotitoli MicroDVD.
Questo muxer accetta un singolo flusso di sottotitoli "microdvd".
4,60 mmf
Muxer in formato SMAF (Mobile Application Format) di musica sintetica.
SMAF è un formato di dati musicali specificato da Yamaha per dispositivi elettronici portatili, come telefoni cellulari e assistenti digitali personali.
Questo muxer accetta un singolo 'adpcm_yamahaFlusso audio. Questo muxer accetta un singolo flusso audio "adpcm_yamaha".
4.61mp3
Il muxer MP3 scrive un flusso MP3 grezzo con le seguenti funzionalità opzionali:
- Un'intestazione di metadati ID3v2 all'inizio (abilitata per impostazione predefinita). Sono supportate le versioni 2.3 e 2.4, l'opzione privata id3v2_version controlla quale viene utilizzata (3 o 4). L'impostazione di id3v2_version su 0 disabilita completamente l'intestazione ID3v2.
- Un frame Xing/LAME subito dopo l'intestazione ID3v2 (se presente). È abilitato per impostazione predefinita, ma verrà scritto solo se l'output è ricercabile. L'opzione write_xing private può essere utilizzata per disabilitarlo. Il frame contiene varie informazioni che possono essere utili al decoder, come la durata dell'audio o il ritardo dell'encoder.
- Un tag ID3v1 legacy alla fine del file (disabilitato per impostazione predefinita). Può essere abilitato con l'opzione private write_id3v1, ma poiché le sue capacità sono molto limitate, il suo utilizzo non è raccomandato.
Esempi:
Scrivi un mp3 con un'intestazione ID3v2.3 e un piè di pagina ID3v1:
ffmpeg -i INPUT -id3v2_version 3 -write_id3v1 1 out.mp3
Per allegare un'immagine ad un file mp3 selezionare sia l'audio che il flusso di immagini con mappa:
ffmpeg -i input.mp3 -i cover.png -c copy -map 0 -map 1
-metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" out.mp3
Scrivi un MP3 "pulito" senza funzionalità extra:
ffmpeg -i input.wav -write_xing 0 -id3v2_version 0 out.mp3
4,62 megabit
Muxer del flusso di trasporto MPEG.
Questo muxer implementa la norma ISO 13818-1 e parte della norma ETSI EN 300 468.
Le impostazioni dei metadati riconosciute in mpegts muxer sono service_provider e service_name. Se non sono impostati, il valore predefinito per service_provider è "FFmpeg' e il valore predefinito per service_name è 'Service01'.
4.62.1 Opzioni
Le opzioni del muxer sono:
- mpegts_transport_stream_id integer
Imposta il "transport_stream_id". Questo identifica un transponder in DVB. Il valore predefinito è 0x0001.
- mpegts_original_network_id integer
Imposta "original_network_id". Questo è l'identificatore univoco di una rete in DVB. Il suo utilizzo principale è nell’identificazione univoca di un servizio attraverso il percorso ‘Original_Network_ID, Transport_Stream_ID’. Il valore predefinito è 0x0001.
- mpegts_service_id integer
Imposta il "service_id", noto anche come programma in DVB. Il valore predefinito è 0x0001.
- mpegts_service_type integer
Imposta il programma "service_type". L'impostazione predefinita è digital_tv. Accetta le seguenti opzioni:
- ‘hex_value’
Qualsiasi valore esadecimale compreso tra 0x01 e 0xff come definito in ETSI 300 468.
- ‘digital_tv’
Servizio TV digitale.
- ‘digital_radio’
Servizio Radio Digitale.
- ‘teletext’
Servizio televideo.
- ‘advanced_codec_digital_radio’
Servizio di radio digitale con codec avanzato.
- ‘mpeg2_digital_hdtv’
Servizio HDTV digitale MPEG2.
- ‘advanced_codec_digital_sdtv’
Servizio avanzato Codec Digital SDTV.
- ‘advanced_codec_digital_hdtv’
Servizio avanzato Codec Digital HDTV.
- mpegts_pmt_start_pid integer
Imposta il primo PID per i PMT. Il valore predefinito è 0x1000, il minimo è 0x0020, il massimo è 0x1ffa. Questa opzione non ha effetto in modalità m2ts in cui il PID PMT è fisso 0x0100.
- mpegts_start_pid integer
Imposta il primo PID per i flussi elementari. Il valore predefinito è 0x0100, il minimo è 0x0020, il massimo è 0x1ffa. Questa opzione non ha effetto nella modalità m2ts in cui i PID del flusso elementare sono fissi.
- mpegts_m2ts_mode boolean
Abilita la modalità m2ts se impostata su 1. Il valore predefinito è -1 che disabilita la modalità m2ts.
- muxrate integer
Imposta un muxrate costante. L'impostazione predefinita è VBR.
- pes_payload_size integer
Imposta il payload minimo del pacchetto PES in byte. L'impostazione predefinita è 2930.
- mpegts_flags flags
Imposta i flag MPEGTS. Accetta le seguenti opzioni:
- ‘resend_headers’
Riemettere PAT/PMT prima di scrivere il pacchetto successivo.
- ‘latm’
Utilizzare la pacchettizzazione LATM per AAC.
- ‘pat_pmt_at_frames’
Riemettere PAT e PMT ad ogni fotogramma video.
- ‘system_b’
Conforme al Sistema B (DVB) anziché al Sistema A (ATSC).
- ‘initial_discontinuity’
Contrassegna il pacchetto iniziale di ciascun flusso come discontinuità.
- ‘nit’
Emetti tabella NIT.
- ‘omit_rai’
Disabilita la scrittura dell'indicatore di accesso casuale.
- mpegts_copyts boolean
Conserva i timestamp originali, se il valore è impostato su 1. Il valore predefinito è -1, che comporta lo spostamento dei timestamp in modo che inizino da 0.
- omit_video_pes_length boolean
Omettere la lunghezza del pacchetto PES per i pacchetti video. Il valore predefinito è 1 (vero).
- pcr_period integer
Sostituisci il tempo di ritrasmissione PCR predefinito in millisecondi. Il valore predefinito è -1, il che significa che l'intervallo PCR verrà determinato automaticamente: 20 ms viene utilizzato per i flussi CBR, il multiplo più alto della durata del frame che è inferiore a 100 ms viene utilizzato per i flussi VBR.
- pat_period duration
Tempo massimo in secondi tra le tabelle PAT/PMT. L'impostazione predefinita è 0,1.
- sdt_period duration
Tempo massimo in secondi tra le tabelle SDT. L'impostazione predefinita è 0,5.
- nit_period duration
Tempo massimo in secondi tra le tabelle NIT. L'impostazione predefinita è 0,5.
- tables_version integer
Imposta la versione PAT, PMT, SDT e NIT (predefinito 0, i valori validi sono compresi tra 0 e 31 inclusi). Questa opzione consente di aggiornare la struttura del flusso in modo che il consumatore standard possa rilevare la modifica. Per fare ciò, riaprire l'output AVFormatContext (in caso di utilizzo dell'API) o riavviare l'istanza di ffmpeg, modificando ciclicamente il valore tables_version:
ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111 ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111 ... ffmpeg -i source3.ts -codec copy -f mpegts -tables_version 31 udp://1.1.1.1:1111 ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111 ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111 ...
4.62.2 Esempio
ffmpeg -i file.mpg -c copy \
-mpegts_original_network_id 0x1122 \
-mpegts_transport_stream_id 0x3344 \
-mpegts_service_id 0x5566 \
-mpegts_pmt_start_pid 0x1500 \
-mpegts_start_pid 0x150 \
-metadata service_provider="Some provider" \
-metadata service_name="Some Channel" \
out.ts
4.63 mxf, mxf_d10, mxf_opatom
Multiplexer MXF.
4.63.1 Opzioni
Le opzioni del muxer sono:
- store_user_comments bool
Imposta se i commenti degli utenti devono essere archiviati se disponibili o mai. IRT D-10 non consente commenti degli utenti. L'impostazione predefinita è quindi scriverli per mxf e mxf_opatom ma non per mxf_d10
4,64 nullo
Muxer nullo.
Questo muxer non genera alcun file di output, è utile principalmente per scopi di test o benchmark.
Ad esempio per confrontare la decodifica con ffmpeg puoi usare il comando:
ffmpeg -benchmark -i INPUT -f null out.null
Tieni presente che il comando precedente non legge o scrive il file out.null, ma specificare il file di output è richiesto dalla sintassi di ffmpeg.
In alternativa puoi scrivere il comando come:
ffmpeg -benchmark -i INPUT -f null -
4,65 dado
- -syncpoints flags
Modifica l'utilizzo del punto di sincronizzazione in nut:
- Per impostazione predefinita, utilizzare i normali aiuti per la ricerca a basso costo.
- Nessuno non utilizza affatto i punti di sincronizzazione, riducendo il sovraccarico ma rendendo il flusso non ricercabile;
L'uso di questa opzione non è consigliato, poiché i file risultanti sono molto sensibili ai danni e la ricerca non è possibile. Inoltre, in generale, il sovraccarico derivante dai punti di sincronizzazione è trascurabile. Nota: -write_index 0 può essere utilizzato per disabilitare tutte le tabelle di dati in crescita, consentendo di eseguire il multiplexing di flussi infiniti con memoria limitata e senza questi svantaggi.
- Con timestamp estendi il punto di sincronizzazione con un campo wallclock.
I flag none e timestamp sono sperimentali.
- -write_index bool
Scrivi indice alla fine, l'impostazione predefinita è scrivere un indice.
ffmpeg -i INPUT -f_strict experimental -syncpoints none - | processor
4.66 ogg
Muxer contenitore Ogg.
- -page_duration duration
Durata della pagina preferita, in microsecondi. Il muxer tenterà di creare pagine della durata di circa microsecondi. Ciò consente all'utente di scendere a compromessi tra la granularità della ricerca e il sovraccarico del contenitore. Il valore predefinito è 1 secondo. Un valore pari a 0 riempirà tutti i segmenti, rendendo le pagine quanto più grandi possibile. Un valore pari a 1 utilizzerà effettivamente 1 pacchetto per pagina nella maggior parte delle situazioni, fornendo una piccola granularità di ricerca al costo di un sovraccarico aggiuntivo del contenitore.
- -serial_offset value
Valore seriale da cui impostare il numero di serie dei flussi. Impostandolo su valori diversi e sufficientemente grandi si garantisce che i file ogg prodotti possano essere concatenati in modo sicuro.
4,67 rcwt
RCWT (Raw Captions With Time) è un formato nativo di ccextractor, uno strumento open source comunemente utilizzato per l'elaborazione di sorgenti di sottotitoli chiusi (CC) 608/708. Può essere utilizzato per archiviare il bitstream CC estratto originale e per produrre un file sorgente per la successiva elaborazione o conversione. Il formato consente l'interoperabilità tra ccextractor e FFmpeg, è semplice da analizzare e può essere utilizzato per creare un backup della presentazione CC.
Questo muxer implementa la specifica a partire da marzo 2024, che è rimasta stabile e invariata da aprile 2014.
Questo muxer avrà alcune sfumature rispetto al modo in cui ccextractor esegue il mux di RCWT. Di conseguenza, finora non sono stati osservati problemi di compatibilità durante l'elaborazione dell'output con ccextractor, ma il chilometraggio può variare e gli output non corrisponderanno esattamente in termini di bit.
Una specifica gratuita di RCWT può essere trovata qui: https://github.com/CCExtractor/ccextractor/blob/master/docs/BINARY_FILE_FORMAT.TXT
4.67.1 Esempi
- Estrai i sottotitoli codificati in RCWT utilizzando lavfi:
ffmpeg -f lavfi -i "movie=INPUT.mkv[out+subcc]" -map 0:s:0 -c:s copy -f rcwt CC.rcwt.bin
4.68 segmento, stream_segment, ssegment
Segmentatore di flusso di base.
Questo muxer trasmette i flussi a un numero di file separati di durata quasi fissa. Il modello del nome del file di output può essere impostato in modo simile a image2 o utilizzando un modello strftime se l'opzione strftime è abilitata.
Stream_segment è una variante del muxer utilizzata per scrivere nei formati di output dello streaming, ovvero che non richiedono intestazioni globali, ed è consigliata per l'output ad es. ai segmenti del flusso di trasporto MPEG. ssegment è un alias più breve per stream_segment.
Ogni segmento inizia con un fotogramma chiave del flusso di riferimento selezionato, impostato tramite l'opzione reference_stream.
Tieni presente che se desideri una suddivisione accurata per un file video, devi fare in modo che i fotogrammi chiave di input corrispondano ai tempi di divisione esatti previsti dal segmentatore, altrimenti il muxer dei segmenti inizierà il nuovo segmento con il fotogramma chiave trovato subito dopo l'inizio specificato tempo.
Il multiplexer di segmenti funziona meglio con un singolo video con frequenza fotogrammi costante.
Opzionalmente può generare un elenco dei segmenti creati, impostando l'opzione segment_list. Il tipo di elenco è specificato dall'opzione segment_list_type. I nomi dei file di voce nell'elenco dei segmenti sono impostati per impostazione predefinita sul nome base dei file di segmento corrispondenti.
Vedi anche il muxer hls, che fornisce un'implementazione più specifica per la segmentazione HLS.
4.68.1 Opzioni
Il multiplexer di segmenti supporta le seguenti opzioni:
- increment_tc 1|0
Se impostato su 1, incrementa il timecode tra ciascun segmento. Se selezionato, l'input deve avere un timecode nel primo flusso video. Il valore predefinito è 0.
- reference_stream specifier
Imposta il flusso di riferimento, come specificato dall'identificatore di stringa. Se l'identificatore è impostato su auto, il riferimento viene scelto automaticamente. Altrimenti deve essere uno stream specifier (vedi il capitolo “Stream specifiers” nel manuale di ffmpeg) che specifica lo stream di riferimento. Il valore predefinito è automatico.
- segment_format format
Sostituisci il formato del contenitore interno, per impostazione predefinita viene indovinato dall'estensione del nome file.
- segment_format_options options_list
Imposta le opzioni del formato di output utilizzando un elenco :-separato di parametri chiave=valore. I valori contenenti il carattere speciale: devono essere sottoposti a escape.
- segment_list name
Genera anche un file di elenco denominato name. Se non specificato non viene generato alcun file di elenco.
- segment_list_flags flags
Imposta i flag che influenzano la generazione dell'elenco dei segmenti.
Attualmente supporta i seguenti flag:
- ‘cache’
Consenti la memorizzazione nella cache (influenza solo i file di elenco M3U8).
- ‘live’
Consenti la generazione di file live-friendly.
- segment_list_size size
Aggiorna il file di elenco in modo che contenga segmenti di dimensioni massime. Se 0 il file di elenco conterrà tutti i segmenti. Il valore predefinito è 0.
- segment_list_entry_prefix prefix
Anteporre il prefisso a ciascuna voce. Utile per generare percorsi assoluti. Per impostazione predefinita non viene applicato alcun prefisso.
- segment_list_type type
Seleziona il formato dell'inserzione.
Sono riconosciuti i seguenti valori:
- ‘flat’
Genera un elenco semplice per i segmenti creati, un segmento per riga.
- ‘csv, ext’
Genera un elenco per i segmenti creati, un segmento per riga, ciascuna riga corrisponde al formato (valori separati da virgole):
segment_filename,segment_start_time,segment_end_time Segment_filename è il nome del file di output generato dal muxer in base al modello fornito. Se necessario, viene applicato l'escape CSV (secondo RFC4180).
Segment_start_time e segment_end_time specificano l'ora di inizio e di fine del segmento espressa in secondi.
Un file di elenco con il suffisso ".csv" o ".ext" selezionerà automaticamente questo formato.
"ext" è deprecato a favore di "csv".
- ‘ffconcat’
Genera un file ffconcat per i segmenti creati. Il file risultante può essere letto utilizzando il demuxer concat FFmpeg.
Un file di elenco con il suffisso ".ffcat" o ".ffconcat" selezionerà automaticamente questo formato.
- ‘m3u8’
Genera un file M3U8 esteso, versione 3, compatibile con http://tools.ietf.org/id/draft-pantos-http-live-streaming.
Un file di elenco con il suffisso ".m3u8" selezionerà automaticamente questo formato.
Se non specificato, il tipo viene ricavato dal suffisso del nome del file di elenco.
- segment_time time
Imposta la durata del segmento su ora, il valore deve essere una specifica di durata. Il valore predefinito è "2". Vedi anche l'opzione segment_times.
Tieni presente che la suddivisione potrebbe non essere accurata, a meno che non forzi i fotogrammi chiave del flusso di riferimento in un determinato momento. Vedi la nota introduttiva e gli esempi di seguito.
- min_seg_duration time
Imposta la durata minima del segmento su time, il valore deve essere una specifica di durata. Ciò impedisce al muxer di terminare i segmenti con una durata inferiore a questo valore. Efficace solo con segment_time. Il valore predefinito è "0".
- segment_atclocktime 1|0
Se impostato su "1" viene suddiviso a intervalli orari regolari a partire dalle ore 00:00. Il valore temporale specificato in segment_time viene utilizzato per impostare la lunghezza dell'intervallo di suddivisione.
Ad esempio, con segment_time impostato su "900" è possibile creare file alle 12:00, 12:15, 12:30, ecc.
Il valore predefinito è "0".
- segment_clocktime_offset duration
Ritarda i tempi di suddivisione del segmento con la durata specificata quando si utilizza segment_atclocktime.
Ad esempio, con segment_time impostato su "900" e segment_clocktime_offset impostato su "300" ciò rende possibile creare file alle 12:05, 12:20, 12:35, ecc.
Il valore predefinito è "0".
- segment_clocktime_wrap_duration duration
Forza il segmentatore ad avviare un nuovo segmento solo se un pacchetto raggiunge il muxer entro la durata specificata dopo l'ora dell'orologio di segmentazione. In questo modo è possibile rendere il segmentatore più resistente ai salti all'ora locale all'indietro, come i secondi intercalari o la transizione all'ora solare dall'ora legale.
L'impostazione predefinita è la durata massima possibile, ovvero l'avvio di un nuovo segmento indipendentemente dal tempo trascorso dall'ultimo orario dell'orologio.
- segment_time_delta delta
Specificare l'ora di precisione quando si seleziona l'ora di inizio per un segmento, espressa come specifica di durata. Il valore predefinito è "0".
Quando viene specificato delta, un fotogramma chiave inizierà un nuovo segmento se il suo PTS soddisfa la relazione:
PTS >= start_time - time_delta Questa opzione è utile quando si divide il contenuto video, che viene sempre diviso ai limiti GOP, nel caso in cui venga trovato un fotogramma chiave subito prima del tempo di divisione specificato.
In particolare può essere utilizzato in combinazione con l'opzione force_key_frames di ffmpeg. I tempi dei fotogrammi chiave specificati da force_key_frames potrebbero non essere impostati accuratamente a causa di problemi di arrotondamento, con la conseguenza che un tempo dei fotogrammi chiave potrebbe risultare impostato appena prima del tempo specificato. Per i video con frame rate costante, un valore di 1/(2*frame_rate) dovrebbe risolvere il caso peggiore di mancata corrispondenza tra il tempo specificato e il tempo impostato da force_key_frames.
- segment_times times
Specificare un elenco di punti di divisione. times contiene un elenco di specifiche di durata separate da virgole, in ordine crescente. Vedi anche ilsegment_timeOpzione.
- segment_frames frames
Specificare un elenco di numeri di fotogrammi video divisi. frames contiene un elenco di numeri interi separati da virgole, in ordine crescente.
Questa opzione specifica di iniziare un nuovo segmento ogni volta che viene trovato un fotogramma chiave del flusso di riferimento e il numero sequenziale (a partire da 0) del fotogramma è maggiore o uguale al valore successivo nell'elenco.
- segment_wrap limit
Avvolge l'indice del segmento una volta raggiunto il limite.
- segment_start_number number
Imposta il numero di sequenza del primo segmento. Il valore predefinito è 0.
- strftime 1|0
Utilizzare la funzione strftime per definire il nome dei nuovi segmenti da scrivere. Se selezionato, il nome del segmento di output deve contenere un modello di funzione strftime. Il valore predefinito è 0.
- break_non_keyframes 1|0
Se abilitato, consente ai segmenti di iniziare su fotogrammi diversi dai fotogrammi chiave. Ciò migliora il comportamento di alcuni giocatori quando il tempo tra i fotogrammi chiave non è coerente, ma potrebbe peggiorare le cose per altri e causare alcune stranezze durante la ricerca. Il valore predefinito è 0.
- reset_timestamps 1|0
Reimposta i timestamp all'inizio di ogni segmento, in modo che ogni segmento inizi con timestamp prossimi allo zero. Ha lo scopo di facilitare la riproduzione dei segmenti generati. Potrebbe non funzionare con alcune combinazioni di muxer/codec. È impostato su 0 per impostazione predefinita.
- initial_offset offset
Specificare l'offset del timestamp da applicare ai timestamp dei pacchetti di output. L'argomento deve essere una specifica di durata temporale e il valore predefinito è 0.
- write_empty_segments 1|0
Se abilitato, scrive un segmento vuoto se non ci sono pacchetti durante il periodo in cui normalmente si estende un segmento. Altrimenti il segmento verrà riempito con il pacchetto successivo scritto. Il valore predefinito è 0.
Assicurati di richiedere un GOP chiuso durante la codifica e di impostare la dimensione GOP per adattarla al vincolo temporale del segmento.
4.68.2 Esempi
- Rimuovi il contenuto del file in.mkv in un elenco di segmenti out-000.nut, out-001.nut, ecc. e scrivi l'elenco dei segmenti generati in out.list:
ffmpeg -i in.mkv -codec hevc -flags +cgop -g 60 -map 0 -f segment -segment_list out.list out%03d.nut - Segmenta l'input e imposta le opzioni del formato di output per i segmenti di output:
ffmpeg -i in.mkv -f segment -segment_time 10 -segment_format_options movflags=+faststart out%03d.mp4 - Segmenta il file di input in base ai punti di divisione specificati dall'opzione segment_times:
ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 out%03d.nut - Utilizza l'opzione ffmpeg force_key_frames per forzare i fotogrammi chiave nell'input nella posizione specificata, insieme all'opzione del segmento segment_time_delta per tenere conto dei possibili arrotondamenti operati durante l'impostazione della durata dei fotogrammi chiave.
Per forzare i fotogrammi chiave sul file di input, è necessaria la transcodifica.ffmpeg -i in.mkv -force_key_frames 1,2,3,5,8,13,21 -codec:v mpeg4 -codec:a pcm_s16le -map 0 \ -f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 -segment_time_delta 0.05 out%03d.nut - Segmenta il file di input dividendo il file di input in base alla sequenza dei numeri di fotogramma specificata con l'opzione segment_frames:
ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_frames 100,200,300,500,800 out%03d.nut - Converti i segmenti in.mkv in TS utilizzando gli encoder libx264 e aac:
ffmpeg -i in.mkv -map 0 -codec:v libx264 -codec:a aac -f ssegment -segment_list out.list out%03d.ts - Segmenta il file di input e crea una playlist live M3U8 (può essere utilizzata come sorgente HLS live):
ffmpeg -re -i in.mkv -codec copy -map 0 -f segment -segment_list playlist.m3u8 \ -segment_list_flags +live -segment_time 10 out%03d.mkv
4.69 streaming fluido
Il muxer Smooth Streaming genera una serie di file (manifest, blocchi) adatti per essere serviti con un server web convenzionale.
- window_size
Specificare il numero di frammenti conservati nel manifest. Predefinito 0 (mantieni tutto).
- extra_window_size
Specificare il numero di frammenti mantenuti all'esterno del manifest prima della rimozione dal disco. Predefinito 5.
- lookahead_count
Specificare il numero di frammenti lookahead. Predefinito 2.
- min_frag_duration
Specificare la durata minima del frammento (in microsecondi). Predefinito 5000000.
- remove_at_exit
Specificare se rimuovere tutti i frammenti al termine. Predefinito 0 (non rimuovere).
4.70 streamhash
Formato di test dell'hash per flusso.
Questo muxer calcola e stampa un hash crittografico di tutti i frame di input, per flusso. Questo può essere utilizzato per controlli di uguaglianza senza dover eseguire un confronto binario completo.
Per impostazione predefinita, i fotogrammi audio vengono convertiti in audio non elaborato a 16 bit firmato e i fotogrammi video in video non elaborato prima di calcolare l'hash, ma è possibile utilizzare anche l'output di conversioni esplicite ad altri codec. I timestamp vengono ignorati. Utilizza la funzione hash crittografica SHA-256 per impostazione predefinita, ma supporta molti altri algoritmi.
L'output del muxer è costituito da una riga per flusso nel formato: streamindex,streamtype,algo=hash, dove streamindex è l'indice del flusso mappato, streamtype è un singolo carattere che indica il tipo di flusso, algo è una breve stringa che rappresenta la funzione hash utilizzata e hash è un numero esadecimale che rappresenta l'hash calcolato.
- hash algorithm
Utilizza la funzione hash crittografica specificata dall'algoritmo di stringa. I valori supportati includono MD5, murmur3, RIPEMD128, RIPEMD160, RIPEMD256, RIPEMD320, SHA160, SHA224, SHA256 (predefinito), SHA512/224, SHA512/256, SHA384, SHA512, CRC32 e adler32.
4.70.1 Esempi
Per calcolare l'hash SHA-256 dell'input convertito in audio e video non elaborati e memorizzarlo nel file out.sha256:
ffmpeg -i INPUT -f streamhash out.sha256
Per stampare un hash MD5 su stdout utilizzare il comando:
ffmpeg -i INPUT -f streamhash -hash md5 -
Vedi anche i muxer hash e framehash.
4,71 tee
Il tee muxer può essere utilizzato per scrivere gli stessi dati su diversi output, come file o flussi. Può essere utilizzato, ad esempio, per trasmettere in streaming un video su una rete e contemporaneamente salvarlo su disco.
È diverso dallo specificare diversi output nello strumento da riga di comando ffmpeg. Con il tee muxer, i dati audio e video verranno codificati una sola volta. Con gli output multipli convenzionali, vengono avviate più operazioni di codifica in parallelo, il che può essere un processo molto costoso. Il tee muxer non è utile quando si utilizza direttamente l'API libavformat perché è quindi possibile inviare gli stessi pacchetti direttamente a diversi muxer.
Poiché il tee muxer non rappresenta alcun formato di output particolare, ffmpeg non può selezionare automaticamente i flussi di output. Pertanto tutti i flussi destinati all'output devono essere specificati utilizzando -map. Vedi gli esempi qui sotto.
Alcuni codificatori potrebbero richiedere opzioni diverse a seconda del formato di output; il rilevamento automatico di questo non può funzionare con il tee muxer, quindi devono essere specificati esplicitamente. L'esempio principale è il flag global_header.
Le uscite slave sono specificate nel nome file assegnato al muxer, separate da '|'. Se uno qualsiasi dei nomi dello slave contiene il separatore '|', spazi iniziali o finali o qualsiasi carattere speciale, è necessario eseguire l'escape (vedere (ffmpeg-utils) la sezione "Quoting and escaping" nel manuale ffmpeg-utils(1)) .
4.71.1 Opzioni
- use_fifo bool
Se impostato su 1, gli output slave verranno elaborati in thread separati utilizzando fifo muxer. Ciò consente di compensare la diversa velocità/latenza/affidabilità degli output e impostare il ripristino trasparente. Per impostazione predefinita questa funzionalità è disattivata.
- fifo_options
Opzioni per passare alle istanze fifo pseudo-muxer. Vedi fifo.
Le opzioni del muxer possono essere specificate per ogni slave anteponendole come un elenco di coppie chiave=valore separate da ":", tra parentesi quadre. Se i valori delle opzioni contengono un carattere speciale o il separatore ’:’, devono essere sottoposti a escape; nota che questa è una fuga di secondo livello.
Vengono inoltre riconosciute le seguenti opzioni speciali:
- f
Specificare il nome del formato. Obbligatorio se non può essere dedotto dall'URL di output.
- bsfs[/spec]
Specificare un elenco di filtri bitstream da applicare all'output specificato.
È possibile specificare a quali flussi si applica un determinato filtro bitstream, aggiungendo uno specificatore di flusso all'opzione separata da /. spec deve essere uno specificatore di flusso (vedere Specificatori di flusso di formato).
Se l'identificatore del flusso non è specificato, i filtri del flusso di bit verranno applicati a tutti i flussi nell'output. Ciò causerà il fallimento dell'operazione di output se l'output contiene flussi a cui non è possibile applicare il filtro bitstream, ad es. h264_mp4toannexb applicato a un output contenente un flusso audio.
Le opzioni per un filtro bitstream devono essere specificate nel formato opt=value.
È possibile specificare diversi filtri bitstream, separati da ",".
- use_fifo bool
Ciò consente di sovrascrivere l'opzione use_fifo del muxer tee per il singolo muxer slave.
- fifo_options
Ciò consente di sovrascrivere fifo_options del muxer tee per il singolo muxer slave. Vedi fifo.
- select
Seleziona i flussi che devono essere mappati sull'output slave, specificati da uno specificatore di flusso. Se non specificato, per impostazione predefinita vengono applicati tutti i flussi mappati. Ciò causerà il fallimento dell'operazione di output se il formato di output non accetta tutti i flussi mappati.
Puoi utilizzare più identificatori di flusso separati da virgole (,) ad esempio: a:0,v
- onfail
Specificare il comportamento in caso di errore di output. Questo può essere impostato su Interrompi (che è l'impostazione predefinita) o su Ignora. l'interruzione causerà il fallimento dell'intero processo in caso di guasto su questo output slave. ignore ignorerà l'errore su questo output, quindi gli altri output continueranno senza essere influenzati.
4.71.2 Esempi
- Codifica qualcosa ed entrambi archivialo in un file WebM e trasmettilo in streaming come MPEG-TS su UDP:
ffmpeg -i ... -c:v libx264 -c:a mp2 -f tee -map 0:v -map 0:a "archive-20121107.mkv|[f=mpegts]udp://10.0.1.255:1234/" - Come sopra, ma continua lo streaming anche se l'output sul file locale fallisce (ad esempio l'unità locale si riempie):
ffmpeg -i ... -c:v libx264 -c:a mp2 -f tee -map 0:v -map 0:a "[onfail=ignore]archive-20121107.mkv|[f=mpegts]udp://10.0.1.255:1234/" - Usa ffmpeg per codificare l'input e inviare l'output a tre diverse destinazioni. Il filtro bitstream dump_extra viene utilizzato per aggiungere informazioni extradata a tutti i pacchetti di fotogrammi chiave video in uscita, come richiesto dal formato MPEG-TS. L'opzione select viene applicata a out.aac in modo che contenga solo pacchetti audio.
ffmpeg -i ... -map 0 -flags +global_header -c:v libx264 -c:a aac -f tee "[bsfs/v=dump_extra=freq=keyframe]out.ts|[movflags=+faststart]out.mp4|[select=a]out.aac" - Come sopra, ma seleziona solo lo streaming a:1 per l'uscita audio. Tieni presente che è necessario eseguire un escape di secondo livello, poiché ":" è un carattere speciale utilizzato per separare le opzioni.
ffmpeg -i ... -map 0 -flags +global_header -c:v libx264 -c:a aac -f tee "[bsfs/v=dump_extra=freq=keyframe]out.ts|[movflags=+faststart]out.mp4|[select=\'a:1\']out.aac"
4.72webm_chunk
WebM Live Chunk Muxer.
Questo muxer scrive intestazioni e blocchi WebM come file separati che possono essere utilizzati dai client che supportano i flussi WebM Live tramite DASH.
4.72.1 Opzioni
Questo muxer supporta le seguenti opzioni:
- chunk_start_index
Indice del primo pezzo (il valore predefinito è 0).
- header
Nome del file dell'intestazione in cui verranno scritti i dati di inizializzazione.
- audio_chunk_duration
Durata di ciascun blocco audio in millisecondi (il valore predefinito è 5000).
4.72.2 Esempio
ffmpeg -f v4l2 -i /dev/video0 \
-f alsa -i hw:0 \
-map 0:0 \
-c:v libvpx-vp9 \
-s 640x360 -keyint_min 30 -g 30 \
-f webm_chunk \
-header webm_live_video_360.hdr \
-chunk_start_index 1 \
webm_live_video_360_%d.chk \
-map 1:0 \
-c:a libvorbis \
-b:a 128k \
-f webm_chunk \
-header webm_live_audio_128.hdr \
-chunk_start_index 1 \
-audio_chunk_duration 1000 \
webm_live_audio_128_%d.chk
4.73 webm_dash_manifest
WebM DASH Muxer manifest.
Questo muxer implementa la specifica WebM DASH Manifest per generare l'XML manifest DASH. Supporta anche la generazione di manifest per i live streaming DASH.
Per ulteriori informazioni, vedere:
- Specifiche WebM DASH: Https://sites.google.com/a/webmproject.org/wiki/adaptive-streaming/webm-dash-specification
- Specifiche ISO DASH: Http://standards.iso.org/ittf/PubliclyAvailableStandards/c065274_ISO_IEC_23009-1_2014.zip
4.73.1 Opzioni
Questo muxer supporta le seguenti opzioni:
- adaptation_sets
Questa opzione ha la seguente sintassi: "id=x,streams=a,b,c id=y,streams=d,e" dove x e y sono gli identificatori univoci dei set di adattamento e a,b,c,d e e sono gli indici dei corrispondenti flussi audio e video. Utilizzando questa opzione è possibile aggiungere qualsiasi numero di set di adattamento.
- live
Impostalo su 1 per creare un DASH Manifest in live streaming. Impostazione predefinita: 0.
- chunk_start_index
Indice iniziale del primo pezzo. Questo andrà nell'attributo "startNumber" dell'elemento "SegmentTemplate" nel manifest. Impostazione predefinita: 0.
- chunk_duration_ms
Durata di ogni blocco in millisecondi. Questo andrà nell'attributo "duration" dell'elemento "SegmentTemplate" nel manifest. Predefinito: 1000.
- utc_timing_url
URL della pagina che restituirà il timestamp UTC in formato ISO. Questo andrà nell'attributo "value" dell'elemento "UTCTiming" nel manifest. Impostazione predefinita: Nessuna.
- time_shift_buffer_depth
Buffer di spostamento temporale più piccolo (in secondi) per il quale è garantita la disponibilità di qualsiasi rappresentazione. Questo andrà nell'attributo "timeShiftBufferDepth" dell'elemento "MPD". Predefinito: 60.
- minimum_update_period
Periodo minimo di aggiornamento (in secondi) del manifest. Questo andrà nell'attributo "minimumUpdatePeriod" dell'elemento "MPD". Impostazione predefinita: 0.
4.73.2 Esempio
ffmpeg -f webm_dash_manifest -i video1.webm \
-f webm_dash_manifest -i video2.webm \
-f webm_dash_manifest -i audio1.webm \
-f webm_dash_manifest -i audio2.webm \
-map 0 -map 1 -map 2 -map 3 \
-c copy \
-f webm_dash_manifest \
-adaptation_sets "id=0,streams=0,1 id=1,streams=2,3" \
manifest.xml
5 Metadati
FFmpeg è in grado di eseguire il dump dei metadati dai file multimediali in un semplice file di testo simile a INI con codifica UTF-8 e quindi caricarli nuovamente utilizzando il muxer/demuxer dei metadati.
Il formato del file è il seguente:
- Un file è costituito da un'intestazione e da una serie di tag di metadati divisi in sezioni, ciascuna sulla propria riga.
- L'intestazione è un ";FFMETADATA’, seguita da un numero di versione (ora 1).
- I tag dei metadati hanno il formato "chiave=valore"
- Immediatamente dopo l'intestazione seguono i metadati globali
- Dopo i metadati globali potrebbero esserci sezioni con metadati per flusso/per capitolo.
- Una sezione inizia con il nome della sezione in maiuscolo (ad esempio STREAM o CAPITOLO) tra parentesi ("[", "]") e termina con la sezione successiva o la fine del file.
- All'inizio di una sezione di capitolo potrebbe esserci una base temporale opzionale da utilizzare per i valori di inizio/fine. Deve essere nel formato "TIMEBASE=num/den", dove num e den sono numeri interi. Se manca la base temporale, si presuppone che gli orari di inizio/fine siano espressi in nanosecondi.
- Le righe vuote e le righe che iniziano con ";" o "#" vengono ignorate.
- Le chiavi o i valori dei metadati contenenti caratteri speciali ("=", ";", "#", "\" e una nuova riga) devono essere preceduti da una barra rovesciata "\".
- Tieni presente che gli spazi bianchi nei metadati (ad esempio "foo = bar") sono considerati parte del tag (nell'esempio sopra la chiave è "foo", il valore è "bar").
Un file ffmetadata potrebbe assomigliare a questo:
;FFMETADATA1
title=bike\\shed
;this is a comment
artist=FFmpeg troll team
[CHAPTER]
TIMEBASE=1/1000
START=0
#chapter ends at 0:01:00
END=60000
title=chapter \#1
[STREAM]
title=multi\
line
Utilizzando il muxer e demuxer ffmetadata è possibile estrarre i metadati da un file di input in un file ffmetadata e quindi transcodificare il file in un file di output con il file ffmetadata modificato.
L'estrazione di un file ffmetadata con ffmpeg avviene come segue:
ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE
Il reinserimento delle informazioni sui metadati modificati dal file FFMETADATAFILE può essere effettuato come segue:
ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT