您尚未登录。

楼主 # 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硬解码

离线

#2 2021-08-26 08:58:31

codetez
会员
注册时间: 2020-05-23
已发帖子: 72
积分: 47

Re: 哪吒D1使用gstreamer硬解码

楼主好强,向楼主学习

离线

#3 2021-08-26 09:06:15

ubuntu
会员
注册时间: 2020-03-30
已发帖子: 221
积分: 204

Re: 哪吒D1使用gstreamer硬解码

niubility!!!

但是视频看不到图像。

离线

#4 2021-08-26 09:31:26

哇酷小二
wechat微信:whycan_cn
所在地: 你猜
注册时间: 2020-04-22
已发帖子: 3,378
积分: 1902
个人网站

Re: 哪吒D1使用gstreamer硬解码

ubuntu 说:

niubility!!!

但是视频看不到图像。

感谢楼主分享, 视频已修复。





离线

#5 2021-08-26 09:34:07

uuid
会员
注册时间: 2020-12-08
已发帖子: 45
积分: 31

Re: 哪吒D1使用gstreamer硬解码

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

离线

#6 2021-08-26 09:37:08

cube
会员
注册时间: 2021-03-11
已发帖子: 288
积分: 202.5

Re: 哪吒D1使用gstreamer硬解码

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


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

离线

#7 2021-08-26 09:40:28

黄粱梦
会员
注册时间: 2020-03-17
已发帖子: 45
积分: 39

Re: 哪吒D1使用gstreamer硬解码

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

离线

楼主 #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

离线

#11 2021-08-29 16:29:49

哇酷小二
wechat微信:whycan_cn
所在地: 你猜
注册时间: 2020-04-22
已发帖子: 3,378
积分: 1902
个人网站

Re: 哪吒D1使用gstreamer硬解码

感谢楼主热心分享, 点击往期链接不迷路:

哪吒D1使用gstreamer硬解码
https://whycan.com/t_7078.html

哪吒D1编译配置DLNA客户端进行B站投屏
https://whycan.com/t_7091.html

哪吒D1运行lvgl8在24寸1080P显示器上渲染
https://whycan.com/t_7044.html





离线

#12 2022-02-10 10:27:29

eddard
会员
注册时间: 2021-12-22
已发帖子: 4
积分: 9

Re: 哪吒D1使用gstreamer硬解码

请问D1s是否也是一样的配置就可以播放mp4视频,我这边试过在d1s上无法实现

离线

#13 2022-05-05 15:58:23

鱼尾
会员
所在地: 杭州
注册时间: 2021-01-11
已发帖子: 47
积分: 1

Re: 哪吒D1使用gstreamer硬解码

d1s可以吗?

离线

#14 2022-05-14 12:25:29

zhou
会员
注册时间: 2019-07-09
已发帖子: 6
积分: 2

Re: 哪吒D1使用gstreamer硬解码

请问楼主 这个缺少alsasink组件在Buildroot哪里选择
还有下面报这个错误 应该是alsasink缺少引起的吧?

/usr/bin # gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux name=demux de
mux.audio_0 \
> ! queue ! decodebin ! audioconvert ! audioresample ! alsasink \
> demux.video_0 ! queue ! h264parse ! omxh264dec ! videoconvert ! videoscale ! f
bdevsink
WARNING: erroneous pipeline: no element "alsasink"
/usr/bin # gmediarender -f "licheePi Zero" --gstout-audiosink=alsasink
gmediarender 0.0.8 started [ gmediarender 0.0.8 (libupnp-1.14.12; glib-2.68.4; gstreamer-1.18.5) ].
Logging switched off. Enable with --logfile=<filename> (or --logfile=stdout for console)
ERROR [1970-01-01 08:16:51.176573 | gstreamer] Couldn't create sink 'alsasink'
ERROR [1970-01-01 08:16:52.210026 | upnp] UpnpInit2(interface=(null), port=49494) Error: UPNP_E_INVALID_INTERFACE (-121). Retrying... (59s)
ERROR [1970-01-01 08:16:53.220026 | upnp] UpnpInit2(interface=(null), port=49494) Error: UPNP_E_INVALID_INTERFACE (-121). Retrying... (58s)
ERROR [1970-01-01 08:16:54.230024 | upnp] UpnpInit2(interface=(null), port=49494) Error: UPNP_E_INVALID_INTERFACE (-121). Retrying... (57s)
ERROR [1970-01-01 08:16:55.240026 | upnp] UpnpInit2(interface=(null), port=49494) Error: UPNP_E_INVALID_INTERFACE (-121). Retrying... (56s)

离线

#15 2023-09-16 10:32:36

Uccccc
会员
注册时间: 2023-07-01
已发帖子: 7
积分: 7

Re: 哪吒D1使用gstreamer硬解码

@逸俊晨晖
麻烦问一下配置之后为什么会出现gcc的错误2023-09-14-11-59-23.png

离线

页脚

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

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