RK3399平臺(tái)多媒體測(cè)試-RK3399 視頻編解碼及攝像頭測(cè)試
本文硬件平臺(tái)以飛凌嵌入式OK3399-C開(kāi)發(fā)板為基礎(chǔ)進(jìn)行講解,其它RK3399產(chǎn)品,由于各個(gè)廠家設(shè)置不同會(huì)有所差異,請(qǐng)參考使用。本文詳細(xì)介紹了OK3399-C平臺(tái)平臺(tái)多媒體測(cè)試。
OK3399-C平臺(tái)多媒體測(cè)試
飛凌RK3399平臺(tái)音視頻部分應(yīng)用層軟件采用的是Gstreamer,支持硬件編解碼。本文所有的示例均是基于Gstreamer命令行的形式。如果您需要帶界面的播放器,您也可以使用Qt的多媒體類(lèi),同樣支持硬編解,可以參考飛凌提供的RK3399用戶(hù)手冊(cè)中Qt測(cè)試章節(jié)。
飛凌RK3399平臺(tái)內(nèi)部有一個(gè)視頻處理單元VPU,支持以下格式的視頻硬編解:
視頻解碼:H264, H265, VP8, VP9,最大支持4Kx2K@60fps
視頻編碼:H264,最大支持1080p@30fps
飛凌RK3399平臺(tái)硬件編解碼參數(shù)表:
Video Decoder |
Format |
Profile |
Resolution |
Frame rate |
HEVC |
main/main 10 |
4096x2304 |
60 fps |
|
H.264 |
HP/MP/BP |
4096x2304 |
30 fps |
|
VP9 |
Profile 0 |
4096x2304 |
30 fps |
|
Video Encoder |
H.264 |
HP@level4.1 |
1920x1080 |
30 fps |
VP8 |
- |
1920x1080 |
30 fps |
飛凌RK3399平臺(tái)Video Sink說(shuō)明:
Video Sink |
說(shuō)明 |
rkximagesink |
基于drm效率最高,單個(gè)屏幕無(wú)法多個(gè)rkximagesink同時(shí)使用。 |
xvimagesink |
使用XVideo extension輸出,QT多媒體部分采用的就是xvimagesink,雖效率低于rkximagesink,但兼容性好。 |
glimagesink |
使用OpenGL顯示,效率低于xvimagesink。 |
ximagesink |
使用XWindow輸出,效率最低,兼容性最好。 |
注意:開(kāi)始測(cè)試前,請(qǐng)將用戶(hù)資料\工具目錄的多媒體素材包media.tar.bz2拷貝到/home/forlinx目錄并解壓,以方便后續(xù)的測(cè)試。
$ cd /home/forlinx
$ tar xvf media.tar.bz2
解壓完成后,將生成audio 和 video目錄分別存放的是飛凌提供的音視頻測(cè)試素材文件。
一、 音頻和視頻播放體驗(yàn)
1、使用gplay播放器
Gplay是基于Gstreamer實(shí)現(xiàn)的音視頻播放器,能夠自動(dòng)根據(jù)硬件自動(dòng)選擇合適的插件進(jìn)行音視頻播放,運(yùn)行也十分簡(jiǎn)單。
$ gst-play-1.0 /home/forlinx/video/1080p_30fps_h265.mp4 --audiosink=pulsesink
2、使用gst-launch播放音視頻
gst-launch是開(kāi)發(fā)者在開(kāi)發(fā)階段常用的調(diào)試工具,相比Gplay而言,它更加靈活,當(dāng)然使用起來(lái)也相對(duì)復(fù)雜。
$ gst-launch-1.0 filesrc location=/home/forlinx/audio/test.mp3 ! id3demux ! mpegaudioparse !
mpg123audiodec ! pulsesink
僅播放視頻:
$ gst-launch-1.0 filesrc location=/home/forlinx/video/1080p_30fps_h265.mp4 ! qtdemux ! queue !
h265parse ! mppvideodec ! xvimagesink
同時(shí)播放音頻和視頻:
$ gst-launch-1.0 filesrc location=/home/forlinx/video/1080p_30fps_h265.mp4 ! qtdemux name=dec
dec. ! queue ! h265parse ! mppvideodec ! xvimagesink dec.! queue ! decodebin ! pulsesink
二、視頻硬編碼
飛凌RK3399支持H264格式的視頻編碼,最大支持1080p30fps。
1、H264硬編碼
將YUV420P格式視頻編碼為H264格式視頻:
$ gst-launch-1.0 filesrc location=/home/forlinx/video/yuv420_p352x288.yuv ! rawvideoparse
use-sink-caps=false format=i420 width=352 height=288 ! video/x-raw,width=352,height=288 !
mpph264enc ! queue ! h264parse ! qtmux ! filesink location=yuv2h264.mp4
2、播放編碼的H264視頻:
$ gst-play-1.0 yuv2h264.mp4
可以在屏幕看到視頻播放。
三、視頻硬解碼
飛凌RK3399支持H264,H265、VP8、VP9視頻硬解碼,H265最大支持4Kx2K@60fps。
飛凌RK3399使用mppvideodec組件進(jìn)行視頻硬解碼,它的輸出格式為:NV12,I420,YV12。
1、H264解碼
解碼并播放H264視頻文件:
$ gst-launch-1.0 filesrc location=/home/forlinx/video/1080p_60fps_h264.mp4 ! qtdemux ! queue !
h264parse ! mppvideodec ! xvimagesink
解碼并播放H264視頻文件(帶音頻):
$ gst-launch-1.0 filesrc location=/home/forlinx/video/1080p_60fps_h264.mp4 ! qtdemux
name=dec dec. ! queue ! h264parse ! mppvideodec ! xvimagesink dec. ! queue ! aacparse !
decodebin ! pulsesink
使用rkximagesink解碼播放4K視頻文件(帶音頻):
$ gst-launch-1.0 filesrc location=/home/forlinx/video/4K.mp4 ! qtdemux name=dec dec. ! queue ! h264parse ! mppvideodec ! queue ! rkximagesink dec. ! queue ! aacparse ! decodebin ! pulsesink
2、H265解碼
解碼并播放H265視頻文件:
$ gst-launch-1.0 filesrc location=/home/forlinx/video/1080p_30fps_h265.mp4 ! qtdemux ! queue !
h265parse ! mppvideodec ! xvimagesink
解碼并播放H265視頻文件(帶音頻):
$ gst-launch-1.0 filesrc location=/home/forlinx/video/1080p_30fps_h265.mp4 ! qtdemux name=dec
dec. ! queue ! h265parse ! mppvideodec ! xvimagesink dec. ! queue ! decodebin ! pulsesink
3、VP8解碼
解碼并播放VP8視頻文件:
$ gst-launch-1.0 filesrc location=/home/forlinx/video/1080p_30fps_vp8.webm
typefind=true ! video/webm ! matroskademux ! queue ! mppvideodec ! xvimagesink
解碼并播放VP8視頻文件(帶音頻):
$ gst-launch-1.0 filesrc location=/home/forlinx/video/1080p_30fps_vp8.webm
typefind=true ! video/webm ! matroskademux name=dec dec. ! queue ! mppvideodec !
xvimagesink dec. ! queue ! decodebin ! audioconvert ! audioresample ! pulsesink
4、VP9解碼
解碼并播放VP9視頻文件:
$ gst-launch-1.0 filesrc location=/home/forlinx/video/1080p_30fps_vp9.webm
typefind=true ! video/webm ! matroskademux ! queue ! mppvideodec ! xvimagesink
解碼并播放VP9視頻文件(帶音頻):
$ gst-launch-1.0 filesrc location=/home/forlinx/video/1080p_30fps_vp9.webm
typefind=true ! video/webm ! matroskademux name=dec dec. ! queue ! mppvideodec !
xvimagesink dec. ! queue ! decodebin ! audioconvert ! audioresample ! pulsesink
四、攝像頭測(cè)試
飛凌RK3399支持OV13850 MIPI攝像頭,同時(shí)也支持UVC攝像頭。首先來(lái)測(cè)試一下UVC攝像頭,這里以羅技C270進(jìn)程測(cè)試,將USB攝像頭插入開(kāi)發(fā)板,將自動(dòng)安裝uvc驅(qū)動(dòng)。
1、UVC Camera測(cè)試
然后可以看到uvc設(shè)備節(jié)點(diǎn):
$ v4l2-ctl --list-devices
查看攝像頭支持的格式與分辨率:
$ v4l2-ctl --list-formats-ext -d /dev/video10
1.1、攝像頭預(yù)覽
$ gst-launch-1.0 v4l2src device=/dev/video10 io-mode=4 ! videoconvert !
video/x-raw,format=NV12,width=640,height=480 ! xvimagesink
可以在屏幕看到攝像頭預(yù)覽畫(huà)面。
1.2、攝像頭拍照
$ gst-launch-1.0 v4l2src device=/dev/video10 num-buffers=1 ! videoconvert !
video/x-raw,format=NV12,width=640,height=480 ! mppjpegenc ! filesink location=/tmp/pic.jpg
然后將pic.jpg拷貝到Windows下,打開(kāi)它可以看到拍到的照片。
1.3、攝像頭預(yù)覽時(shí)視頻編碼H264
$ gst-launch-1.0 v4l2src device=/dev/video10 num-buffers=100 ! videoconvert !
video/x-raw,format=NV12,width=640,height=480 ! tee name=t ! queue ! mpph264enc ! queue !
h264parse ! qtmux ! filesink location=/tmp/uvc_h264.mp4 t. ! queue ! xvimagesink
上面這條命令會(huì)開(kāi)啟攝像頭的預(yù)覽和錄像,錄像文件的編碼格式為H264.
播放編碼后的H264視頻:
$ gst-launch-1.0 filesrc location=/tmp/uvc_h264.mp4 ! qtdemux ! queue ! h264parse !
mppvideodec ! xvimagesink
2、OV13850測(cè)試
OV13850的測(cè)試方法與UVC Camera的測(cè)試方法基本相同。首先確認(rèn)攝像頭設(shè)備節(jié)點(diǎn)。本節(jié)測(cè)試以RK3399開(kāi)發(fā)板前置OV13850為例,測(cè)試后置時(shí)請(qǐng)將“video1”修改為“video6”即可。
2.1、攝像頭預(yù)覽(前置)
$ gst-launch-1.0 v4l2src device=/dev/video1 ! video/x-raw, format=NV12, width=640,
height=480, framerate=30/1 ! xvimagesink
可以在屏幕看到攝像頭預(yù)覽畫(huà)面。
2.2、攝像頭拍照(前置)
$ gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=1 ! video/x-raw,format=NV12,
width=640,height=480 ! mppjpegenc ! filesink location=/tmp/pic.jpg
然后將pic.jpg拷貝到Windows下,打開(kāi)它可以看到拍到的照片。
2.3、攝像頭預(yù)覽時(shí)視頻編碼H264(前置)
$ gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=100 ! video/x-raw,format=NV12,
width=640,height=480 ! tee name=t ! queue ! mpph264enc ! queue !
h264parse ! qtmux ! filesink location=/tmp/13850_h264.mp4 t. ! queue ! xvimagesink
上面這條命令會(huì)開(kāi)啟攝像頭的預(yù)覽和錄像,錄像文件的編碼格式為H264.
播放編碼后的H264視頻:
$ gst-launch-1.0 filesrc location=/tmp/13850_h264.mp4 ! qtdemux ! queue ! h264parse !
mppvideodec ! xvimagesink
3、雙路Camera測(cè)試(USB Camera+OV13850)
$ gst-launch-1.0 v4l2src device=/dev/video10 io-mode=4 ! queue ! videoconvert !
video/x-raw,format=NV12,width=640,height=480 ! queue ! xvimagesink & gst-launch-1.0 v4l2src device=/dev/video1 ! video/x-raw, format=NV12, width=640, height=480, framerate=30/1 ! xvimagesink
五、rkximagesink測(cè)試
在前面幾節(jié)的測(cè)試中,我們使用的都是xvimagesink,相對(duì)來(lái)說(shuō)兼容性和性能都不錯(cuò)。如果客戶(hù)想追求極致性能體驗(yàn),可以嘗試rkximagesink。rkximagesink可以做到播放4k視頻幾乎不占用CPU負(fù)載。
使用rkximagesink需要綁定屏幕,一個(gè)屏幕只能使用一個(gè)rkximagesink,且擴(kuò)展顯示時(shí)無(wú)法拖動(dòng)到其它屏幕顯示。
首先使用modetest查看屏幕的Connector ID:
例如,播放視頻在DP屏幕上:
$ gst-launch-1.0 filesrc location=/home/forlinx/video/1080p_30fps_h265.mp4 ! qtdemux ! queue !
h265parse ! mppvideodec ! rkximagesink connector-id=93
注意:使用rkximagesink如果窗體不在connector-id對(duì)應(yīng)的屏幕上無(wú)法顯示時(shí)正常現(xiàn)象。
可以看到CPU負(fù)載非常低。
原創(chuàng) RK3399 2020-12-10 08:56:00
相關(guān)產(chǎn)品 >
-
FET3399-C核心板
飛凌RK3399安卓高性能核心板采用 采用六核Rockchip RK3399芯片,雙Cortex-A72大核+四Cortex-A53小核結(jié)構(gòu),對(duì)整數(shù)、浮點(diǎn)、內(nèi)存等作了大幅優(yōu)化,在整體性能、功耗及核心面積三個(gè)方面提升。以下將對(duì)瑞芯微芯片RK3399參數(shù),RK3399核心板方案及其性能做具體介紹。如您對(duì)飛凌RK3399系列核心板有興趣,歡迎咨詢(xún)了解。
了解詳情 -
OK3399-C開(kāi)發(fā)板
飛凌嵌入式RK3399安卓開(kāi)發(fā)板主芯片采用高性能六核CPU Rockchip RK3399,GPU采用Mail-T860四核 GPU,RK3399作為目RK產(chǎn)品線中低功耗、高性能的代表,可滿(mǎn)足人臉識(shí)別設(shè)備、機(jī)器人、無(wú)人機(jī)、IoT物聯(lián)網(wǎng)領(lǐng)域應(yīng)用。飛凌RK3399開(kāi)發(fā)板在整體性能、功耗及核心面積做了大幅度優(yōu)化,更加滿(mǎn)足工業(yè)設(shè)計(jì)需求。飛凌RK3399開(kāi)發(fā)板為進(jìn)一步減少用戶(hù)二次開(kāi)發(fā)難度,開(kāi)放了底板原理圖,并提供了RK3399用戶(hù)手冊(cè)、芯片手冊(cè),加上優(yōu)質(zhì)的技術(shù)服務(wù),讓您的方案從構(gòu)思到上市時(shí)間縮短。