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 点击…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...
Vue 3 + WebSocket 实战:公司通知实时推送功能详解
📢 Vue 3 WebSocket 实战:公司通知实时推送功能详解 📌 收藏 点赞 关注,项目中要用到推送功能时就不怕找不到了! 实时通知是企业系统中常见的功能,比如:管理员发布通知后,所有用户…...
