簡介
- 學(xué)習完MPP的解碼Demo之后,想必大家都想通過一個項目來進行RK3588-MPP的解碼實戰(zhàn)。
- 本篇文章就基于ArmSoM-W3開發(fā)板,開發(fā)一個多路硬解碼項目,實現(xiàn)四路MPP硬解碼拉流顯示
- 實現(xiàn)的效果如下:
RK3588四路MPP硬解碼拉流
環(huán)境介紹
-
硬件環(huán)境:
ArmSoM-W3 RK3588開發(fā)板 -
軟件版本:
OS:ArmSoM-W3 Debian11
思路:
ArmSoM-W3 + QT+FFmpeg +RTSP+ MPP實現(xiàn)多路硬解碼拉流
-
mpp對外接口是輸入MppPacket結(jié)構(gòu)體指針:MppPacket *
那么,MppPacket 數(shù)據(jù)從哪里來?
-
通過FFmpeg進行拉流,拉RTSP流解封裝為AVPacket數(shù)據(jù)類型,然后傳給mpp進行硬解碼
1.首先由ffmpeg完成拉流工作獲取到AVPacket。 2.MPP接收到AVPacket數(shù)據(jù)然后轉(zhuǎn)換成MppPacket再進行硬解碼。 3.MPP解碼之后交給rga負責圖片格式轉(zhuǎn)換裁切等工作。 4.交給qt渲染顯示。
1. FFmpeg打開MP4格式文件或者進行拉流獲取到AVPacket
核心代碼:文章來源:http://www.zghlxwxcb.cn/news/detail-753386.html
AVPacket *av_packet = nullptr;
av_packet = (AVPacket *)av_malloc(sizeof(AVPacket));
char filepath[] = "rtsp://admin:armsom@80.0.0.211:854/armsomvideo";// rtsp 地址
avformat_open_input(&pFormatCtx, filepath, nullptr, &options) //打開多媒體流,并且獲取一些信息
//讀取一幀數(shù)據(jù)存到av_packet,av_packet是FFmpeg和MMP的數(shù)據(jù)互通接口
av_read_frame(pFormatCtx, av_packet)
2. MPP獲取到從FFmpeg傳過來的AVPacket 數(shù)據(jù)然后進行硬解碼
核心代碼:文章來源地址http://www.zghlxwxcb.cn/news/detail-753386.html
//將FFmpeg拉流獲取到的av_packet數(shù)據(jù)通過函數(shù)參數(shù)傳給MPP進行硬解碼
int MppDecode::decode_simple(MppDecode::MpiDecLoopData *data, AVPacket *av_packet)
{
MPP_RET ret = MPP_OK;
MppPacket packet = nullptr;
MppFrame frame = nullptr;
//將AVPacket 數(shù)據(jù)轉(zhuǎn)換為MppPacket數(shù)據(jù) (實際上是MppPacket ->data = AVPacket ->data)
ret = mpp_packet_init(&packet, av_packet->data, av_packet->size);
mpp_packet_set_pts(packet, av_packet->pts);
mpp_packet_set_dts(packet, av_packet->dts);
// 輸入MppPacket,輸出MppFrame
mpi->decode_put_packet(ctx, packet)
mpi->decode_get_frame(ctx, &frame)
}
3. MPP解碼之后交給rga負責圖片格式轉(zhuǎn)換裁切等工作
- 從MPP解碼后獲得的數(shù)據(jù)是YUV_420sp類型。我們用RGA將其轉(zhuǎn)換成RGB888的數(shù)據(jù)數(shù)據(jù)格式方便QT顯示
4. qt渲染顯示
- qt渲染方面可以通過lable或者OpenGL來顯示
5. 更多項目設(shè)計詳情請前往ArmSoM官方論壇進行討論
ArmSoM 產(chǎn)品介紹: http://wiki.armsom.org/index.php/ArmSoM-w3
ArmSoM 技術(shù)論壇: http://forum.armsom.org/
到了這里,關(guān)于ArmSoM-W3之RK3588-MPP實現(xiàn)多路硬解碼拉流的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!