精华内容
下载资源
问答
  • Android播放音频文件一般都是使用MediaPlayer类来实现的,它多种格式的音频文件提供了非常全面的控制方法, 下表为MediaPlayer类一些较为常用的控制方法 方法名 功能描述 setDataSource() 设置要播放的音频...

    播放音频
    Android中播放音频文件一般都是使用MediaPlayer类来实现的,它对多种格式的音频文件提供了非常全面的控制方法,
    下表为MediaPlayer类中一些较为常用的控制方法
    方法名 功能描述
    setDataSource() 设置要播放的音频文件的位置
    prepare() 在开始播放之前调用这个方法完成准备工作
    start() 开始或继续播放音频

    pause() 暂停播放音频
    reset() 将MediaPlayer对象重置到刚刚创建的状态
    seekTo() 重指定的位置开始播放音频
    stop() 停止播放音频。调用这个方法后的MediaPlayer对象无法再播放音频

    getDuration() 获取载入音频文件的时长
    播放视频
    主要用到VideoView类来实现的,这个类将视频的显示和控制集一身,使得我们仅仅借助它就可以完成一个简单的视频播放器
    方法名 功能描述
    setVideopath() 设置要播放视频文件的位置
    start() 开始或继续播放视频
    pause() 暂停播放视频

    resume() 将视屏从头开始播放
    seekTo() 从指定的位置开始播放视频
    isPlaying() 判断当前是否正在播放视频
    getDuration() 获取载入的视频文件的时长

    展开全文
  • 在 Android 播放音频文件一般都是使用 MediaPlayer 类来实现的,它多种格式的音 频文件提供了非常全面的控制方法,从而使得播放音乐的工作变得十分简单。下表列出了 MediaPlayer 类一些较为常用的控制方法。 ...
  • 在上篇博客抛出了一个有待解决的问题,简单描述一下就是:音频输出通道是HDMI时,wav和mp3格式的音频文件都可以播放并且有声音输出,但是切换到speaker通道输出时,wav格式的音频文件有声音输出,mp3格式的音频...
    在上篇博客中抛出了一个有待解决的问题,简单描述一下就是:音频输出通道是HDMI时,wav和mp3格式的音频文件都可以播放并且有声音输出,但是切换到speaker通道输出时,wav格式的音频文件有声音输出,mp3格式的音频文件居然没有声音输出。为了找到产生问题的原因和解决方法,接下来将对音频的处理代码进行跟踪。
    资料是查问题很好的帮手,首先看一下硬件手册关于音频的部分。
    ![这里写图片描述](https://img-blog.csdn.net/20170908112241490?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc19qYXNvbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    (实在是不好意思,用MarkDown插入图片,插入的总是路径,就是不显示图片,找了几个解决方法,换了几个浏览器登录也不可以,切换到html编辑后,原内容不会复制过去,后面找到办法再添加图片。)
    这里在APQ8016中内置了MIPI转DSI的4线接口用来支持HDMI的输出,并且添加了一个DSI转HDMI的芯片-ADV7533,我们可以通过i2c3来控制这个芯片。那么音频是如何输出的呢,这里有个i2s2接口是用来支持音频输出的。
    既然图在这了,就顺便说一下高速接口和HDMI的切换,这里有个复用设备-FSA644UCX,它的作用就是对通道进行切换,但是高速接口和HDMI是不能同时工作的。这里有个GPIO_32控制的“DSI_SW_SEL_APQ”,当它为“0”时,通过HDMI输出,当它为“1”时,通过高速接口输出。
    接下来看一下相关代码,在kernel/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi里面:
    
          i2c@78b8000 { /* BLSP1 QUP4 */
              /* DSI_TO_HDMI I2C configuration */
              adv7533@39 {
                  compatible = "adv7533";
                  reg = <0x39>;
                  adv7533,video-mode = <3>; /* 3 = 1080p */
                  adv7533,main-addr = <0x39>;
                  adv7533,cec-dsi-addr = <0x3C>;
                  adv7533,audio = <1>;
                  pinctrl-names = "pmx_adv7533_active","pmx_adv7533_suspend";
                  pinctrl-0 = <&adv7533_int_active &adv7533_hpd_int_active &adv7533_switch_active>;
                  pinctrl-1 = <&adv7533_int_suspend &adv7533_hpd_int_suspend &adv7533_switch_suspend>;
                  adv7533,irq-gpio = <&msm_gpio 31 0x2002>;
                  adv7533,hpd-irq-gpio = <&msm_gpio 20 0x2003>;
                  adv7533,switch-gpio = <&msm_gpio 32 0x0>;
              };
          };

    我们可以看到上面描述的控制。音频输出控制:adv7533,audio = <1>;
    高速接口输出和HDMI输出切换控制:adv7533,switch-gpio = <&msm_gpio 32 0x0>;
    我在代码里将音频输出禁用:adv7533,audio = <0>;
    然后重新编译并烧写boot.img,播放一段音频试了试,发现wav和mp3格式的音频文件都有声音输出,而且声音的输出通道也不是HDMI,是按照硬件原理图自己连接的speaker。这个修改相对于上篇博客中写的修改方法要好的多,即简单又不存在播放mp3音频文件没声音的问题

    到此上篇博客中的问题三也被解决了,至于这个问题出现的原因,将会继续跟踪查找。
    
    展开全文
  • 高清晰多媒体接口(HDMI)是一个行业性、非压缩全数字化音视频接口。...它包括发送到解码器MPEG数据流包,并按照无压缩、可以是高清视频数据格式发送到输出端。利用T_MDS(最小跳变传输信令)视频数据解码
  • 关于wav amr音频分析

    2020-04-19 13:54:31
    从事嵌入式开发过程,如果遇到播放wav 和 amr格式音频的话,我们就必须要这两种音频格式的数据有所了解,今天就简单介绍下这两种音频文件。 1.WAV文件 咋们先贴一张WAV文件的二进制数据图。 WAV文件=wav头+ ...

    关于wav amr音频分析

    从事嵌入式开发过程中,如果遇到播放wav 和 amr格式音频的话,我们就必须要对这两种音频格式的数据有所了解,今天就简单介绍下这两种音频文件。

    1.WAV文件
    咋们先贴一张WAV文件的二进制数据图。
    在这里插入图片描述
    WAV文件=wav头+ 音频数据

    先介绍下wav音频数据的头分析

    地址/大小 描述
    00H 4 bytes RIFF
    04H 4 bytes 从此地址计算本文件的大小
    08H 4 bytes wav
    0cH 4 bytes fmt
    10H 4 bytes 从此地址计算文件大小
    14H 2 bytes 编码格式0x0001代表pcm
    16H 2 bytes channels,1-单声道,2-双声道
    18H 4 bytes sample rate 采用频率
    1cH 4 bytes bitssample ratechannels/8 每秒传输字节数
    20H 2 bytes bits*channels/8
    22H 2 bytes bits(量化位数)
    24H 4 bytes “data”
    28H 4 bytes 后面开始的语音数据的大小,真正的文件大小=这个值+0x2c
    2cH … 语音数据

    c语言中对于一个wav头,如下

    struct wav_header {
        uint32_t riff_id;
        uint32_t riff_sz;
        uint32_t riff_fmt;
        uint32_t fmt_id;
        uint32_t fmt_sz;
        uint16_t audio_format;
        uint16_t num_channels;
        uint32_t sample_rate;
        uint32_t byte_rate;       /* sample_rate * num_channels * bps / 8 */
        uint16_t block_align;     /* num_channels * bps / 8 */
        uint16_t bits_per_sample;
        uint32_t data_id;
        uint32_t data_sz;
    };
    

    一个wav文件偏移wav大小就是pcm格式的音频数据了,该数据可以被声卡直接播放。我们在编写程序时,如果要播放或者录制wav格式的音频该怎么办。
    播放:
    提取wav头文件,包括的一些重要参数,采样率,音频本身音频格式,通道,音频数据大小等,主要用于打开与设置pcm设备,然后将pcm音频数据直接送入声卡中播放即可。
    录制:
    创建一个文件,先写入wav结构体的头,然后使用音频应用接口从pcm设备中读取要录制的pcm数据后,直接写入,即可形成一个wav格式的音频。

    2.amr格式音频
    amr格式音频叫什么,自适应多速率编码格式,它分为两种,一种为amrnb,另一种为amrwb,两者区别如下:
    amr-nb:语音带宽范围:300-3700Hz,8KHz采样频率
    amr-wb:语音带宽范围:50~7000Hz,16KHz采样频率

    简单说下amrnb音频格式
    amrnb音频主要有如下编码方式
    amr关键在于20ms采样一帧数据,这个是重点。
    8KHz的采样频率,20ms采样一帧数据,每秒50帧数据,每帧数据8KHz/50=160个采样点,会得到一个数据长度的数据,amr是压缩型的数据,所以需要对采样数据经常信息提取,把数据进行压缩,重新编码,通过此法得到8中编码格式如下:

    序号 规格 音频帧字节数 帧头 FT
    0 AMR 4.75 13 0400000100 0000
    1 AMR 5.15 14 0C 00001100 0001
    2 AMR 5.9 16 14 00010100 0010
    3 AMR6.7 18 1C 00011100 0011
    4 AMR 7.4 20 24 00100100 0100
    5 AMR 7.95 21 2C 00101100 0101
    6 AMR 10.2 27 34 00110100 0110
    7 AMR 12.2 32 3C 00111100 0111

    下面看看amr格式文件二进制数据:
    在这里插入图片描述
    从上图可知,当前文件采用AMR12.2规格编码方式进行编码的,我们如果要播放此格式音频,如何提取数据,并且对数据进行节目呢?
    1.偏移amr头 6个字节
    2.读取一个字节数据,从中提取出本语音帧使用的规格,判断出字节数,在从数据中提取出语音帧。

    一般语音帧帧头不属于上面的8种,采用直接跳过,往下读取的方法,最终将整个amr文件读取完毕为止。

    展开全文
  • android: 播放音频

    2016-04-01 09:24:00
    在 Android 播放音频文件一般都是使用 MediaPlayer 类来实现的,它多种格式的音 频文件提供了非常全面的控制方法,从而使得播放音乐的工作变得十分简单。下表列出了 MediaPlayer 类一些较为常用的控制方法。 ...

    在 Android 中播放音频文件一般都是使用 MediaPlayer 类来实现的,它对多种格式的音 频文件提供了非常全面的控制方法,从而使得播放音乐的工作变得十分简单。下表列出了 MediaPlayer 类中一些较为常用的控制方法。

     

    方法名

    功能描述

    setDataSource()

    设置要播放的音频文件的位置。

    prepare()

    在开始播放之前调用这个方法完成准备工作。

    start()

    开始或继续播放音频。

    pause()

    暂停播放音频。

    reset()

    将 MediaPlayer 对象重置到刚刚创建的状态。

    seekTo()

    从指定的位置开始播放音频。

    stop()

    停止播放音频。调用这个方法后的 MediaPlayer 对象无法再播放音频。

    release()

    释放掉与 MediaPlayer 对象相关的资源。

    isPlaying()

    判断当前 MediaPlayer 是否正在播放音频。

    getDuration()

    获取载入的音频文件的时长。

     

    简单了解了上述方法后,我们再来梳理一下 MediaPlayer 的工作流程。首先需要创建出一个 MediaPlayer 对象,然后调用 setDataSource()方法来设置音频文件的路径,再调用 prepare()方法使 MediaPlayer 进入到准备状态,接下来调用 start()方法就可以开始播放音频,调用 pause()方法就会暂停播放,调用 reset()方法就会停止播放。 下面就让我们通过一个具体的例子来学习一下吧,新建一个 PlayAudioTest 项目,然后

    修改 activity_main.xml 中的代码,如下所示:

     

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" >

     

    <Button android:id="@+id/play" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Play" />

     

    <Button android:id="@+id/pause" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Pause" />

     

    <Button android:id="@+id/stop" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Stop" />

     

    </LinearLayout>

    布局文件中横向放置了三个按钮,分别用于对音频文件进行播放、暂停和停止操作。然 后修改 MainActivity 中的代码,如下所示:

     

    public class MainActivity extends Activity implements OnClickListener {

     

    private Button play;

     

    private Button pause;

     

    private Button stop;

     

     

    private MediaPlayer mediaPlayer = new MediaPlayer();

     

     

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    play = (Button) findViewById(R.id.play);

    pause = (Button) findViewById(R.id.pause);

    stop = (Button) findViewById(R.id.stop); play.setOnClickListener(this); pause.setOnClickListener(this); stop.setOnClickListener(this);

    initMediaPlayer(); // 初始化MediaPlayer

    }

     

     

    private void initMediaPlayer() {

    try {

    File file = new File(Environment.getExternalStorageDirectory(), "music.mp3");

    mediaPlayer.setDataSource(file.getPath()); // 指定音频文件的路径

    mediaPlayer.prepare(); // MediaPlayer进入到准备状态

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

     

    @Override

    public void onClick(View v) {

    switch (v.getId()) {

    case R.id.play:

    if (!mediaPlayer.isPlaying()) {

    mediaPlayer.start(); // 开始播放

    }

    break;

    case R.id.pause:

    if (mediaPlayer.isPlaying()) {

    mediaPlayer.pause(); // 暂停播放

    }

    break;

    case R.id.stop:

    if (mediaPlayer.isPlaying()) {

    mediaPlayer.reset(); // 停止播放

    initMediaPlayer();

    }

    break;

    default:

    break;

    }

    }

     

    @Override

    protected void onDestroy() {

    super.onDestroy();

    if (mediaPlayer != null) {

    mediaPlayer.stop();

    mediaPlayer.release();

    }

    }

     

    }

    可以看到,在类初始化的时候我们就创建了一个 MediaPlayer 的实例,然后在 onCreate() 方法中调用了 initMediaPlayer()方法为 MediaPlayer 对象进行初始化操作。在 initMediaPlayer() 方法中,首先是通过创建一个 File 对象来指定音频文件的路径,从这里可以看出,我们需要 事 先 在 SD 卡 的 根 目 录 下 放 置 一 个 名 为 music.mp3 的 音 频 文 件 。 后 面 依 次 调 用 了 setDataSource()方法和 prepare()方法为 MediaPlayer 做好了播放前的准备。

    接下来我们看一下各个按钮的点击事件中的代码。当点击 Play 按钮时会进行判断,如 果当前 MediaPlayer 没有正在播放音频,则调用 start()方法开始播放。当点击 Pause 按钮时会 判断,如果当前 MediaPlayer 正在播放音频,则调用 pause()方法暂停播放。当点击 Stop 按钮 时会判断,如果当前 MediaPlayer 正在播放音频,则调用 reset()方法将 MediaPlayer 重置为刚 刚创建的状态,然后重新调用一遍 initMediaPlayer()方法。

    最后在 onDestroy()方法中,我们还需要分别调用 stop()和 release()方法,将与 MediaPlayer相关的资源释放掉。 这样一个简易版的音乐播放器就完成了,现在将程序运行到手机上,界面如图 8.19 所示。

    图   8.19

     

    点击一下 Play 按钮就可以听到优美的音乐了,然后点击 Pause 按钮声音会停住,再次点 击 Play 按钮会接着暂停之前的位置继续播放。这时如果点击一下 Stop 按钮声音也会停住, 但是再次点击 Play 按钮时,音乐就会重头开始播放了。

    展开全文
  • iOS音频视频开发

    2019-04-23 22:10:44
    数字音频概念介绍 将模拟信号数字化,需要三个步骤: 采样:在时间轴上信号进行数字化。...音频裸数据格式——脉冲编码调制数据PCM,描述一段PCM数据一般需要以下几个概念: 量化格式:如在CD,为1...
  • 这是关于安卓音视频一个系列文章,大家可以从这里随意跳跃: ...音频文件将会重点描述音频的格式及编码;音频录制将介绍安卓所有可以录制音频API;音频播放将介绍如何对音频文件进行播放。 1.音频文
  • 这些特征是从以WAV格式存储的音频文件提取,还考虑了直接从MPEG音频文件提取特征可能用途。基于这些特征统计方法被用来分割和分类音频信号。使用分类方法包括一般混合模型(GMM)和k-最近邻(k-NN)算法...
  • 按功能分类基础格式表单图像音频/视频链接列表表格样式/节元信息编程 基础 标签 示例 描述 <!DOCTYPE> 用于定义文档类型,必须写在第一行! <html> 告知浏览器其自身是一个 HTML 文档,可在...
  • 首先我们要知道是,每个音频文件有两部分:1是文件格式(也叫音频容器),2是数据格式(也叫音频编码)。 文件格式(或者是音频容器)描述了这个文件它自己的格式。它里面实际音频数据能使用很多不同方式...
  • 在Android 播放音频文件一般都是使用MediaPlayer类来实现的,它多种格式的音频文件提供了非常全面的控制方法,从而使得播放音乐的工作变得十分简单。下表列出了  MediaPlayer类一些较为常用的控制方法。  ...
  • ADPCM_DVI4音频解码

    千次阅读 2018-09-05 19:34:08
    项目要用到ADPCM_DVI4音频格式,需要DVI4做编解码,在windows环境海思提供了库,可以直接调用,近期需要移植到linux,海思没有提供相关库,只能自己想办法了。找了很多资料,终于在RFC3551找到DVI4的描述,见...
  • 如果您遇到ALSA音频问题,那么最好的办法是在下面的链接下载alsa-info脚本并运行它(它将提供将输出上传到alsa-project.org)并注册到alsa-user邮件列表,其中包含关于您的问题的描述以及错误消息,以及指向上载...
  • JAVA_API1.6文档(中文)

    万次下载 热门讨论 2010-04-12 13:31:34
    javax.sound.sampled.spi 在提供新音频设备、声音文件 reader 和 writer,或音频格式转换器时,提供将为其创建子类服务提供者抽象类。 javax.sql 为通过 JavaTM 编程语言进行服务器端数据源访问和处理提供 API...
  • http协议中的Content-Type

    2013-11-22 19:20:00
    今天http协议中的Content... 比如,我只传一个表单数据,但这个表单只有文本,没有其它的音频、视频、图片、文件,可以用Content-Type描述为:Content-Type=application/x-www-form-urlencoded , 如果表单含...
  • 这些信令数据包括播放的控制(播放,暂停,停止),或者网络状态的描述等。解协议的过程会去除掉信令数据而只保留视音频数据。例如,采用 RTMP 协议传输的数据,经过解协议操作后,输出 FLV 格式的数据。 解...
  • 视频播放器基本原理 ...这些信令数据包括播放的控制(播放,暂停,停止),或者网络状态的描述等。解协议的过程会去除掉信令数据而只保留视音频数据。例如,采用 RTMP 协议传输的数据,...
  • Java 1.6 API 中文 New

    2013-10-26 14:08:22
    javax.sound.sampled.spi 在提供新音频设备、声音文件 reader 和 writer,或音频格式转换器时,提供将为其创建子类服务提供者抽象类。 javax.sql 为通过 JavaTM 编程语言进行服务器端数据源访问和处理提供 API。...
  • RFC中文文档-txt

    2009-09-11 14:56:56
    RFC2198 多余音频数据RTP有效载荷 RFC2208 资源预留协议(RSVP)——版本1 适用性声明 关于配置一些指导 RFC2212 有保证质量服务说明书 RFC2217 TelnetCom端口控制选项 RFC2221 IMAP4 登陆参考 RFC2228 FTP 安全...
  • 基于 ExoPlayer 支持多种普通音频格式并支持多种流式音频格式(DASH, SmoothStreaming, HLS,rtmp,flac)。 支持边播边存功能,没网也能播。支持自定义缓存实现。 通知栏,缓存,播放器等都支持自定义实现,高度...
  • 数据库介绍

    2018-09-27 20:08:00
    数据库基本概念1)数据:现实生活事物描述的符号。2)数据表现形式:文本,图形,音频,视频。3)数据库(Database, DB):存放数据仓库 存放在计算机,按照一定格式存放 可为用户共享。4)数据库管理系统...
  • JavaAPI中文chm文档 part2

    2011-08-19 08:58:42
    javax.sound.sampled.spi 在提供新音频设备、声音文件 reader 和 writer,或音频格式转换器时,提供将为其创建子类服务提供者抽象类。 javax.sql 为通过 JavaTM 编程语言进行服务器端数据源访问和处理提供 API...
  • JavaAPI1.6中文chm文档 part1

    热门讨论 2011-08-19 08:33:34
    javax.sound.sampled.spi 在提供新音频设备、声音文件 reader 和 writer,或音频格式转换器时,提供将为其创建子类服务提供者抽象类。 javax.sql 为通过 JavaTM 编程语言进行服务器端数据源访问和处理提供 API...
  • 像上一篇文章那样,我们只能创建一封封只包含纯文本或者HTML格式的文本邮件...想要在邮件包含图片、音频、视频等其他格式的文件,就不能再简单地使用 RFC 文档来邮件结构、内容进行描述了,因为 RFC 只能描述普...
  • 11、以下视频设备的描述中,不正确的是______。A.视频采集卡用于采集视频数据B.音频卡用于摄像头或者摄像机等信号进行捕捉﹑并以MPEG格式存储在硬盘上C.电视卡用于在PC机上看电视D.视频压缩卡用于压缩视频信息...
  • 像上一篇文章那样,我们只能创建一...想要在邮件包含图片、音频、视频等其他格式的文件,就不能再简单地使用 RFC 文档来邮件结构、内容进行描述了,因为 RFC 只能描述普通的文本,而且一旦遇到单独一行的句号“.”

空空如也

空空如也

1 2 3 4 5
收藏数 100
精华内容 40
关键字:

对音频格式的描述中