您尚未登录。

楼主 # 2021-08-26 01:25:46

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

哪吒D1使用gstreamer硬解码

D1的tina系统支持了libcedar的openmax接口 使得gstreamer可以用gst-omx插件调用libcedar进行视频硬解码
再加上tina支持了gst-aw插件 提供了gst的一个元件sunxifbsink  就是一个可以进行硬件转换YV12->RGB的硬件图层插件 即DE的应用
这样一来 D1使用gst进行播放视频 效果会非常流畅

演示环境搭建
用PhoenixSuit.exe烧录flash镜像
附件提供了flash镜像

把视频文件用adb发送到D1 附件中提供了测试视频文件

adb push D:\bad_apple.mp4 /root/

使用playbin元件自动寻找元件播放音视频

gst-launch-1.0 playbin uri=file:///root/bad_apple.mp4

因为加了一些同类的元件 为了调试方便 再写几条用来测试的命令
使用decodebin元件自动寻找解码器 指定fb元件播放视频

gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! decodebin ! sunxifbsink

指定硬解码器 指定fb元件播放视频

gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! h264parse ! omxh264dec ! sunxifbsink

指定元件播放音视频

gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux name=demux demux.audio_0 ! queue ! decodebin ! audioconvert ! audioresample ! alsasink demux.video_0 ! queue ! h264parse ! omxh264dec ! sunxifbsink

演示效果

配置流程
首先 SDK版本为tina1.01要打上0730补丁 要配置HDMI作为fb输出

SDK配置

make menuconfig

-*- libcedarx
Select cedarx configuration options  --->
(拉到最后)
{*} Add for openmax support

Multimedia  --->

<*> gst-omx
-*- gstreamer1-libs
Select GStreamer libraries  --->
{ }Include all GStreamer1 core libraries
*** Libraries ***
-*- GStreamer core library libgstreamer1
-*- GStreamer core library libgst1check
-*- GStreamer core library libgst1controller
-*- GStreamer core library libgst1net

<*> gst1-libav(这个不是用来软解视频的 而是用来软解音频)

<*> gstreamer1-plugins-aw
Select GStreamer aw modules  --->
{ } Include all GStreamer aw plugins
*** Modules ***
<*> GStreamer fbdev2sink module
<*> GStreamer sunxifbsink module
{*}   sunxi g2d rotation support
*** Libraries ***
-*- GStreamer framebuffersink library

<*> gstreamer1-plugins-bad
Select GStreamer bad modules and libraries  --->
<*> GStreamer fbdevsink module
<*> GStreamer id3tag module(MP3的id3信息封装)
<*> GStreamer videoparsersbad module
-*- GStreamer codecparsers library

-*- gstreamer1-plugins-base
Select GStreamer base modules and libraries  --->
-*- GStreamer alsa module
<*> GStreamer audioconvert module
<*> GStreamer audiorate module
<*> GStreamer audioresample module
<*> GStreamer audiotestsrc module
<*> GStreamer playback module (playbin元件 自动寻找连接元件)
<*> GStreamer typefindfunctions module (这个是给playbin自动寻找解封装元件 之前不知道 导致playbin播不了)
   
<*> GStreamer videoconvert module                                             
<*> GStreamer videorate module                                                 
<*> GStreamer videoscale module
<*> GStreamer videotestsrc module
-*- GStreamer allocators library
-*- GStreamer app library
-*- GStreamer audio library
-*- GStreamer pbutils library
-*- GStreamer riff library
-*- GStreamer rtp library
-*- GStreamer tag library                                                     
-*- GStreamer video library

<*> gstreamer1-plugins-good
Select GStreamer good modules  --->
<*> GStreamer audioparsers module
<*> GStreamer flv module
<*> GStreamer id3demux module(MP3的id3信息解封装)
<*> GStreamer matroska module(mkv文件解封装)
<*> GStreamer isomp4 module(mp4文件解封装)
<*> GStreamer soup module

<*> gstreamer1-utils

附件提供SDK配置的config文件 方便出问题排查
配置完成后编译打包就可以了 如果编译报错 主要检查补丁有没生效

离线

楼主 #1 2021-08-26 01:28:37

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: 哪吒D1使用gstreamer硬解码

离线

楼主 #8 2021-08-26 09:58:58

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: 哪吒D1使用gstreamer硬解码

uuid 说:

强大,那投屏也可以了吧?

因为sdk的package里面缺几个组件 移植完就可以了

离线

楼主 #9 2021-08-26 10:04:58

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: 哪吒D1使用gstreamer硬解码

cube 说:

gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! h264parse ! omxh264dec ! sunxifbsink


这个参数里面,叹号是管道的意思吗?

感叹号是连接元件的意思
管道是将所有元件连接起来 形成的传输通道
gstreamer设计是借鉴了电工电路组成的思想
一个好的gstreamer学习的博客:
https://www.cnblogs.com/xleng/p/10948838.html

离线

楼主 #10 2021-08-26 10:05:55

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: 哪吒D1使用gstreamer硬解码

黄粱梦 说:

请问打0730补丁具体如何操作呢?

0730补丁下载
https://bbs.aw-ol.com/assets/uploads/files/1629346267638-d1_open_tina_multimedia_update_0730.tar.gz

0730打补丁具体操作
这里采用直接替换的方法 .patch文件不用管它
1.
把D1_open_tina_multimedia_update_0730/dl里面的文件复制到dl
2.
把D1_open_tina_multimedia_update_0730/libs里面的文件复制到package/libs
3.
删除package/allwinner/tina_multimedia里面所有文件
把D1_open_tina_multimedia_update_0730/tina_multimedia里面的文件复制到package/allwinner/tina_multimedia
4.
删除package/multimedia里面所有文件
把D1_open_tina_multimedia_update_0730/multimedia里面的文件复制到package/multimedia

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn