2015-07-22 26 views
5

Sto cercando uno strumento/codice open source o una guida per estrarre i vettori di movimento (MV) di una sequenza di bit codificata H.264. Sono già consapevole del fatto che i vettori di movimento possono essere visualizzati utilizzando ffmpeg con il seguente comando:Vettori di movimento di estrazione dal flusso di bit H.264

ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb

Tuttavia, voglio produrre un file di registro in cui le MV di P e B frame sono elencati fotogramma per fotogramma. Ho controllato la struttura di MV da libavutil/motion_vector.h, ma non sono riuscito a trovare un esempio che mostra come vengono estratti e posizionati sulla sequenza originale da ffplay. Ho pensato che se riesco a scoprirlo, potrei eventualmente ri-organizzare il codice per estrarre gli MV in un file di testo.

Ho anche provato il codice menzionato al this answer, ma non sembra lavorare con le versioni più recenti di ffmpeg:

Gradirei eventuali codici di esempio o suggerimenti.

+0

Chiedere tutorial, strumenti e librerie è off-topic per Stack Overflow (vedere [aiuto]). Si noti inoltre che [codice sorgente ffplay] (https://www.ffmpeg.org/doxygen/trunk/ffplay_8c-source.html) è concesso in licenza sotto LGPL ed è disponibile. –

+2

Chiede anche codice/guida, quindi un'azione più utile sarebbe stata fornire alcuni esempi di codice. – Luca

risposta

8

Il codice sorgente per il filtro video codecview è here, è quello che stai cercando?

[modifica] Scusa, suppongo che non sia terribilmente utile. La funzione che stai cercando è filter_frame(), che mostra come leggere AVMotionVectors (come dati laterali) da un determinato AVFrame, questo è il codice utilizzato nell'esempio della riga di comando. Questo esempio chiama draw_arrow(), ma puoi semplicemente sostituirlo con una chiamata a printf() o una funzione personalizzata che registra le informazioni MV in un file di log di tua scelta.

+0

Ciao, puoi fornire ulteriori dettagli su come utilizzare AVMotionVectors in MATLAB. La tua risposta fornisce qualche suggerimento, ma sono bloccato per l'utilizzo. Come ottenere questo in Matlab. Ci sono pochissime informazioni online su questo. –

+0

Vorrei fare una nuova domanda con qualche dettaglio in più, non so come vuoi inserire i dati in matlab o in cosa sei bloccato esattamente. –