Ubuntu下编译程序提示缺失decoder
错误信息提示
Warning: "No decoder available for type 'video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)3, profile=(string)high, codec_data=(buffer)0164001effe100196764001eacd940c037b0110000030001000003003c0f162d9601000668ebe2cb22c0, max-input-size=(int)36046, width=(int)768, height=(int)432, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, parsed=(boolean)true'."
也就是说缺失视频解码器,造成只有视频播放界面,不能正常播放视频的情况
解决方案
先更新一下源,再安装gstreamer流媒体框架即可
sudo apt-get update
sudo apt-get install gstreamer1.0-libav
最后成功播放视频
scp命令出错
错误信息提示
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
即警告:远程主机标识已更改!
解决方案
移除连接使用的ip地址即可
ssh-keygen -R ipaddr
再次重新执行scp命令即可
嵌入式Qt平台运行可执行文件报错
错误信息提示
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
解决方案
vi /etc/profile
# 文件末尾写入两句话
export XDG_RUNTIME_DIR=/usr/lib/
export RUNLEVEL=3
#使能环境变量
source /etc/profile
#最后重新运行可执行文件
找不到.so动态库
错误信息及分析
error while loading shared libraries: libpulse.so.0: cannot open shared object file: No such file or directory
提示找不到libpulse.so.0动态库,不妨用ldd命令查看一下少了哪些动态库
如何使用在开发板上使用ldd命令详见 Arm开发板上使用ldd命令
ldd 可执行文件
可以看到 libpulse.so.0 => not found
这行报错信息
解决方案
使用scp命令将libpulse.so.0
这个库复制到 /usr/lib
目录下即可
棘手的问题
动态库缺失的问题解决之后,运行我的Qt视频播放器,结果提示
defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer"
提示找不到"org.qt-project.qt.mediaplayer"
这样一个服务
运行结果就是lcd屏幕上出现的只有播放器的框架和背景,但是没有声音和画面
查阅的一些解决方案
解决QT no service found for – org.qt-project.qt.mediaplayer问题
总结一下:QT的MultiMedia依赖于Gstreamer,所以要交叉编译Gstreamer
然后再将MultiMedia添加进QT配置,接着交叉编译QT,编译好之后的QT的plugins目录下要有文中提到的库文件
交叉编译Gstreamer的方法,码一下 Qt5.9.7交叉编译gstreamer
结果
交叉编译Gstreamer本体已经成功,详见个人博客 arm-linux交叉编译Gstreamer
但是添加Gstreamer进QT配置,再重新编译QT失败,未能生成相关媒体库
QT官方给的一些说明如下
也就是说要有Qt Multimedia,还需要交叉编译Gstreamer的其他版本,如base good bad ugly,否则光有本体base还是没用
后续等有空再研究如何编译完整的Gstreamer吧,应该能解决这个问题
报错问题
错误信息
xilinx-video amba_pl:xlnx_vipp: dma_alloc_coherent of size 0 failed
大概意思就是分配内存失败了,尚不清楚这是什么信息。应该是没找到相关媒体和设备。
因为在后续的v4l2编程中也遇到过类似报错,排查错误原因就在于找不到相关设备,导致分配0内存
写在最后
仅仅做个记录,有空再解决吧,QT播放视频有其他的方案