ffplay - come riprodurre file video e audio separati


9

Quindi sono in grado di transcodificare file video e audio separati in un file filmato, in questo modo:

ffmpeg -ss 0 -lowres 0 -r 24 -i dcp/picture.mxf -vf "xyz2rgb" -i mov/sound.wav -ac 2 -ab 256k -vb 3000k -t 10 -y mov/movie.mp4

E guarda e ascolta il film risultante in questo modo:

ffplay -ss 0 -lowres 1 -vf "xyz2rgb" mov/movie.mp4

Tuttavia, per evitare di dover transcodificare il film e il suono insieme in un file prima di poterlo vedere, vorrei semplicemente riprodurre i due file separati insieme. Per quanto ne so, ffplay non ti consente di combinare due file diversi (giusto?).

Leggendo questi forum sembra che tu possa inviare un output di ffmpeg a ffplay . Quanto segue è il più vicino possibile. Non è così vicino. :( Le informazioni video vengono chiaramente trasferite, ma è una "neve" verde nella giusta dimensione del fotogramma, con accenni di immagini reali che danzano all'interno della terribile neve verde. In questo modo so che qualcosa dei dati reali delle immagini viene trasferito , semplicemente non viene visualizzato correttamente.

E nessun audio riprodotto. Il suono non si ripete (non credo.) Ora ... Sono bloccato. Quanto segue suggerisce cosa sto cercando di fare, ma non funziona:

ffmpeg -ss 0 -lowres 0 -r 24 -i dcp/picture.mxf -vf "xyz2rgb" -i mov/sound.wav -f rawvideo - | ffplay -f rawvideo -vf "xyz2rgb" -s 1998x1080 -

Risposte:


4

Le informazioni video vengono chiaramente trasferite, ma è una "neve" verde nella giusta dimensione del fotogramma, con accenni di immagini reali che danzano all'interno della terribile neve verde.

Questo deve essere il formato pixel. Stai applicando il xyz2rgbfiltro che converte lo spazio colore DCP in RGB e quindi esegui il piping del video non elaborato ffplay. Qui, stai applicando di nuovo il xyz2rgbfiltro , che probabilmente causa le distorsioni, poiché FFmpeg non ha idea di come sia codificato il video raw. Farà quello che vuoi con il video, anche convertendo lo spazio colore due volte.


Ho ottenuto buoni risultati eseguendo il piping del formato Matroska ffplayinvece di rawvideo, il che ti dà anche la possibilità di decodificare l'audio (vedi sotto). Il formato Matroska può contenere qualsiasi tipo di codec.

Nota che l'ordine delle opzioni è importante in FFmpeg e probabilmente dovresti usare una versione più recente in quanto è più severo su dove metti le opzioni:

  • Le opzioni globali come -yprima vengono.
  • Quindi, specifica le opzioni per la lettura dei file di input: -r 24forza la frequenza dei fotogrammi per il picture.mxffile.
  • Quindi specificare tutti i file di input.
  • Poi arrivano le opzioni di codec come filtri video, bitrate video, ecc.

Nella tua situazione, ha senso solo copiare il flusso audio, poiché non abbiamo davvero bisogno di transcodificarlo. Il video deve essere transcodificato per poter applicare il filtro.

Qualcosa del genere dovrebbe fare. Nota come impostiamo esplicitamente il formato di output come matroskae lasciamo ffplaycapire il resto stesso:

ffmpeg -r 24 -i dcp/picture.mxf -i mov/sound.wav \
-filter:v "xyz2rgb" -b:v 3000k -c:a copy -t 10 -f matroska - | \
ffplay -

Ho usato la sintassi (meno ambigua) dell'IMO per opzioni come -filter:vinvece di -vf, -b:vinvece di -vbe -c:ainvece di -acodec.

Se quel formato non funziona per te, prova AVI:

ffmpeg -i picture.mxf -i sound.wav -f avi - | ffplay -

Questo ha funzionato per me senza problemi e non mi ha nemmeno richiesto di utilizzare il filtro di cui avevi bisogno. Anche l'audio funzionava.


slhck, grazie per questo! OK, ho capito: <br/> <br/> Impossibile trovare un formato di output adatto per '-filter: v' -filter: v: argomento non valido <br> <br> ?? (lo stesso per -vf). Il codec e il filtro provengono da qui: goo.gl/avE1f - l'autore l'ha scritto e progettato un'installazione personalizzata di ffmpeg (una versione che funziona solo con questa procedura e i suoi file) che include il codec proprietario e il filtro dello spazio colore, e quindi può decodificarlo. L'installazione personalizzata di ffmeg deve essere in grado di leggere la sequenza di immagini proprietaria JPEG2000 MJPEG contenuta all'interno dell'immagine MFX. Se questo aiuta a notare :)
Bill Rudolph Yaber Russell

