Ho problemi a scrivere video h264 con OpenCV 3 tramite FFmpeg ("'X', '2', '6', '4'" FOURCC). Ho visto tutti i post correlati finora su SO, ma nulla aiuta. Codice:Scrittura x264 da OpenCV 3 con FFmpeg su Linux
cv::VideoWriter writer(output_path.string(), CV_FOURCC('X','2','6','4'), 60, frame_size);
uscita:
OpenCV: FFMPEG: tag 0x34363258/'X264' non è supportato con id codec 28 e il formato 'mp4/MP4 (MPEG-4 Part 14)' OpenCV : FFMPEG: fallback su utilizza tag 0x00000021/'! ???'
Il video risultante è estremamente piccolo (byte-saggio) e illeggibile. Impostando i risultati da four_cc a -1 in "unknown tag" da FFmpeg, non ho la possibilità di scegliere il codec come suggerito da altri.
I OpenCV 3 stati doc: backend
FFMPEG con contenitore MP4 utilizza nativamente altri valori come fourcc codice: vedi ObjectType, quindi potresti ricevere un messaggio di avviso da OpenCV sulla conversione di codice fourcc.
Quella pagina che refrence non hai h264/x264 elencato, e non sono sicuro come interpretare questa affermazione, dal momento che earlier SO posts sembrano tutta la lista X.2.6.4 come il codice appropriato. Usando H.2.6.4 si ottiene effettivamente un output identico.
Eventuali suggerimenti/soluzioni alternative?
P.S. il ffmpeg è più up-to-date da manutentori di Ubuntu, elenca che è stato configurato con --enable-libx264
EDIT: ho cercato di utilizzare il contenitore mkv invece di mp4. L'avviso sul tag non supportato è andato via, ma il video risultante è ancora illeggibile.
Non so come risolvere questo problema, ma 'VideoWriter' non è molto potente. Probabilmente hai bisogno di salvare il tuo video con qualche formato di lavoro, e poi convertire in H264 con ffmpeg. – Miki
@Miki se conosci un modo per convertire correttamente le matrici opencv in x264_picture_t per usare direttamente x264, potrebbe funzionare. Ho provato a convertire in YUV_I420 e ad impostare manualmente i campi di x264_picture_t, ma fino ad ora non è riuscito. –