javaCV入門指南:調用FFmpeg原生API和JavaCV是如何封裝了FFmpeg的音視頻操作?


 

通過“javaCV入門指南:序章 ”大家知道了處理音視頻流媒體的前置基本知識,基本知識包含了像素格式、編解碼格式、封裝格式、網絡協議以及一些音視頻專業名詞,專業名詞不會贅述,自行搜索即可。

本章將正式開始javaCV之旅,先看一下官方文檔里的介紹

JavaCV是計算機視覺領域的開發人員(OpenCV、FFmpeg、libdc1394、PGR FlyCapture、OpenKinect、li.lsense、CL PS3 Eye Driver、videoInput、ARToolKitPlus、flandmark、Leptonica和Tesseract)常用庫的JavaCPP預置的包裝器,並提供實用的程序類使它們的功能更容易在Java平台上使用,包括Android。

JavaCV還提供了硬件加速的全屏圖像顯示(CanvasFrame和GLCanvasFrame)、在多核(並行)上並行執行代碼的簡便方法、照相機和投影機的用戶友好的幾何和顏色校准(GeometricCalibrator,ProCamometricCalibrato)r,ProCamColorCalibrator),特征點的檢測和匹配(ObjectFinder),一組用於實現投影儀-照相機系統的直接圖像對齊的類(主要是GNImageAligner、ProjectiveTransformer、ProjectiveColorTransformer、ProCamTransformer和ReflectanceInitializer),一個blob分析包(BLUB),以及JavaCV類中的各種功能。其中一些類還具有OpenCL和OpenGL的對應類,它們的名稱以CL結尾或以GL開始,即:JavaCVCL、GLCanvasFrame等。

要了解如何使用API,因為文檔目前缺乏,請參考下面的示例用法部分以及示例程序,包括兩個用於Android(FACEPREVIEW.Java和ReordActudio.java)的示例程序,它們也在示例目錄中找到。您可能還發現參考ProCamCalib和ProCamTracker的源代碼以及從OpenCV2 Cookbook和相關聯的wiki頁面移植的示例很有用。


請隨時告訴我任何更新或修復你的代碼,使我可以將它們集成到下一個版本。謝謝您!如果您遇到軟件問題,請隨時在郵件列表上提問。我相信這還遠遠不夠完美…(我覺得這個最后一段才是最重要的,所以保留了這一段原話)

既然知道javaCV封裝了這么多庫,也不啰嗦了,直接開始吧。

支持eguid原創文章,歡迎一起交流討論:

流媒體技術③群: 556722677(①②群已滿,請加③群)

流媒體技術①群: 371249677(已滿)

一、什么是JavaCPP

大家知道FFmpeg是C語言中著名的音視頻庫(注意,不是c++。使用c++調用ffmpeg庫的性能損失與Java方式調用損耗相差並不大)。

JavaCV利用JavaCPP在FFmpeg和Java之間構建了橋梁,我們通過這個橋梁可以方便的調用FFmpeg,當然這並不是沒有損失的,性能損失暫且不提,最主要問題在於調用ffmpeg之於jvm是native方法,所以通過ffmpeg創建的結構體實例與常量、方法等等都是使用堆外內存,都需要像C那樣手動的釋放這些資源(jvm並不會幫你回收這部分),以此來保證不會發生內存溢出/泄露等風險。

Javapp在Java內部提供了對本地C++的高效訪問,這與一些C/C++編譯器與匯編語言交互的方式不同。不需要發明新的語言,比如SWIG、SIP、C++、CLI、Cython或Rython。相反,類似於CPpyy為Python所做的努力,它利用了Java和C++之間的語法和語義相似性。在引擎蓋下,它使用JNI,因此除了Java、SE和RoboVM(指令)之外,它還適用於Java SE的所有實現...

詳細描述請參考:https://github.com/bytedeco/javacpp

二、javaCPP直接調用FFmpeg的API

我們通過《視頻拉流解碼成YUVJ420P,並保存為jpg圖片》作為實例來闡述,實例地址:

https://blog.csdn.net/eguid_1/article/details/81369055

這部分內容主要是如何調用FFmpeg的API,本系列作為JavaCV入門不會講解FFmpeg的具體用法,如果想要深入學習FFmpeg部分,可以選擇通過查看FFmpeg的API手冊ffmpeg.org,或者訪問雷霄驊的博客詳細學習FFmpeg的使用。

 

完整閱讀本章:https://blog.csdn.net/eguid_1/article/details/83663035

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM