raspberry pi播放音视频
文章目录
- 目的
- QMediaPlayer
- GStreamer
- what is GStreamer
- 体系框架
- 优势
- omxplayer
- what is omxplayer
- command Line
- key bindings
- 运行过程中错误
- ALSA
目的
实现在树莓派下外接扬声器, 播放某段音频, 进行回音测试。
QMediaPlayer
首先我的安装是5.11版本。
优先想到的是通过Qt QMutilmedia 这个模块, 结果再通过QMediaPlayer 播放指定路径下文件。
结果不太理想, 报错 “defaultServiceProvider::requestService(): no service found for - “org.qt-project.qt.mediaplayer””
然后采取这篇博客defaultServiceProvider::requestService()建议
了解的思路是安装 gstreamer1.0, 然后ffmpeg, 单独下载qt源码进行安装编译 进行对应配置说明设置, 但由于本人比较懒, 这个就取消了,但最终也没怎么解决, 后续再看看验证此方法, 或者读者有更好方法, 或者已经验证此方法可行, 也请麻烦告知一下, 互相学习。
- 安装准备
gstreamer1.0ffmpegqt5
building-qt-515-lts-raspberry-pi-raspberry-pi-os
这篇博客说到 gstreamer multimedia framework support, 如下的在树莓派中都建议安装下。
- import module in pro
QT += multimedia multimediawidgets
Qt | 播放音频文件 QMediaplayer
注意事项:
当定义的QMediaPlayer对象正在播放一个音频文件时,再次调用setMedia()和play(),会停止正在播放的音频文件,播放新设置的音频文件。
如果想同时播放两个音频文件,需要创建两个QMediaPlayer对象,同时进行播放。
重复new()和delete()会造成崩溃。
GStreamer
what is GStreamer
what is gstreamer
适用于Android,iOS,macOS和Windows, linux 多平台。GStreamer是一个用于构建图形的库 媒体处理组件。它支持的应用程序范围从简单 Ogg/Vorbis 播放,音频/视频流到复杂的音频(混音)和视频 (非线性编辑)处理。应用可以利用编解码器和滤波器技术的进步 透明。开发人员可以通过编写 具有干净通用界面的简单插件GStreamer是一个基于管道的多媒体框架,它将各种各样的媒体处理系统连接在一起,以完成复杂的工作流程。
例如,可以使用GStreamer构建一个系统,该系统读取一种格式的文件,处理它们,并以另一种格式导出它们。格式和过程可以以即插即用的方式进行更改。GStreamer是一个开源的多媒体框架,主要用于创建媒体应用程序(流媒体、媒体回放、非线性编辑等)。GStreamer框架的设计目的是简化编写处理音频或视频或两者兼有的应用程序。它使用提供各种编解码器和其他功能的插件。
体系框架
优势
处理多媒体不是一件容易的事。因此,选择合适的框架来处理音频和视频流成为确保项目成功的关键。面对这一挑战的开发人员在选择正确的多媒体框架之前应该考虑以下因素:编码复杂性(架构)、跨平台支持、多媒体技术覆盖范围(编解码器、过滤器等)、文档和可用支持。
GStreamer在上述标准中表现出色:它的智能插件架构和全面的核心库使您的应用程序开发变得容易,并且它为您的许多需求提供了经过良好测试的元素。它可以在所有主要的操作系统上运行。Linux, Android, Windows, Max OS X, iOS),并运行在所有主要硬件架构上,包括x86, ARM, MIPS, SPARC。它有一个广泛的多媒体插件列表(编码器,解码器,内容过滤器……),而且它允许轻松集成第三方插件。最后,GStreamer为开发人员和大型社区提供了广泛且结构良好的文档,他们的贡献确保了该框架的持续改进。
omxplayer
what is omxplayer
omxplayer
OMXPlayer是你可以在树莓派上使用的最好的视频播放器之一,这要归功于它针对其硬件进行了优化。Kodi团队最初开发这款软件是为了在Pi的硬件上运行视频。由于是专门为硬件设计的,所以它已经进行了大量优化。更好的是,您可以从命令行使用OMXPlayer。这让你可以使用像Raspberry Pi OS Lite这样的轻量级操作系统,同时仍然可以运行视频。
command Line
Usage: omxplayer [OPTIONS] [FILE]
Options :-h / --help print this help-n / --aidx index audio stream index : e.g. 1-o / --adev device audio out device : e.g. hdmi/local-i / --info dump stream format and exit-s / --stats pts and buffer stats-p / --passthrough audio passthrough-d / --deinterlace deinterlacing-w / --hw hw audio decoding-3 / --3d mode switch tv into 3d mode (e.g. SBS/TB)-y / --hdmiclocksync adjust display refresh rate to match video (default)-z / --nohdmiclocksync do not adjust display refresh rate to match video-t / --sid index show subtitle with index-r / --refresh adjust framerate/resolution to video-g / --genlog generate log file-l / --pos n start position (in seconds)--boost-on-downmix boost volume when downmixing--vol n Set initial volume in millibels (default 0)--subtitles path external subtitles in UTF-8 srt format--font path subtitle font(default: /usr/share/fonts/truetype/freefont/FreeSans.ttf)--font-size size font size as thousandths of screen height(default: 55)--align left/center subtitle alignment (default: left)--lines n number of lines to accommodate in the subtitle buffer(default: 3)--win "x1 y1 x2 y2" Set position of video window--audio_fifo n Size of audio output fifo in seconds--video_fifo n Size of video output fifo in MB--audio_queue n Size of audio input queue in MB--video_queue n Size of video input queue in MB
key bindings
z Show Info
1 Decrease Speed
2 Increase Speed
j Previous Audio stream
k Next Audio stream
i Previous Chapter
o Next Chapter
n Previous Subtitle stream
m Next Subtitle stream
s Toggle subtitles
d Subtitle delay -250 ms
f Subtitle delay +250 ms
q Exit OMXPlayer
Space or p Pause/Resume
- Decrease Volume
+ Increase Volume
Left Arrow Seek -30 s
Right Arrow Seek +30 s
Down Arrow Seek -600 s
Up Arrow Seek +600 s
eg:
sudo omxplayer -p -o hdmi test_spk.WAV
运行过程中错误
当时场景我是接口一个扬声器, 然后播放时候通过该扬声器播放声音。
出现了如下问题:
- 播放结果提示 have a nice day!
- 排除静音下情形下,播放没有声音出来
首先安装omxplayer, 上文到的gstreamer 中一些dev, alsa
sudo apt-get install omxplayer
然后再对应的ui操作界面 选择对应输入, 我那里选择AV Jack;
cmd 输入 alsamixer, 了解对应声卡
alsamixer
在如上图中按下F6, 选择对应的sound car, 由于Raspberry Pi最多具有三种音频输出方式:Master(PulseAudio card),HDMI (HDMI Card) ,以及耳机插孔(Headphone Card)。可以随时切换。
如果您的HDMI显示器或电视具有内置扬声器,则可以通过HDMI来播放音频,同时您可以将其切换到耳机或插入耳机插孔的其他扬声器。如果您的显示器有扬声器,则默认情况下会通过HDMI输出声音。如果不是,则通过耳机插孔输出。这可能不是期望的输出设置,或者自动检测不准确,在这种情况下,您可以手动切换输出。
而我是想通过过耳机插孔输出, 所以会选择Headphone.
树莓派输出声音
选择Headphone 设置音量,
amixer set -c 0 Headphone 50
还有些说设置, 具体也不知道好不好使 gpu_mem
In the file
/boot/config.txt
add the line
gpu_mem=128
ALSA
[ALSA]是Linux声音堆栈的最低级别。alsa-utils包已经安装在我正在使用的debian wheezy发行版(2012-12-16-wheezy-raspbian.zip)上。它提供了一些有用的命令:amixer, alsamixer, alsactl, aplay和speaker-test。
ALSA(高级Linux声音体系结构)是主要的Linux声音系统。脉冲音频和Jack在ALSA上进行操作。
Alsamixer是一个基于终端的混音器控制。它是系统自带的,用于故障排除或检查声音运行。
Sound configuration on Raspberry Pi with ALSA
amixer
amixer__
amixer allows command-line control of the mixer for the ALSA soundcard driver. amixer supports multiple soundcards.
alsamixer是Linux音频架构ALSA中的Alsa工具的其中一个,用于配置音频的各个参数。
alsamixer是基于文本下的图形界面的,可以通过键盘的上下键,左右键等,很方便地设置需要的音量,开关某个switch(开关)等等操作。
amixer,是alsamixer的文本模式,即命令行模式,需要用amixer命令的形式去配置你的声卡的各个选项。
PulseAudio 是 POSIX 操作系统的声音服务器系统,这意味着它是您的声音应用程序的代理。它是所有相关现代 Linux 发行版不可或缺的一部分,被多个供应商用于各种移动设备。它在应用程序和硬件之间传递声音数据时对声音数据执行高级操作。诸如将音频传输到另一台机器、更改采样格式或通道数或将多个声音混合到一个输入/输出中等操作都可以使用 PulseAudio 轻松实现
相关文章:

raspberry pi播放音视频
文章目录目的QMediaPlayerGStreamerwhat is GStreamer体系框架优势omxplayerwhat is omxplayercommand Linekey bindings运行过程中错误ALSA目的 实现在树莓派下外接扬声器, 播放某段音频, 进行回音测试。 QMediaPlayer 首先我的安装是5.11版本。 优先…...

【电子学会】2022年12月图形化二级 -- 老鹰捉小鸡
老鹰捉小鸡 小鸡正在农场上玩耍,突然从远处飞来一只老鹰,小鸡要快速回到鸡舍中,躲避老鹰的抓捕。 1. 准备工作 (1)删除默认白色背景,添加背景Farm; (2)删除默认角色小…...

C++的双端队列
双端队列介绍1.双端队列知识需知2.大试牛刀1.双端队列知识需知 由于队列是一种先进先出(FIFO)的数据结构,因此无法直接从队列的底部删除元素。如果希望从队列的底部删除元素,可以考虑使用双端队列(deque)。…...
【独家】华为OD机试 - 拼接 URL(C 语言解题)
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...

为什么使用Junit单元测试?Junit的详解
Hi I’m Shendi 为什么使用Junit单元测试?Junit的详解 Junit简介 Junit是一个Java语言的单元测试框架。 单元测试是一个对单一实体(类或方法)的测试 JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression test…...
怎么学好嵌入式Linux系统和驱动
嵌入式专业是一门实践性非常强的学科,只有多动手,多实践,多编程,多调试,多看书,多思考才能真正掌握好嵌入式开发技术。 现在很多同学也意识到了学校培养模式和社会需求脱节问题,有一部分同学也先…...

Spring Aware总结
概述 Spring中Aware到底是什么意思? 我们在看Spring源码的时候,经常可以看到xxxAwarexxx的身影,通常我会很疑惑,Aware到底是什么意思呢? 比如图片中这些包含Aware关键字的类或者接口。 我对下面3个类或接口进行了解…...
【RocketMQ】源码详解:Broker端消息刷盘流程
消息刷盘 同步入口:org.apache.rocketmq.store.CommitLog.GroupCommitService 异步入口:org.apache.rocketmq.store.CommitLog.FlushRealTimeService 刷盘有同步和异步两种,在实例化Commitlog的时候,会根据配置创建不同的服务 p…...

编码器SIQ-02FVS3驱动
一.简介 此编码器可以是功能非常强大,可以检测左右转动,和按键按下,所以说这一个编码器可以抵三个按键,而且体积非常小,使用起来比三个按键要高大尚,而且驱动也简单。唯一不足的点就是价格有点小贵6-8元才…...

【2021.9.7】记一次exe手动添加shellcode
【2021.9.7】记一次exe手动添加shellcode 文章目录【2021.9.7】记一次exe手动添加shellcode0.大致思路1.获取MessageBox的真实地址VA2.通过OD在代码段添加shellcode3.dump出数据,设置程序OEP4.测试dump出来的exe5.方法总结测试的exe和添加了shellcode的exe:链接&…...

常用训练tricks,提升你模型的鲁棒性
目录一、对抗训练FGM(Fast Gradient Method): ICLR2017代码实现二、权值平均1.指数移动平均(Exponential Moving Average,EMA)为什么EMA会有效?代码实现2. 随机权值平均(Stochastic Weight Averaging,SWA&a…...

具有精密内部基准的 DACx0502 简介及驱动应用示例
DACx0502 说明 16 位 DAC80502、14 位 DAC70502 和 12 位DAC60502 (DACx0502) 数模转换器 (DAC) 均为具有电压输出的高精度、低功耗器件。 DACx0502 线性度小于 1LSB。凭借高精度和微型封装特性,DACx0502 非常适合以下 应用: 增益和失调电压校准、电流…...

C语言函数:字符串函数及模拟实现strncpy()、strncat()、strncmp()
C语言函数:字符串函数及模拟实现strncpy()、strncat()、strncmp() 在了解strncpy、strncat()、前,需要先了解strcpy()、strncat(): C语言函数:字符串函数及模拟实现strlen() 、strcpy()、 strcat()_srhqwe的博客-CSDN博客 strncp…...
学术论文插图要求简介
1. 类型 位图和矢量图是两种不同的图像类型,它们在存储和处理图像时使用不同的方法。以下是它们之间的详细区别: 图像构成方式:位图使用像素(或图像的最小单元)来构建图像,每个像素都有自己的颜色和亮度值。…...
【独家】华为OD机试 - 斗地主 2(C 语言解题)
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...

力扣-计算特殊奖金
大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:1873. 计算特殊奖金二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总…...
华为校招机试真题目录
专栏介绍 本专栏将逐步收集历年华为校招算法真题 专栏权益 每篇博客都包含: 算法考点解析(文字+画图)算法源码(支持 Java / JS / Python)每晚9:00 ~ 11:00 在线答疑 真题目录 时间题目考点 or 实现2022.11.27...

EdgeYOLO学习笔记
EdgeYOLO学习笔记 EdgeYOLO: An Edge-Real-Time Object Detector Abstract 本文基于最先进的YOLO框架,提出了一种高效、低复杂度、无锚的目标检测器,该检测器可以在边缘计算平台上实时实现。为了有效抑制训练过程中的过拟合,我们开发了一种…...
【分布式】什么是分布式锁?正文揭晓
分布式锁的概念 分布式锁其实可以理解为:控制分布式系统有序的去对共享资源进行操作,通过互斥来保持一致性。 举个例子:假设共享的资源就是一个房子,里面有各种书,分布式系统就是要进屋看书的人, 分布式锁…...

超详细JDK1.8所有版本下载地址
JDK1.8即为JDK8,JDK8是目前是最成熟最稳定的版本,本文将详细介绍JDK1.8历史版本的下载方式。 在此附上JDK1.8安装与配置教程 超详细JDK1.8安装与配置 一、JDK官网 首先打开oracle官网,官网首页地址为 JDK官网首页地址 点击Products 点击…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...