Personalmente, mi piace la risposta di @ Mulvya. Il formato .rgb è molto più semplice. Tuttavia, se si passa questo file, è necessario sempre includere note con esso (ad esempio: larghezza, altezza, framerate previsto, ecc.), Altrimenti è un mare di byte senza alcuna idea di dove fermarsi per fotogramma.
Per quanto riguarda il .nut formato come lei ha chiesto in precedenza ...
Ogni fotogramma video sarà classificato come un fotogramma chiave (in quanto si tratta di un'immagine completa non compresso).
Prima trovare la sezione dei dati per i vostri fotogrammi chiave ... Se vuoi inserire una sequenza di codice di avvio in questo modo:
4E 4B E4 AD EE CA 45 69
.
per essere sicuri che questa è la sezione fotogrammi chiave di dati, il successivo byte vengono sempre impostate come:
06 00 00 00 00 00 00 03
.
Poi il successivo byte contengono Flags e byte totali utilizzati per questo fotogramma chiave (es: per un'immagine 100 x 100 x 3
). Diventa complicato perché ora devi controllare a livello di bit non solo a livello di byte ... La versione breve di questa storia è (per un'immagine 100 x 100
) è solo saltare i successivi 4 byte che dovrebbero essere 00 81 EA 30
per arrivare a i 30 000 byte di dati RGB. e:
(a) Primo fotogramma saltare 4 byte (deve essere 00 81 EA 30
) + estrarre i seguenti 30 000 byte.
(b) Questo porta a un altro codice del keyframe: 4E 4B E4 AD EE CA 45 69
. Seguito da 15 byte in grado di saltare (di cui l'ultimo è 30
) e ottieni i 30K di dati RGB dell'immagine.
(c) Per tutti gli altri fotogrammi ripetere il punto (b), per cui è: salta byte di codice di inizio + Skip successivo byte + Estrarre prossimi byte per un'immagine. Ripeti fino alla fine.
- PS: Come nota finale ... Questi 4 byte sono solo 4 a causa dei bit totali necessari per la definizione (flag ecc.) Di un'immagine 100 x 100. Altri bit verranno utilizzati per un'immagine di dimensioni maggiori.In tal caso, si analizzano realmente i singoli bit, anche i bit finali prima che i dati di un frame diano sempre la dimensione dei byte richiesti per l'estrazione delle immagini. Fammi sapere se hai bisogno di quelle informazioni.
risposta Old
non riesco a capire cosa formattare il carico utile è in. Ho controllato wikipedia per il formato video non compresso, ma che era nessun aiuto ...
-f mpegts
significa forza il formato di uscita sia mpegts indipendentemente dall'estensione del file.
Quindi hai davvero il formato MPEG TS e non è mai stato il formato RAW. Quelle 3 lettere, r-a-w, nel tuo nome file sono fuorvianti.
Non riesco a verificare quale formato sia effettivamente necessario quando si dice solo "video non compresso". E 'RGB che vuoi? Conosco solo AVI e FLV come formati che supportano i frame RGB (probabilmente MOV lo può fare ma non lo ha mai provato). In anycase avete bisogno di un contenitore di per i vostri RGB i dati della struttura
AVI contenitore:
ffmpeg -video_size 1920x1080 -framerate 30 -f x11grab -i :0.0 -c:v rawvideo -pix_fmt rgb24 video.avi
FLV contenitore:
ffmpeg -video_size 1920x1080 -framerate 30 -f x11grab -i :0.0 -c:v flashsv -pix_fmt rgb24 video.flv
PS: Forse le informazioni in this answer possono aiutarti a decidere sul formato di output del contenitore &.
fonte
2016-06-17 10:48:05
eseguire ffprobe su video.raw e postare l'output – szatmary
@szatmary ffprobe restituisce un errore (https://gist.github.com/mjpuser/edb891d0af2680e657249cf6fd96f7ee). Ho compilato ffmpeg in base a https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu – Matt
Sembra che ffmpeg non supporti il muxing video non elaborato in TS. ffplay non lo riprodurrà. – Mulvya