2014-09-06 53 views

回答

6

FFMPEG本身不支持MISB KLV元數據,或者在此時爲這些類型的KLV元數據提供解複用器或解碼器。

然而,FFMPEG可用於從諸如MPEG傳輸流(TS)的容器中按照ISO 13818-1提取數據基本流。這種功能適用於UDP流和本地MPEG TS文件。在響應結束時查看示例。這些示例只是從流中提取數據,並不解析它們。通過使用包括C和Python在內的多種語言對輸出或後處理進行管道輸出,解析可以很容易地實時完成。

這將有助於瞭解具體哪些容器試圖從中提取數據。代替這些信息,我已經在我的迴應和例子中假設了MPEG TS。我還想指出,當前的標準爲"UAS Local Dataset" is now ST0601.8在這個迴應時。

我個人在Mac OS X 10.9.5上用FFMPEG 2.5.4測試了以下例子。

下面的實施例可以被修改,使得輸出被髮送通過用替換到stdout「 - 」。

提取數據流從線速MPEG-TS文件並保存到二進制文件: ffmpeg -i <MPEGTS_infile> -map data-re -codec copy -f data <binary_outfile>

提取數據流從MPEG-TS文件的幀速率和保存到二進制文件: ffmpeg -re -i <MPEGTS_infile> -map data-re -codec copy -f data <binary_outfile>

以流速從MPEG-TS UDP流中提取數據流並保存爲二進制文件: ffmpeg -i udp://@<address:port> -map data-re -codec copy -f data <binary_outfile>

從流中速率和直接到STDOUT的MPEG-TS UDP流中提取數據流: ffmpeg -i udp://@<address:port> -map data-re -codec copy -f data -

從MPEG-TS文件在UDP以幀速率傳輸視頻,音頻和數據流: ffmpeg -re -i <MPEGTS_infile> -map 0 -c copy -f mpegts udp://<address:port>

+1

如何讀取(解碼)? – vascobnunes 2017-06-28 16:31:19

+1

幾年前,我遇到了這個問題,並實現了一個Python解析器,請參見[https://github.com/paretech/klvcms](https://github.com/paretech/klvcms)。解析器靈活,可擴展但不完整。它更像是一個API,但可以輕鬆地將數據打印到文本文件或者直接傳遞到下一個處理項目。或者,根據您的需求(可能還有您的聯屬機構),像[PAR GV](http://www.gv30.net/)這樣的程序可能會更好地滿足您的需求。 – paretech 2017-06-30 20:59:13

+0

@paretech,謝謝你的偉大答案。你提到將'stdout'輸出到一個python腳本。我的問題是,什麼數據結構最適合於在同時讀取和寫入時保存3000kb +的二進制klv數據? ['Queue'](https://docs.python.org/3.6/library/queue.html)會對此有用嗎? – 2017-09-06 00:36:01

2

我不能確定無人機的元數據601.5相同KLV,但FFmpeg的可解複用器KLV元數據,因爲從2013年10月28日提交69a042e:

此修復券#2579:Data stream from UAV video reported as "Unknown" type and without codec_id set,因此您也可以在其中找到其他相關信息。

+0

的ffmpeg據說支持KLV在MXF文件,https://www.ffmpeg.org/doxygen /0.5/mxfdec_8c-source.html, 我徘徊,如果我可以驗證ffmpeg可以通過使用ffplay從MXF檢索KLV信息。你怎麼看 ? – ransh 2014-09-09 20:36:24