树莓派上使用QT录音找不到设备、ffmpeg编码、视频处理等+部署自启动+双击不启动问题、QT编程问题等各种疑难杂症

目录

1、 安装完QT后,我们自己的声卡驱动有可能无法采集声音,这里有个妙招: 

2、安装fdk-aac:

3、安装ffmpeg:

4、编程注意事项

4.1 QT没有多媒体库,QAudioDeviceInfo 找不到设备怎么办?

5、程序发布

6、执行程序

7、自启动

8、QT全屏显示

9、触屏校准

10、LCD和HDMI切换

11、QT float转QString

12、替换字符串中的特定字符

13、按钮关闭程序

14、状态栏

15、树莓派4B耳机没声音

16、双击不启动问题

17、QObject::connect: Cannot queue arguments of type "xxx"


最新的ffmpeg安装和下载地址可以参考这个链接,当然本文所介绍的方法更细节。

树莓派3B+ 编译使用ffmpeg-4.1 libx264以及在QT中的集成_Stay Hungry Stay Foolish-CSDN博客

可以参考上述文章。

1、 安装完QT后,我们自己的声卡驱动有可能无法采集声音,这里有个妙招: 

安装audacity 软件,将依赖的库补充齐全。

2、安装fdk-aac:

在安装ffmpeg前,需要安装fdk-aac,因为最新版的ffmpeg在使用AAC编码时会出现不支持s16的PCM编码的情况:

下载地址: https://www.linuxfromscratch.org/blfs/view/svn/multimedia/fdk-aac.html 

目标机器上缺省configure之后make会出现共享代码相关的错误,需要加上一些参数:
./configure CFLAGS=-fPIC
sudo make -j4
sudo make install

3、安装ffmpeg:

直接安装是无法生成ffplay的,少驱动,安装:

sudo apt-get install libsdl2-dev

然后再配置,再编译和安装。

配置的时候需要加上aac等:

./configure --arch=armel --target-os=linux --enable-shared  --enable-libx264 --enable-omx --enable-omx-rpi --enable-encoder=h264_omx --enable-mmal --enable-hwaccel=h264_mmal --enable-decoder=h264_mmal --enable-libfdk-aac --enable-nonfree --enable-gpl --extra-ldflags="-latomic"

配置完就会出现:

Programs:
ffmpeg                  ffplay                  ffprobe
然后再编译安装:

sudo make -j4
sudo make install

测试:播放网络摄像仪图像。

rtsp://admin:hxxxyx503@192.168.1.200:554/h264/ch1/sub/av_stream

【错误解决方案】有的版本ffmpeg配置的时候会提示:

ERROR: --enable-hwaccel=h264_mmal did not match anything

这个无所谓,默认就是开启h264硬件加速的,不用担心,可以忽略.

提示 ERROR: OMX_Core.h not found,解决方法:

sudo  apt-get install libomxil-bellagio-dev

安装后即可消除报错。

4、编程注意事项

QT中使用QFile代替FILE,一样可以用。

使用AAC编解码器时,调用方法:

codec = avcodec_find_encoder_by_name("libfdk_aac"); 

PCM文件使用QFile读入,分帧存储使用 std::memcpy更加方便,将PCM编码拷贝至AVFrame的data中。

4.1 QT没有多媒体库,QAudioDeviceInfo 找不到设备怎么办?

因为没有安装插件,安装插件:

sudo apt-get install libqt5multimedia5 libqt5multimedia5-plugins

5、程序发布

.pro文件中添加: 

TEMPLATE = app     QMAKE_LFLAGS += -no-pie

依赖库可以拷贝到可执行文件夹内,也可以添加到路径中:

拷贝: sudo cp /usr/local/lib/xxx.so  sssssssss/       // xxx.so是动态库,sssssssss/ 是可执行程序的文件夹

添加动态库地址: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:XXX         // XXX是动态库的路径,一般是 /usr/local/lib

6、执行程序

命令行cd到目标文件夹,执行:

./xxxx        // xxxx是可执行程序名

如果不行,添加一下可执行权限:

sudo chmod 777 xxxx

7、自启动

cd ~/.config

sudo mkdir autostart

cd autostart

sudo nano xxxxx.desktop

输入:

[Desktop Entry]
Exec=/home/pi/yyyyyyyy
Type=Application

其中,yyyyyy是可执行文件名

ctrl+X  enter   Y   保存退出

sudo reboot 

8、QT全屏显示

setWindowState(Qt::WindowFullScreen);

9、触屏校准

树莓派 触摸屏_树莓派加装3.5寸触摸屏方法和触摸屏问题处理_weixin_39632467的博客-CSDN博客

按照上面博客进行安装xinput-calibrator。注意~!!!需要校准两次,使用第二次的结果。

没有/etc/X11/xorg.conf.d/99-calibration.conf 的话需要自己创建。

10、LCD和HDMI切换

树莓派 触摸屏_树莓派加装3.5寸触摸屏方法和触摸屏问题处理_weixin_39632467的博客-CSDN博客

参考这个博客安装LCD驱动,使用下面进行切换。

cd LCD-show

sudo ./LCD35-show

sudo ./LCD-hdmi

11、QT float转QString

float tmp=1.25;

QString str = QString( "'%1" ).arg( tmp, 0, 'f', 2 );

 e - 格式化为[-]9.9e[+|-]999 
        E - 格式化为[-]9.9E[+|-]999 
        f - 格式化为[-]9.9 
        g - 使用e或f格式,看哪一个更简练 
        G - 使用E或f格式,看哪一个更简练

12、替换字符串中的特定字符

QString str="123123/fdd/ssss.mp3";

str.replace("123123","");                // 这是删掉123123这个字符串

13、按钮关闭程序

直接在槽函数中添加:

close();        

即可。

如果需要确认,则需要重写 虚函数:

closeEvent();

14、状态栏

 QLabel *label1;
 ui->statusBar->addWidget(label1);        // 左侧添加状态
 ui->statusBar->addPermanentWidget(label1); //右侧添加状态

15、树莓派4B耳机没声音

需要在raspi-config中设置一下

终端输入 sudo raspi-config 选择 1 System Options ,enter,然后选择  S2 Audio,enter,然后选2 headphones, enter,然后箭头右,光标到finish,enter。

使用audacity播放没声音,那就需要选择一下播放设备。

16、双击不启动问题

我参考的是这个博客,很管用,用的是第二阶段。

linux下QT发布程序双击打不开解决方法_架相的博客-CSDN博客_linux qt打不开

将可执行程序当前路径加到如下配置文件(依赖库一般和可执行程序在同级目录)

/etc/ld.so.conf

sudo ldconfig   // 使设置生效

17、QObject::connect: Cannot queue arguments of type "xxx"

这是因为这个数据类型不是QT自带的,需要在信号发送者和接受者的文件内进行声明和注册:

在头文件中包含:

#include <QMetaType>

在.cpp的构造函数中注册该类型:

qRegisterMetaType<Mat>("Mat");  //这里是opencv的Mat类型,需要声明命名空间才可以直接使用Mat,否则需要使用cv::Mat。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值