上一章編譯生成ffmpeg的動態鏈接庫之後,先試着跑一下讀取文件,接封裝解壓縮的例程吧。
1、如果你在./configure的時候採用默認安裝路徑(即沒有配置–prifix=)。則可到/usr/local/share/ffmpeg/examples獲取demuxing_decoding.c
在這裏我把它單獨拿出來,使用獨立的cmake文件對他進行編譯和使用:
2、編寫CMakeLists.txt
-先創建一個CMakeLists.txt文件,添加以下內容:
cmake_minimum_required(VERSION 3.5)
project(demuxingtest)
find_package( OpenCV REQUIRED )
include_directories("/usr/local/include")
LINK_DIRECTORIES("/usr/local/lib")
add_executable( demuxingtest demuxing_decoding.c )
target_link_libraries(demuxingtest ${OpenCV_LIBS} libavutil.so libavcodec.so libavformat.so )
include_directories() 和 LINK_DIRECTORIES() 配置可替換自己的路徑,我這裏使用的是安裝的默認路徑
-創建一個build文件夾,以及複製demuxing_decoding.c過來
目錄結構如下:
-現在,可以編譯demuxing_decoding.c了
cd build
sudo cmake ..
sudo make
現在,bulid 目錄下生成了可執行文件demuxingtest
3、使用例程文件:
需要我們提供一個獨立視頻文件和音頻文件,我創建了一個rawvedio.yuv,一個rawaudio.pcm
使用例程:
./demuxingtest …/…/xunlong.mp4 rawvedio.yuv rawaudio.pcm
成功填充數據到兩個文件中
之後,通過上面截圖中紅色箭頭的標識可以看到。可以使用我們的ffplay來對yuv數據經型播放。
例程編譯完成,接下來是看源碼,將該功能添加到自己的項目中
工程文件後續提交到github上
將生成的yuv數據文件直接添加到自己的安卓JNI程序上播放,能正常播放。後續可以寫寫將yuv文件通過opengl在安卓上進行渲染顯示