Ooops, sono un manichino, ho dimenticato di rimuovere le interruzioni "\" dalla riga di comando. Ad ogni modo, ora quando inserisco il tuo suggerimento, i numeri mostrano lo streaming ma nessuna finestra si apre, quindi circa 20 secondi dopo si interrompe con: <br /> <br /> Errore di segmentazione: 1136,0 dimensioni = 138 kB tempo = 00: 00: 00.08 bitrate = 13445.2kbit / s
Bill Rudolph Yaber Russell

UN'IMMAGINE È VALUTA MIGLIAIA DI PAROLE - qui, questo pratico video di cattura
Bill Rudolph Yaber Russell

Grazie mille per il video. Prima di tutto, il tuo primo comando rawvideo ha il problema che stai specificando la dimensione sbagliata. Il tuo input ha 500x270, o almeno è quello che viene convogliato ffplay. Inoltre, l'output ha rgb48lecome formato di pixel (a causa del filtro), ma ffplayassume yuv420p, quindi è anche necessario specificare che: ffplay -f rawvideo -s 500x270 -pix_fmt rgb48le -. Per quanto riguarda il segfault: nessuna idea ... forse potresti creare e caricare un piccolo file di prova da qualche parte?
slhck

Oooh, tesoro, prova i file! Anzi, grazie. Il motivo di 500x270 è che ho specificato "lores 2" che lo riduce di dimensioni due volte (per adattarsi a un afferrare lo schermo ordinato per te :) Quindi mi sembra di aver perso uno. A titolo di sfondo, questo file è un DCP fatto in casa (si pensi alla "stampa digitale del film" per un cinema, motivo per cui i media sono così pericolosi), 2K a 1998x1080 (aspetto di 1,85 pixel quadrati). Quando si estrae la sequenza di immagini è corretta, io e ieri abbiamo inviato il pacchetto e l'hanno riprodotto su un DLP al cinema dove verrà mostrato (per una notte al festival) - ed era giusto (eh!).
Bill Rudolph Yaber Russell

3

Questo non transcodifica i flussi:

ffmpeg -i video.mkv -i audio.mkv -c copy -map 0:0 -map 1:1 output.mkv

-map 1:1= secondo file, stream 1 (solitamente audio). -c copy= -c:v copy -c:a copy. Per impostazione predefinita, il file combinato è lungo quanto il file più lungo, ma -shortestlo renderebbe lungo quanto il file più corto.


Grazie per queste informazioni. Non ho bisogno di un file di output, ma questi interruttori sono veramente buoni da sapere.
Bill Rudolph Yaber Russell

3
ffmpeg -lowres 2 -ss 0 -r24 -i MOVIE.MOV -ss 0 -i AUDIO.WAV -vf xyz2rgb -ac: 2 -c:v mpeg2video -f avi - | ffplay -

Per i miei scopi, ciò consente una rapida revisione dei contenuti di un DCP (pacchetto Digital Cinema) che è possibile creare con strumenti open source . DCP utilizza lo spazio colore xyz, quindi è necessario disporre di un filtro video xyz installato , altrimenti non è possibile utilizzarlo nella riga sopra. (Va bene, sembrerà solo pesantemente arancione, non vedrai i veri colori.)

Ho aggiunto il codec mpeg2video b / c, anche se la qualità è ridotta, è a bassa frequenza e buffer un po ', quindi si comporta in modo più fluido sulla mia macchina. (Inoltre, per qualche motivo, senza prima transcodificare ottengo solo un frame di blocco dalla sequenza jpeg2000 mjpeg che si alimenta a un potente 125mb / s dall'MXF, a meno che non inizi "- ss 0", cioè all'inizio del file.) Con una macchina MOLTO VELOCE, specificando nessun codec (rimuovi "-c: v mpeg2video"), full size ("-lores 0"), e partendo da 0 (-ss 0), puoi teoricamente rivedere il cinema 2K DCP di qualità esattamente come è. Bene, ad eccezione di eventuali istruzioni speciali incluse nell'XML: sottotitoli o altra programmazione. Ma in generale. (BTW "-ac: 2" downmix da 5.1 a 2.0 - anche se potresti avere hardware che supporta l'audizione 5.1, nel qual caso usa "-c: una copia".)

Grazie a Matthias a Belle-Nuit , e slhck sopra per FOR PAZIENTE che mi guida attraverso questo. Grazie!!!! Questo è abbastanza utile. E infatti, mi ha salvato da una proiezione di film potenzialmente imbarazzante al teatro Aero di domenica sera. La numerazione della sequenza delle immagini era fuori sequenza - l'ho trovata con questa e risolta!

Wow, tutto questo per una sola riga di comando, chi lo sapeva;)

Cheereo - b worldpoop.com


Ho ricevuto questo errore: Nessun filtro simile: 'xyz2rgb'
Dr.jacky,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.