@amirhos_esm 开发的过程中我也纠结过这个零拷贝问题 主要是这个h264编码器的输入必须要拷贝图像数据进去 不能直接传指针 也许还有传物理地址的办法 但是没找到 厂商还有一套商用sdk是支持零拷贝的 但是那是另一套框架 需要签NDA协议才能拿到 就是4.0的SDK
lajuchenghui 发布的帖子
-
回复: 使用tinyvision制作简单的网络摄像机IPCv2
-
使用tinyvision制作简单的网络摄像机IPCv2
承接上一篇预告的功能
上一篇链接 https://bbs.aw-ol.com/topic/5484功能简介
实现rtsp/rtmp/http-flv服务 rtsp/rtmp推流外部服务器 mp4录制
实现web管理后台 可以在网页上查看tinyvision资源占用状态 配置摄像头分辨率 流地址配置 观看摄像机画面 录制管理演示效果
web管理后台
在web上观看摄像机画面
录制管理
web管理后台实现原理
用nginx实现http服务器 然后web前端就是经典html js 后端接口是C艹写的fcgi 后端通过json和udp把配置参数传给读帧编码推流程序tinyvisionIpc附件
使用tinyvision制作简单的网络摄像机IPCv2附件.zip
附件内容
安装包 整套程序的安装包 执行一个脚本就可以安装 本来打算用自解压脚本 后来发现在板子上解压不了 就直接用没压缩的
测试工具 ffmpeg mediamtx流媒体服务
镜像 和官方提供的镜像相比只是加了一些简单常用的命令进去
源码工程 读帧编码推流程序tinyvisionIpcV2 web后端接口程序tinyvisionFcgi安装包安装
先用adb把安装包传入板子
adb push D:\Ubuntu18_tinyvision\share\setupTmp /root
cd /root/setupTmp
增加执行权限 执行安装脚本
chmod +x setup.sh
./setup.sh
等安装完毕后 修改启动脚本里的ip配置 以后开启都会自动配置ip
vi /etc/init.d/S98tinyvisionIpc
完成后重启
reboot重要文件路径
开机启动脚本 /etc/init.d/S98tinyvisionIpc
主要程序 /root/
nginx程序 /www/server/nginx/sbin/nginx/nginx
nginx配置 /www/server/nginx/conf/nginx.conf
web /www/server/nginx/html
配置文件 /root/conf
录制路径 /root/record功能测试
web管理后台
在pc浏览器上输入板子ip进入web管理后台
web每秒刷新板子资源占用状态 可以配置部分参数 注意 配置参数需要保存重启系统才生效摄像机配置
验证过的参数
1920 1080 20
1280 720 30
640 480 30rtsp server配置
可以配置url 和是否开启
用ffplay拉流验证
ffplay.exe -rtsp_transport tcp rtsp://192.168.2.17/live/1rtmp server 和 http-flv server配置
可以配置是否开启 可以点击web video在web上观看摄像机画面
用ffplay拉流验证
ffplay.exe rtmp://192.168.2.17/live/1
ffplay.exe "http://192.168.2.17/flv?port=1935&app=live&stream=1"rtsp push配置
可以配置rtsp推流url和是否开启
与rtsp服务不同的是 rtsp推流可以以rtsp的方式推流到外部的流媒体服务器
在pc用mediamtx.exe开启流媒体服务 只需双击执行程序即可 不需要任何配置 关闭窗口则结束流媒体服务程序
在rtsp推流配置url把ip换成pc的ip
rtsp推流只在程序开始运行时推流 如果当时流媒体服务没开启来则推流失败不再推流 所以必须先开启流媒体服务再给板子重启rtmp push配置
与rtsp push配置同理
rtmp推流可以推流各种直播间mp4 recorder
可以配置录制文件名 开启录制 查看录制文件
配置录制文件名不需要重启才生效 开启录制就生效
录制完成后 可以在record list查看、下载录制文件拉流注意
拉rtmp和http-flv的延迟会比rtsp高
点击web video在web上观看摄像机画面是http-flv协议 所以延迟会高一些最后发发牢骚
整套功能实现难度不大 但是调起来非常繁琐 一会写读帧编码推流程序 一会写后端接口fcgi程序 一会写html js 出来问题各个部分都要看一遍
最后还是一点一点调完了 64MB内存能跑这么多东西做完还是非常有成就感的 -
使用tinyvision制作简单的网络摄像机IPC
前言
静谧里 它静静地守候 如同时间的拾荒者 捕捉着光影交织的故事
——致摄像机演示效果
1080P20基本思路
用v4l2读取摄像头图像 然后用硬件编码器把图像编码 最后把编码数据传给rtsp服务器 这样外部就可以直接拉流播放了提供的系统里有个摄像头测试程序camerademo 能用v4l2读取摄像头图像 sdk里有源码 把源码简单修改一下接口对接
提供的系统里有个硬件编码器测试程序encodertest 能把图像编码成h264数据 直接运行是不能使用的 它的参数解析有问题 需要修改源码的长宽和文件输入输出路径 重新编译才能使用
注意 sdk里面有多个编码器操作例子 只看到一个是接口符合sdk里面的编码器操作接口 其他都是不能用的老接口
能用的encodertest源码路径openwrt/package/allwinner/multimedia/tina_multimedia_demo/encodertest/mpp_srcrtsp部分是网上找的一个编程实现的简单的rtsp服务器 相当于推流加服务器 外部直接拉流就行
硬件软件版本
主板 TinyVision
主控 V851SE
系统sdk Tina 5.0系统镜像
https://tinyvision.yuzukihd.top/#/?id=tinasdk-50
v851se_linux_tinyvision_uart0.zip外设
摄像头 GC2053
网络 百兆RJ45头附件
使用tinyvision制作简单的网络摄像机IPC附件.zip应用程序使用方法
先用adb把程序传进板子
adb push D:\Ubuntu18_tinyvision\share\app\tinyvisionIpcV1\tinyvisionIpcV1 /root
使用命令添加执行权限
chmod +x tinyvisionIpcV1
使用ifconfig配网
ifconfig eth0 192.168.2.17 broadcast 192.168.2.255 netmask 255.255.255.0 up ifconfig lo 127.0.0.1 up route add default gw 192.168.2.1
仅支持一种参数格式 参数为 长 宽 帧率
执行例子./tinyvisionIpcV1 640 480 30
执行时不加参数时默认参数为 640 480 30
当参数不支持时v4l2会打印出不同的参数 不会自动调整为相近的适合参数
v4l2打印的帧率有时候不对 以程序每秒打印的摄像头帧率为准
验证过的参数
1920 1080 20
1280 720 30
640 480 30摄像头读图像帧使用v4l2框架 输出格式是NV21 参数不支持基本上是摄像头不支持导致的
默认操作设备/dev/video0 使用前检查有没这个设备 接了摄像头 摄像头驱动加载成功基本都会有这个设备
可以使用系统自带的camerademo排查操作摄像头有没问题编码器是用的sdk提供的硬编码 输入NV21输出H264
程序运行时会每秒打印编码帧率 这个帧率不是编码器最大帧率 是工作时的帧率 摄像头帧率低会导致编码器帧率低
可以使用系统自带的encodertest排查编码器有没问题rtsp是网上找的一个编程实现的简单的rtsp服务器 相当于推流加服务器 外部直接拉流就行
rtsp端口为554 路径为/live
拉流流例子 ip要换成板子的ip
rtsp://192.168.2.17/liveffmpeg拉流使用方法
在pc上解压ffmpeg压缩包 用cmd进入ffmpeg bin目录执行命令 记得换ip
ffplay.exe -rtsp_transport tcp rtsp://192.168.2.17/live
参数-rtsp_transport tcp的意思是以tcp的方式建立rtsp链接 不写默认是udp 用tcp可以减少丢包花屏情况
cmake工程编译使用方法
工程使用cmake构建
需要安装cmakeapt-get install cmake
需要修改CMakeLists.txt里指定的编译器路径和头文件库文件路径
然后在CMakeLists.txt所在路径执行一次命令cmake .
产生makefile 然后执行
make
就可以产生应用程序
注意 sdk的gcc使用时要求导出变量STAGING_DIR
export STAGING_DIR="/root/tina-v853-open/out/v851se/tinyvision/openwrt/staging_dir/"
用编译sdk时的source build/envsetup.sh也行
预告
读图像编码 rtsp流服务 只是开始
因为编解码器接口变更 4.0mpp没有移植到5.0的原因 我看很多人眼馋5.0的rtsp流 所以先把这个功能简单的工程分享出来
在以后的版本中 还要做rtsp/rtmp推流外部服务器 rtmp流服务 mp4录制 等等等
因为rtmp流服务用nginx服务器 nginx本身还是个http服务器 所以还会顺带上web搭建 在web上播放视频 在web上展示配置板子状态 用C艹写web后端
这所有的一切 将在这个64M内存的芯片上实现
我们的征途是星辰大海羁绊
起初 我是在一些技术群 看到tinyvision的宣传资料 想看看生态如何 但又没有看到相关的交流群
然后到百问网的群里碰运气问问情况 没想到百问网的世玉轩找到了我 解答了我的问题 还送了我一套板子 你这是干什么 真是太客气了最后感谢前人的努力
感谢百问网和yuzuki大佬联合出品的TinyVision
感谢百问网赠送的TinyVision及官方配件
感谢全志在线和yuzuki大佬提供整理的sdk资料 -
gstreamer播放会闪屏 特别是把音频调为HDMI输出时
使用这个命令播
gst-launch-1.0 playbin uri=file:///root/bad_apple.mp4gstreamer播放会闪屏 特别是把音频调为HDMI输出时 基本次次播都闪 原来耳机座输出也会出现闪屏 但是概率会小很多 幅度也小
-
回复: gstreamer播放失败
我在仔细对比0730补丁文件后 没有发现问题 于是我重新make clean make 发现可以正常播放了
以下是测试能正常播放的命令:
1.指定硬件解码器和fb元件的播放视频命令
gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! h264parse ! omxh264dec ! videoconvert ! sunxifbsink
2.自动寻找硬件解码器 指定fb元件的播放视频命令
gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! decodebin ! sunxifbsink
3.同时播放音视频的命令
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 ! videoconvert ! videoscale ! sunxifbsink最后感谢上面大佬的帮助
-
回复: gstreamer播放失败
@houxiaoni 在 gstreamer播放失败 中说:
@lajuchenghui 把你的这个测试片源贴出来吧,我测试看看。不过,你那边如果playbin都不成功的话,感觉还是环境没有弄好,再仔细对比一下7月30号的补丁文件
-
回复: gstreamer播放失败
@houxiaoni
gst-launch-1.0 playbin file:/tmp/bad_apple.mp4 不行
换片源也不行 -
gstreamer播放失败
首先我用这个命令测试fb 是正常的
gst-launch-1.0 videotestsrc ! fbdevsink然后我用tplayerdemo 播放文件bad_apple.mp4 是正常的
GST_DEBUG=4 gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! avdec_h264 ! videoconvert ! fbdevsink
失败报错 此时黑屏
<videoconvert0:src> Received event on flushing pad. Discarding Setting pipeline to PAUSED ... 0:00:01.132281626 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2507:gst_bin_element_set_state:<fbdevsink0> current NULL pending VOID_PENDING, desired next READY 0:00:01.132673459 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2689:gst_element_continue_state:<fbdevsink0> completed state change to READY 0:00:01.132808751 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2592:_priv_gst_element_state_changed:<fbdevsink0> notifying about state-changed NULL to READY (VOID_PENDING pending) 0:00:01.133028001 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2955:gst_bin_change_state_func:<pipeline0> child 'fbdevsink0' changed state to 2(READY) successfully 0:00:01.133198793 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2507:gst_bin_element_set_state:<videoconvert0> current NULL pending VOID_PENDING, desired next READY 0:00:01.133330334 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2689:gst_element_continue_state:<videoconvert0> completed state change to READY 0:00:01.133447918 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2592:_priv_gst_element_state_changed:<videoconvert0> notifying about state-changed NULL to READY (VOID_PENDING pending) 0:00:01.133621918 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2955:gst_bin_change_state_func:<pipeline0> child 'videoconvert0' changed state to 2(READY) successfully 0:00:01.133947918 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2507:gst_bin_element_set_state:<avdec_h264-0> current NULL pending VOID_PENDING, desired next READY 0:00:01.134086251 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2689:gst_element_continue_state:<avdec_h264-0> completed state change to READY 0:00:01.134205376 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2592:_priv_gst_element_state_changed:<avdec_h264-0> notifying about state-changed NULL to READY (VOID_PENDING pending) 0:00:01.134383126 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2955:gst_bin_change_state_func:<pipeline0> child 'avdec_h264-0' changed state to 2(READY) successfully 0:00:01.134554668 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2507:gst_bin_element_set_state:<qtdemux0> current NULL pending VOID_PENDING, desired next READY 0:00:01.134686709 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2689:gst_element_continue_state:<qtdemux0> completed state change to READY 0:00:01.134802793 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2592:_priv_gst_element_state_changed:<qtdemux0> notifying about state-changed NULL to READY (VOID_PENDING pending) 0:00:01.135003459 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2955:gst_bin_change_state_func:<pipeline0> child 'qtdemux0' changed state to 2(READY) successfully 0:00:01.467842918 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2507:gst_bin_element_set_state:<filesrc0> current NULL pending VOID_PENDING, desired next READY 0:00:01.467982376 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2689:gst_element_continue_state:<filesrc0> completed state change to READY 0:00:01.468101251 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2592:_priv_gst_element_state_changed:<filesrc0> notifying about state-changed NULL to READY (VOID_PENDING pending) 0:00:01.468282459 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2955:gst_bin_change_state_func:<pipeline0> child 'filesrc0' changed state to 2(READY) successfully 0:00:01.468441793 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2664:gst_element_continue_state:<pipeline0> committing state from NULL to READY, pending PAUSED, next PAUSED 0:00:01.468607084 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2592:_priv_gst_element_state_changed:<pipeline0> notifying about state-changed NULL to READY (PAUSED pending) 0:00:01.468880959 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2671:gst_element_continue_state:<pipeline0> continue state change READY to PAUSED, final PAUSED 0:00:01.469105168 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2507:gst_bin_element_set_state:<fbdevsink0> current READY pending VOID_PENDING, desired next PAUSED 0:00:01.469384543 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2961:gst_bin_change_state_func:<pipeline0> child 'fbdevsink0' is changing state asynchronously to PAUSED 0:00:01.469556959 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2507:gst_bin_element_set_state:<videoconvert0> current READY pending VOID_PENDING, desired next PAUSED 0:00:01.469743459 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2689:gst_element_continue_state:<videoconvert0> completed state change to PAUSED 0:00:01.469867918 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2592:_priv_gst_element_state_changed:<videoconvert0> notifying about state-changed READY to PAUSED (VOID_PENDING pending) 0:00:01.470042876 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2955:gst_bin_change_state_func:<pipeline0> child 'videoconvert0' changed state to 3(PAUSED) successfully 0:00:01.470197834 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2507:gst_bin_element_set_state:<avdec_h264-0> current READY pending VOID_PENDING, desired next PAUSED 0:00:01.470547043 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2689:gst_element_continue_state:<avdec_h264-0> completed state change to PAUSED 0:00:01.470679084 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2592:_priv_gst_element_state_changed:<avdec_h264-0> notifying about state-changed READY to PAUSED (VOID_PENDING pending) 0:00:01.470857501 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2955:gst_bin_change_state_func:<pipeline0> child 'avdec_h264-0' changed state to 3(PAUSED) successfully 0:00:01.471025918 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2507:gst_bin_element_set_state:<qtdemux0> current READY pending VOID_PENDING, desired next PAUSED 0:00:01.803483501 766 0x2fbb5a00 INFO filesrc gstfilesrc.c:468:gst_file_src_start:<filesrc0> opening file bad_apple.mp4 0:00:01.803675085 766 0x2fbb5a00 WARN basesrc gstbasesrc.c:3600:gst_base_src_start_complete:<filesrc0> pad not activated yet 0:00:01.803919710 766 0x2fbb5a00 INFO filesrc gstfilesrc.c:468:gst_file_src_start:<filesrc0> opening file bad_apple.mp4 0:00:01.804240376 766 0x2fbb5a00 INFO task gsttask.c:460:gst_task_set_lock: setting stream lock 0x2fc1a370 on task 0x2fc2f3b0 0:00:01.804357751 766 0x2fbb5a00 INFO GST_PADS gstpad.c:6159:gst_pad_start_task:<qtdemux0:sink> created task 0x2fc2f3b0 0:00:01.804864668 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2689:gst_element_continue_state:<qtdemux0> completed state change to PAUSED 0:00:01.805003668 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2592:_priv_gst_element_state_changed:<qtdemux0> notifying about state-changed READY to PAUSED (VOID_PENDING pending) 0:00:01.805187585 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2955:gst_bin_change_state_func:<pipeline0> child 'qtdemux0' changed state to 3(PAUSED) successfully 0:00:01.805343168 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2507:gst_bin_element_set_state:<filesrc0> current READY pending VOID_PENDING, desired next PAUSED 0:00:01.805518210 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2689:gst_element_continue_state:<filesrc0> completed state change to PAUSED 0:00:01.805643960 766 0x2fbb5a00 INFO GST_STATES gstelement.c:2592:_priv_gst_element_state_changed:<filesrc0> notifying about state-changed READY to PAUSED (VOID_PENDING pending) 0:00:01.805825168 766 0x2fbb5a00 INFO GST_STATES gstbin.c:2955:gst_bin_change_state_func:<pipeline0> child 'filesrc0' changed state to 3(PAUSED) successfully Pipeline is PREROLLING ... 0:00:01.810877918 766 0x2fc220f0 INFO qtdemux qtdemux.c:14312:qtdemux_parse_tree:<qtdemux0> timescale: 1000 0:00:01.811074626 766 0x2fc220f0 INFO qtdemux qtdemux.c:14313:qtdemux_parse_tree:<qtdemux0> duration: 219150 0:00:01.811408668 766 0x2fc220f0 WARN qtdemux qtdemux.c:3308:qtdemux_parse_trex:<qtdemux0> failed to find fragment defaults for stream 1 0:00:01.811875626 766 0x2fc220f0 INFO qtdemux qtdemux.c:11776:qtdemux_parse_trak:<qtdemux0> type avc1 caps video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)4.1, profile=(string)high, codec_data=(buffer)01640029ffe1001767640029ac34ec08031a10005161501312d008f183138001000468eebcb0 0:00:01.813305126 766 0x2fc220f0 WARN qtdemux qtdemux.c:3308:qtdemux_parse_trex:<qtdemux0> failed to find fragment defaults for stream 2 0:00:01.813848668 766 0x2fc220f0 INFO qtdemux qtdemux.c:12502:qtdemux_parse_trak:<qtdemux0> type mp4a caps audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, level=(string)2, base-profile=(string)lc, profile=(string)lc, codec_data=(buffer)121056e500 0:00:02.145767335 766 0x2fc220f0 INFO GST_SCHEDULING gstpad.c:4900:gst_pad_get_range_unchecked:<filesrc0:src> getrange failed, flow: eos 0:00:02.145897085 766 0x2fc220f0 INFO GST_SCHEDULING gstpad.c:5115:gst_pad_pull_range:<qtdemux0:sink> pullrange failed, flow: eos 0:00:02.146788126 766 0x2fc220f0 INFO GST_EVENT gstevent.c:820:gst_event_new_caps: creating caps event video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)4.1, profile=(string)high, codec_data=(buffer)01640029ffe1001767640029ac34ec08031a10005161501312d008f183138001000468eebcb0, width=(int)512, height=(int)384, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1 0:00:02.146989335 766 0x2fc220f0 INFO GST_ELEMENT_PADS gstelement.c:672:gst_element_add_pad:<qtdemux0> adding pad 'video_0' 0:00:02.147235168 766 0x2fc220f0 INFO GST_PIPELINE grammar.y:524:gst_parse_found_pad: trying delayed linking one pad some pad of GstQTDemux named qtdemux0 to some pad of avdec_h264 named avdec_h264-0 0:00:02.147401960 766 0x2fc220f0 INFO GST_ELEMENT_PADS gstutils.c:1774:gst_element_link_pads_full: trying to link element qtdemux0:(any) to element avdec_h264-0:(any) 0:00:02.147607168 766 0x2fc220f0 INFO GST_PADS gstutils.c:1035:gst_pad_check_link: trying to link qtdemux0:video_0 and avdec_h264-0:sink 0:00:02.152496751 766 0x2fc220f0 INFO GST_PADS gstutils.c:1588:prepare_link_maybe_ghosting: qtdemux0 and avdec_h264-0 in same bin, no need for ghost pads 0:00:02.152711626 766 0x2fc220f0 INFO GST_PADS gstpad.c:2378:gst_pad_link_prepare: trying to link qtdemux0:video_0 and avdec_h264-0:sink 0:00:02.157511460 766 0x2fc220f0 INFO GST_PADS gstpad.c:2586:gst_pad_link_full: linked qtdemux0:video_0 and avdec_h264-0:sink, successful 0:00:02.157615918 766 0x2fc220f0 INFO GST_EVENT gstevent.c:1579:gst_event_new_reconfigure: creating reconfigure event 0:00:02.158287085 766 0x2fc220f0 INFO GST_EVENT gstevent.c:820:gst_event_new_caps: creating caps event audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, level=(string)2, base-profile=(string)lc, profile=(string)lc, codec_data=(buffer)121056e500, rate=(int)44100, channels=(int)2 0:00:02.158470168 766 0x2fc220f0 INFO GST_ELEMENT_PADS gstelement.c:672:gst_element_add_pad:<qtdemux0> adding pad 'audio_0' 0:00:02.158784168 766 0x2fc220f0 INFO GST_EVENT gstevent.c:901:gst_event_new_segment: creating segment event time segment start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:00:00.033000000, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, base=0:00:00.000000000, position 0:00:00.000000000, duration 99:99:99.999999999 Redistribute latency... 0:00:02.163885918 766 0x2fbb5a00 INFO GST_EVENT gstevent.c:1450:gst_event_new_latency: creating latency event 0:00:00.000000000 0:00:02.164127418 766 0x2fbb5a00 INFO bin gstbin.c:2784:gst_bin_do_latency_func:<pipeline0> configured latency of 0:00:00.000000000 0:00:02.164560335 766 0x2fc220f0 INFO videodecoder gstvideodecoder.c:1312:gst_video_decoder_sink_event_default:<avdec_h264-0> upstream tags: taglist, video-codec=(string)"H.264\ /\ AVC", bitrate=(uint)439986; 0:00:02.496892293 766 0x2fc220f0 INFO GST_EVENT gstevent.c:901:gst_event_new_segment: creating segment event time segment start=0:00:00.000000000, offset=0:00:00.000000000, stop=0:03:39.150000000, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, base=0:00:00.000000000, position 0:00:00.000000000, duration 99:99:99.999999999 0:00:02.497390835 766 0x2fc220f0 INFO GST_EVENT gstevent.c:901:gst_event_new_segment: creating segment event time segment start=0:00:00.033000000, offset=0:00:00.000000000, stop=0:03:39.132000000, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.033000000, base=0:00:00.033000000, position 0:00:00.033000000, duration 99:99:99.999999999 0:00:02.499333293 766 0x2fc220f0 INFO libav :0:: Reinit context to 512x384, pix_fmt: yuv420p Caught SIGSEGV exec gdb failed: No such file or directory Spinning. Please run 'gdb gst-launch-1.0 766' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core.
然后我用omx硬解码
GST_DEBUG=4 gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! h264parse ! omxh264dec ! videoconvert ! fbdevsink
没有报错 但是屏幕变绿 播不出来
Pipeline is PREROLLED ... Setting pipeline to PLAYING ... 0:00:04.348374627 789 0x3c95aa00 INFO GST_EVENT gstevent.c:1450:gst_event_new_latency: creating latency event 0:00:00.000000000 0:00:04.349134002 789 0x3c95aa00 INFO bin gstbin.c:2784:gst_bin_do_latency_func:<pipeline0> configured latency of 0:00:00.000000000 0:00:04.349472585 789 0x3c95aa00 INFO GST_STATES gstbin.c:2507:gst_bin_element_set_state:<fbdevsink0> current PAUSED pending VOID_PENDING, desired next PLAYING 0:00:04.349785377 789 0x3c95aa00 INFO GST_STATES gstelement.c:2689:gst_element_continue_state:<fbdevsink0> completed state change to PLAYING 0:00:04.349953585 789 0x3c95aa00 INFO GST_STATES gstelement.c:2592:_priv_gst_element_state_changed:<fbdevsink0> notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending) 0:00:04.350255502 789 0x3c95aa00 INFO GST_STATES gstbin.c:2955:gst_bin_change_state_func:<pipeline0> child 'fbdevsink0' changed state to 4(PLAYING) successfully 0:00:04.350430294 789 0x3c95aa00 INFO GST_STATES gstbin.c:2507:gst_bin_element_set_state:<videoconvert0> current PAUSED pending VOID_PENDING, desired next PLAYING 0:00:04.350650960 789 0x3c95aa00 INFO GST_STATES gstelement.c:2689:gst_element_continue_state:<videoconvert0> completed state change to PLAYING 0:00:04.350777419 789 0x3c95aa00 INFO GST_STATES gstelement.c:2592:_priv_gst_element_state_changed:<videoconvert0> notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending) 0:00:04.350956044 789 0x3c95aa00 INFO GST_STATES gstbin.c:2955:gst_bin_change_state_func:<pipeline0> child 'videoconvert0' changed state to 4(PLAYING) successfully 0:00:04.351120044 789 0x3c95aa00 INFO GST_STATES gstbin.c:2507:gst_bin_element_set_state:<omxh264dec-omxh264dec0> current PAUSED pending VOID_PENDING, desired next PLAYING 0:00:04.351260044 789 0x3c95aa00 INFO GST_STATES gstelement.c:2689:gst_element_continue_state:<omxh264dec-omxh264dec0> completed state change to PLAYING 0:00:04.351381544 789 0x3c95aa00 INFO GST_STATES gstelement.c:2592:_priv_gst_element_state_changed:<omxh264dec-omxh264dec0> notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending) 0:00:04.351557794 789 0x3c95aa00 INFO GST_STATES gstbin.c:2955:gst_bin_change_state_func:<pipeline0> child 'omxh264dec-omxh264dec0' changed state to 4(PLAYING) successfully 0:00:04.351724377 789 0x3c95aa00 INFO GST_STATES gstbin.c:2507:gst_bin_element_set_state:<h264parse0> current PAUSED pending VOID_PENDING, desired next PLAYING 0:00:04.682762002 789 0x3c95aa00 INFO GST_STATES gstelement.c:2689:gst_element_continue_state:<h264parse0> completed state change to PLAYING 0:00:04.682926835 789 0x3c95aa00 INFO GST_STATES gstelement.c:2592:_priv_gst_element_state_changed:<h264parse0> notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending) 0:00:04.683116710 789 0x3c95aa00 INFO GST_STATES gstbin.c:2955:gst_bin_change_state_func:<pipeline0> child 'h264parse0' changed state to 4(PLAYING) successfully 0:00:04.683285044 789 0x3c95aa00 INFO GST_STATES gstbin.c:2507:gst_bin_element_set_state:<qtdemux0> current PAUSED pending VOID_PENDING, desired next PLAYING 0:00:04.683419460 789 0x3c95aa00 INFO GST_STATES gstelement.c:2689:gst_element_continue_state:<qtdemux0> completed state change to PLAYING 0:00:04.683539169 789 0x3c95aa00 INFO GST_STATES gstelement.c:2592:_priv_gst_element_state_changed:<qtdemux0> notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending) 0:00:04.683715377 789 0x3c95aa00 INFO GST_STATES gstbin.c:2955:gst_bin_change_state_func:<pipeline0> child 'qtdemux0' changed state to 4(PLAYING) successfully 0:00:04.683866460 789 0x3c95aa00 INFO GST_STATES gstbin.c:2507:gst_bin_element_set_state:<filesrc0> current PAUSED pending VOID_PENDING, desired next PLAYING 0:00:04.684002502 789 0x3c95aa00 INFO GST_STATES gstelement.c:2689:gst_element_continue_state:<filesrc0> completed state change to PLAYING 0:00:04.684121585 789 0x3c95aa00 INFO GST_STATES gstelement.c:2592:_priv_gst_element_state_changed:<filesrc0> notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending) 0:00:04.684303710 789 0x3c95aa00 INFO GST_STATES gstbin.c:2955:gst_bin_change_state_func:<pipeline0> child 'filesrc0' changed state to 4(PLAYING) successfully 0:00:04.684570169 789 0x3c95aa00 INFO GST_STATES gstelement.c:2689:gst_element_continue_state:<pipeline0> completed state change to PLAYING 0:00:04.684717169 789 0x3c95aa00 INFO GST_STATES gstelement.c:2592:_priv_gst_element_state_changed:<pipeline0> notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending) New clock: GstSystemClock 0:00:04.941434086 789 0x3ca02230 INFO videodecoder gstvideodecoder.c:1312:gst_video_decoder_sink_event_default:<omxh264dec-omxh264dec0> upstream tags: taglist, video-codec=(string)"H.264\ \(High\ Profile\)", bitrate=(uint)439986, minimum-bitrate=(uint)4080, maximum-bitrate=(uint)134160; 0:00:05.073941419 789 0x3ca02230 INFO videodecoder gstvideodecoder.c:1312:gst_video_decoder_sink_event_default:<omxh264dec-omxh264dec0> upstream tags: taglist, video-codec=(string)"H.264\ \(High\ Profile\)", bitrate=(uint)439986, minimum-bitrate=(uint)4080, maximum-bitrate=(uint)410400; 0:00:05.143155044 789 0x3ca02230 INFO videodecoder gstvideodecoder.c:1312:gst_video_decoder_sink_event_default:<omxh264dec-omxh264dec0> upstream tags: taglist, video-codec=(string)"H.264\ \(High\ Profile\)", bitrate=(uint)439986, minimum-bitrate=(uint)4080, maximum-bitrate=(uint)428880; 0:00:05.173732294 789 0x3ca02230 INFO videodecoder gstvideodecoder.c:1312:gst_video_decoder_sink_event_default:<omxh264dec-omxh264dec0> upstream tags: taglist, video-codec=(string)"H.264\ \(High\ Profile\)", bitrate=(uint)439986, minimum-bitrate=(uint)4080, maximum-bitrate=(uint)437520; 0:00:05.209622419 789 0x3ca02230 INFO videodecoder gstvideodecoder.c:1312:gst_video_decoder_sink_event_default:<omxh264dec-omxh264dec0> upstream tags: taglist, video-codec=(string)"H.264\ \(High\ Profile\)", bitrate=(uint)439986, minimum-bitrate=(uint)4080, maximum-bitrate=(uint)553200; 0:00:10.488652547 789 0x3ca02230 INFO videodecoder gstvideodecoder.c:1312:gst_video_decoder_sink_event_default:<omxh264dec-omxh264dec0> upstream tags: taglist, video-codec=(string)"H.264\ \(High\ Profile\)", bitrate=(uint)439986, minimum-bitrate=(uint)4080, maximum-bitrate=(uint)576480; 0:00:10.673945797 789 0x3ca02230 INFO videodecoder gstvideodecoder.c:1312:gst_video_decoder_sink_event_default:<omxh264dec-omxh264dec0> upstream tags: taglist, video-codec=(string)"H.264\ \(High\ Profile\)", bitrate=(uint)439986, minimum-bitrate=(uint)4080, maximum-bitrate=(uint)608880; 0:00:11.097856797 789 0x3ca02230 INFO videodecoder gstvideodecoder.c:1312:gst_video_decoder_sink_event_default:<omxh264dec-omxh264dec0> upstream tags: taglist, video-codec=(string)"H.264\ \(High\ Profile\)", bitrate=(uint)439986, minimum-bitrate=(uint)4080, maximum-bitrate=(uint)625680; 0:00:11.910405006 789 0x3ca02230 INFO videodecoder gstvideodecoder.c:1312:gst_video_decoder_sink_event_default:<omxh264dec-omxh264dec0> upstream tags: taglist, video-codec=(string)"H.264\ \(High\ Profile\)", bitrate=(uint)439986, minimum-bitrate=(uint)4080, maximum-bitrate=(uint)757200; 0:00:15.454831924 789 0x3ca02230 INFO videodecoder gstvideodecoder.c:1312:gst_video_decoder_sink_event_default:<omxh264dec-omxh264dec0> upstream tags: taglist, video-codec=(string)"H.264\ \(High\ Profile\)", bitrate=(uint)439986, minimum-bitrate=(uint)4080, maximum-bitrate=(uint)802800; 0:00:15.505884007 789 0x3ca02230 INFO videodecoder gstvideodecoder.c:1312:gst_video_decoder_sink_event_default:<omxh264dec-omxh264dec0> upstream tags: taglist, video-codec=(string)"H.264\ \(High\ Profile\)", bitrate=(uint)439986, minimum-bitrate=(uint)4080, maximum-bitrate=(uint)982800; 0:00:19.131155342 789 0x3ca02230 INFO videodecoder gstvideodecoder.c:1312:gst_video_decoder_sink_event_default:<omxh264dec-omxh264dec0> upstream tags: taglist, video-codec=(string)"H.264\ \(High\ Profile\)", bitrate=(uint)439986, minimum-bitrate=(uint)4080, maximum-bitrate=(uint)1075200; 0:00:19.233288009 789 0x3ca02230 INFO videodecoder gstvideodecoder.c:1312:gst_video_decoder_sink_event_default:<omxh264dec-omxh264dec0> upstream tags: taglist, video-codec=(string)"H.264\ \(High\ Profile\)", bitrate=(uint)439986, minimum-bitrate=(uint)4080, maximum-bitrate=(uint)1152240; 0:00:59.676430612 789 0x3ca02230 INFO videodecoder gstvideodecoder.c:1312:gst_video_decoder_sink_event_default:<omxh264dec-omxh264dec0> upstream tags: taglist, video-codec=(string)"H.264\ \(High\ Profile\)", bitrate=(uint)439986, minimum-bitrate=(uint)4080, maximum-bitrate=(uint)1430160; 0:00:59.774567987 789 0x3ca02230 INFO videodecoder gstvideodecoder.c:1312:gst_video_decoder_sink_event_default:<omxh264dec-omxh264dec0> upstream tags: taglist, video-codec=(string)"H.264\ \(High\ Profile\)", bitrate=(uint)439986, minimum-bitrate=(uint)4080, maximum-bitrate=(uint)2053920; 0:01:06.443747573 789 0x3ca02230 INFO videodecoder gstvideodecoder.c:1312:gst_video_decoder_sink_event_default:<omxh264dec-omxh264dec0> upstream tags: taglist, video-codec=(string)"H.264\ \(High\ Profile\)", bitrate=(uint)439986, minimum-bitrate=(uint)4080, maximum-bitrate=(uint)2581200;
然后我把最后一个元件换了 换成专门的sunxifbsink
gst-launch-1.0 filesrc location=bad_apple.mp4 ! qtdemux ! h264parse ! omxh264dec ! videoconvert ! sunxifbsink
-->sunxifbsink init. Setting pipeline to PAUSED ... dd: writing '/dev/fb0': No space left on device 32401+0 records[ 3997.682603] [DISP] disp_get_layer,line:111: [ 3997.682611] disp_get_layer (0,1702453612,1633886322) fail in 32400+0 records out Succesfully opened fbdev framebuffer device /dev/fb0, mapped sized 12.00 MB of which 7.91 MB (1 buffers) usable for page flipping. fb[ 3997.708569] VE: VE real_freq=576000000 [ 3997.708569] dev phy=0xff000000,len=0xfd2000,vir=0x3fc8d69000,size=0xc00000. -->/dev/transform does not exist, hardware rotation is not supported. -->reserver layer called (screen = 1920 x 1080). -->Hardware overlay available. Succesfully opened screen of pixel depth 32, dimensions 1920 x 1080, format BGRx, 12.00 MB video memory available, max 1 pannable screen buffers, vsync enabled. INFO : cedarc <VeInitialize:1307>: *** ic_version = 0x1301000010210, INFO : cedarc <VeRelease:1476>: not malloc locks INFO : cedarc <VeInitialize:1307>: *** ic_version = 0x1301000010210, Pipeline is PREROLLING ... ERROR : omx_vdec <AwOmxVdecPortGetFormat:348>: erro: pParamData->nIndex[1] > m_sPortFormatType.nIndex[0] WARNING: cedarc <AddVDPlugin:1574>: 1117 get local path: /usr/lib/ WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libaw_aacdec.so WARNING: cedarc <AddVDPluginSingle:1424>: Invalid plugin, CedarPluginVDInit not found. WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libaw_alacdec.so WARNING: cedarc <AddVDPluginSingle:1424>: Invalid plugin, CedarPluginVDInit not found. WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libaw_amrdec.so WARNING: cedarc <AddVDPluginSingle:1424>: Invalid plugin, CedarPluginVDInit not found. WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libaw_apedec.so WARNING: cedarc <AddVDPluginSingle:1424>: Invalid plugin, CedarPluginVDInit not found. WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libaw_atrcdec.so WARNING: omx_vdec <__AwOmxVdecGetConfig:1558>: +++++ get display crop: top[0],left[0],width[512],height[384] WARNING: cedarc <AddVDPluginSingle:1424>: Inval[ 3997.873239] VE: VE real_freq=576000000 [ 3997.873239] id plugin, CedarPluginVDInit not found. WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libaw_dsddec.so WARNING: cedarc <AddVDPluginSingle:1424>: Invalid plugin, CedarPluginVDInit not found. WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libaw_flacdec.so WARNING: cedarc <AddVDPluginSingle:1424>: Invalid plugin, CedarPluginVDInit not found. WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libaw_g729dec.so WARNING: cedarc <AddVDPluginSingle:1424>: Invalid plugin, CedarPluginVDInit not found. WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libaw_mp3dec.so ---->sunxifb pre overlay(SCWxSCN=512 x 384,out_rec=[704 348,512,384]). Using one framebuffer plus 8 overlays in video memory (format YV12). WARNING[ 3997.947230] [DISP] disp_get_layer,line:111: : cedarc <AddVDPluginSingle:1424[ 3997.947237] disp_get_layer (0,0,4096) fail >: Invalid plugin, CedarPluginVD[ 3997.961227] [DISP] disp_get_layer,line:111: Init not found. WARNING: cedarc[ 3997.961234] disp_get_layer (0,63,-964650600) fail <AddVDPlugin:1584>: 1117 load [ 3997.976447] [DISP] disp_mgr_get_layer_config,line:2291: so: /usr/lib/libaw_oggdec.so W[ 3997.976454] get layer(0,63,-964650600) fail ARNING: cedarc <AddVDPluginSingl[ 3997.992569] [DISP] disp_get_layer,line:111: e:1424>: Invalid plugin, CedarPl[ 3997.992636] disp_get_layer (0,63,-964650600) fail uginVDInit not found. WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libaw_opusdec.so WARNING: cedarc <AddVDPluginSingle:1424>: Invalid plugin, CedarPluginVDInit not found. WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libaw_radec.so WARNING: cedarc <AddVDPluginSingle:1424>: Invalid plugin, CedarPluginVDInit not found. WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libaw_siprdec.so WARNING: cedar[ 3998.044272] [DISP] disp_get_layer,line:111: c <AddVDPluginSingle:1424>: Inva[ 3998.044279] disp_get_layer (0,0,4096) fail lid plugin, CedarPluginVDInit not found. WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libaw_wavdec.so WARNING: cedarc <AddVDPluginSingle:1424>: Invalid plugin, CedarPluginVDInit not found. WARNING: cedarc <AddVDPlugin:1584>: 1117 load s[ 3998.079041] [DISP] disp_get_layer,line:111: o: /usr/lib/libawh264.so INFO [ 3998.079049] disp_get_layer (0,0,4096) fail : cedarc <CedarPluginVDInit:79>: register h264 decoder success! WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libawh265.so INFO : cedarc <CedarPluginVDInit:85>: register h265 decoder success! WARNING: cedarc <AddVDPlugin:1584>: 1117 [ 3998.112260] [DISP] disp_get_layer,line:111: load so: /usr/lib/libawmjpeg.so [ 3998.112377] disp_get_layer (0,0,4096) fail INFO : cedarc <CedarPluginVDInit:84>: register mjpeg decoder success! WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libawmjpegplus.so INFO : cedarc <CedarPluginVDInit:89>: register mjpegplus decoder su[ 3998.145908] [DISP] disp_get_layer,line:111: ccess! WARNING: cedarc <AddVDPl[ 3998.145916] disp_get_layer (0,0,4096) fail ugin:1584>: 1117 load so: /usr/lib/libawmpeg2.so INFO : cedarc <CedarPluginVDInit:86>: register mpeg2 decoder success! WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libawmpeg4base.so WARNING: cedarc <AddVDPluginSingle:1424>: Invalid p[ 3998.179105] [DISP] disp_get_layer,line:111: lugin, CedarPluginVDInit not fou[ 3998.179113] disp_get_layer (0,0,4096) fail nd. WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libawmpeg4dx.so INFO : cedarc <CedarPluginVDInit:92>: register mpeg4dx decoder success! WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libawm[ 3998.211258] [DISP] disp_get_layer,line:111: peg4h263.so INFO : cedarc <C[ 3998.211266] disp_get_layer (0,0,4096) fail edarPluginVDInit:79>: register mpeg4H263 decoder success! WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libawmpeg4normal.so INFO : cedarc <CedarPluginVDInit:90>: register mpeg4Normal decoder success! WARNING: cedarc <AddVDPlugin:1584>: [ 3998.243806] [DISP] disp_get_layer,line:111: 1117 load so: /usr/lib/libawrec[ 3998.243813] disp_get_layer (0,0,4096) fail order.so WARNING: cedarc <AddVDPluginSingle:1424>: Invalid plugin, CedarPluginVDInit not found. WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libawrpaf.so WARNING: cedarc <AddVDPluginSingle:1424>: Invalid [ 3998.277351] [DISP] disp_get_layer,line:111: plugin, CedarPluginVDInit not fo[ 3998.277358] disp_get_layer (0,0,4096) fail und. WARNING: cedarc <AddVDPlugin:1584>: 1117 load so: /usr/lib/libawwmv3.so INFO : cedarc <CedarPluginVDInit:74>: register vc1 decoder success! INFO : cedarc <log_set_level:43>: Set log level to 5 from /vendor/etc/cedarc.conf ERROR : cedarc <De[ 3998.311390] [DISP] disp_get_layer,line:111: bugCheckConfig:301>: now[ 3998.311399] disp_get_layer (0,0,4096) fail cedarc log level:5 WARNING: cedarc <InitializeVideoDecoder:602>: warning: the nDeInterlaceHoldingFrameBufferNum is 0 WARNING: cedarc <InitializeVideoDecoder:611>: warning: the nDisplayHoldingFrameBufferNum is 0 WARNING: omx_vdec <__AwOmxVdecGetConf[ 3998.343498] [DISP] disp_get_layer,line:111: ig:1558>: +++++ get display crop[ 3998.343506] disp_get_layer (0,0,4096) fail : top[0],left[0],width[512],height[384] -->show_layer id (0). Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstSystemClock [ 3998.377587] [DISP] disp_get_layer,line:111: [ 3998.377594] disp_get_layer (0,0,4096) fail [ 3998.410256] [DISP] disp_get_layer,line:111: [ 3998.410263] disp_get_layer (0,0,4096) fail [ 3998.443265] [DISP] disp_get_layer,line:111: [ 3998.443272] disp_get_layer (0,0,4096) fail [ 3998.477290] [DISP] disp_get_layer,line:111: [ 3998.477297] disp_get_layer (0,0,4096) fail
接下来就是最后两句无限循环
-
回复: gst-omx编译报错
@ubuntu
这个0730补丁我打过了
里面一些源文件我对比了 发现确实是打上了
后面发现唯独package/multidedia/gst-omx/Makefile没变成打完补丁后的 然后我替换了补丁里面的 编译通过了
总之可以了 -
gst-omx编译报错
SDK1.01打上了最新的补丁
编译gst-omx报错
错误信息如下:oot@allwinner-VirtualBox:/home/allwinner/d1/D1/package/multimedia/gst1-omx# mm make package/multimedia/gst1-omx/install V=s make[1]: Entering directory `/home/allwinner/d1/D1' make[2]: Entering directory `/home/allwinner/d1/D1/package/multimedia/gst1-omx' make -C /home/allwinner/d1/D1/out/d1-nezha/compile_dir/target/gst-omx-1.16.3/ ARCH="riscv" AR="riscv64-unknown-linux-gnu-ar" CC="riscv64-unknown-linux-gnu-gcc" CXX="riscv64-unknown-linux-gnu-g++" CFLAGS="-Os -pipe -mcmodel=medany -mabi=lp64d -march=rv64gcxthead -g3 -fno-caller-saves -Wno-format-truncation -Wno-unused-result -Wformat -Werror=format-security -Wl,-z,now -Wl,-z,relro" LDFLAGS="-L/home/allwinner/d1/D1/out/d1-nezha/staging_dir/target/usr/lib -L/home/allwinner/d1/D1/out/d1-nezha/staging_dir/target/lib -L/home/allwinner/d1/D1/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/usr/lib -L/home/allwinner/d1/D1/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/lib -znow -zrelro -Wl,-rpath-link=/home/allwinner/d1/D1/out/d1-nezha/staging_dir/target/rootfs/lib " TARGET_BOARD="d1" make[3]: Entering directory `/home/allwinner/d1/D1/out/d1-nezha/compile_dir/target/gst-omx-1.16.3' make all-recursive make[4]: Entering directory `/home/allwinner/d1/D1/out/d1-nezha/compile_dir/target/gst-omx-1.16.3' Making all in common make[5]: Entering directory `/home/allwinner/d1/D1/out/d1-nezha/compile_dir/target/gst-omx-1.16.3/common' Making all in m4 make[6]: Entering directory `/home/allwinner/d1/D1/out/d1-nezha/compile_dir/target/gst-omx-1.16.3/common/m4' make[6]: Nothing to be done for `all'. make[6]: Leaving directory `/home/allwinner/d1/D1/out/d1-nezha/compile_dir/target/gst-omx-1.16.3/common/m4' make[6]: Entering directory `/home/allwinner/d1/D1/out/d1-nezha/compile_dir/target/gst-omx-1.16.3/common' make[6]: Nothing to be done for `all-am'. make[6]: Leaving directory `/home/allwinner/d1/D1/out/d1-nezha/compile_dir/target/gst-omx-1.16.3/common' make[5]: Leaving directory `/home/allwinner/d1/D1/out/d1-nezha/compile_dir/target/gst-omx-1.16.3/common' Making all in omx make[5]: Entering directory `/home/allwinner/d1/D1/out/d1-nezha/compile_dir/target/gst-omx-1.16.3/omx' CCLD libgstomx.la gcc: error: unrecognized argument in option '-mcmodel=medany' gcc: note: valid arguments to '-mcmodel=' are: 32 kernel large medium small gcc: error: unrecognized argument in option '-mabi=lp64d' gcc: note: valid arguments to '-mabi=' are: ms sysv make[5]: *** [libgstomx.la] Error 1 make[5]: Leaving directory `/home/allwinner/d1/D1/out/d1-nezha/compile_dir/target/gst-omx-1.16.3/omx' make[4]: *** [all-recursive] Error 1 make[4]: Leaving directory `/home/allwinner/d1/D1/out/d1-nezha/compile_dir/target/gst-omx-1.16.3' make[3]: *** [all] Error 2 make[3]: Leaving directory `/home/allwinner/d1/D1/out/d1-nezha/compile_dir/target/gst-omx-1.16.3' make[2]: *** [/home/allwinner/d1/D1/out/d1-nezha/compile_dir/target/gst-omx-1.16.3/.built] Error 2 make[2]: Leaving directory `/home/allwinner/d1/D1/package/multimedia/gst1-omx' make[1]: *** [package/multimedia/gst1-omx/install] Error 2 make[1]: Leaving directory `/home/allwinner/d1/D1' make: *** [package/multimedia/gst1-omx/install] Error 2 root@allwinner-VirtualBox:/home/allwinner/d1/D1/package/multimedia/gst1-omx#
在文件out/d1-nezha/compile_dir/target/gst-omx-1.16.3/omx/Makefile 可以看到
这些变量 CC CCAS 被错误得指定为了gcc 其他文件的CC CCAS都是riscv64-unknown-linux-gnu-gcc 所以上面报了个gcc认不得-mcmodel=medany的错 实际上riscv是认得的
现在问题就是不知道哪里导致Makefile一些本该指定为riscv64-unknown-linux-gnu-gcc 指定为了gcc 当然在Makefile直接把gcc手动改为riscv64-unknown-linux-gnu-gcc也不行和这个贴一样的
https://bbs.aw-ol.com/topic/293/ -
回复: 【DIY教程】用D1哪吒开发板把”毛坯车“改造成”全车智能“(更新中)
哇 我居然上电视了
那个旋转旺仔有点意思
旋转旺仔:小文哥同学 你妈妈拿着两罐旺仔牛奶在门口等你