精华内容
下载资源
问答
  • AMR音频文件格式分析

    2017-06-24 19:57:00
    AMR音频文件格式分析1 概述 如今非常多智能手机都支持多媒体功能,特别是音频和视频播放功能,而AMR文件格式是手机端普遍支持的音频文件格式.AMR,全称是:Adaptive Multi-Rate,自适应多速率,是一种音频编码文件格式,专...

    AMR音频文件格式分析

    1 概述

    如今非常多智能手机都支持多媒体功能,特别是音频和视频播放功能,而AMR文件格式是手机端普遍支持的音频文件格式.AMR,全称是:Adaptive Multi-Rate,自适应多速率,是一种音频编码文件格式,专用于有效地压缩语音频率.
    AMR音频主要用于移动设备的音频压缩,压缩比非常高,可是音质比較差,主要用于语音类的音频压缩,不适合对音质要求较高的音乐类音频的压缩.

    2 AMR编码方式

    AMR 一共同拥有16种编码方式. 0-7相应8种不同的编码方式,每种编码方式的採样频率不同; 8-15 用于噪音或者保留用.


    说明:

    • 比特率是指将数字声音由模拟格式转化成数字格式的採样率,採样率越高,还原后的音质就越好.
    • 比特率值与现实音频对比:
      • 16kbps=电话音质
      • 24kbps=添加电话音质,短波广播,长波广播,欧洲制式中波广播
      • 40kbps=美国制式中波广播
      • 56kbps=话音
      • 64kbps=添加话音(手机铃声最佳比特率设定值,手机单声道MP3播放器最佳设定值)
      • 112kbps=FM调频立体声广播
      • 128kbps=磁带(手机立体声MP3播放器最佳设定值,低档MP3播放器最佳设定值)
      • 160kbps=HIFI高保真(中高档MP3播放器最佳设定值)
      • 192kbps=CD(高档MP3播放器最佳设定值)
      • 256kbps=Studio音乐工作室(音乐发烧友适用)
    • 音频数据帧大小的计算:amr 一帧相应20ms,那么一秒有50帧的音频数据.由于比特率不同,每帧的数据大小也不同.假设比特率是12.2kbs.那么每秒採样的音频数据位数为:12200 / 50 = 244bit = 30.5byte,取整为31字节.取整要四舍五入,再加上一个字节的帧头,这样数据帧的大小为32字节.

    3 AMR文件结构示范图

    以下我们来看一个实际的AMR文件(http://download.csdn.net/detail/ce123/6701049):

    从图中能够看出,全部AMR文件头标志是6个字节(最后一个字节是换行符"/n").帧头为0x2C,后面就紧跟的是音频帧.这个文件是每帧21字节.

    4 AMR帧头格式分析

    AMR语音帧格式为帧头和语音数据组成.

    AMR语音帧头占1个字节,例如以下图所看到的:

    当中:
    P = 0;
    FT:Frame Type,相应不同编码模式.(參见“2 AMR编码方式”中表格中的说明)
    Q:帧质量指示器,0表示为坏帧.
    后面的P补0.

    5 AMR帧读取算法

    由于可能存在异常帧,所以不一定全部的语音帧大小一致,对于跟正常帧大小不一致的,或者帧头跟正常帧头不一致的,就不交给解码器,直接抛弃该坏帧.以下是算法描写叙述流程图.

    posted on 2017-06-24 19:57 mthoutai 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/mthoutai/p/7074308.html

    展开全文
  • 多媒体容器文件格式

    2018-11-26 00:23:12
    容器文件格式主要包括文件头部分,索引部分以及多媒体数据部分。 文件头部分主要说明了多媒体数据符合的的压缩标准及规范信息,包括视频的分辨率,帧率以及音频的采样率等 由于多媒体数据通常会被分成若干块, 各...

    容器文件格式主要包括文件头部分,索引部分以及多媒体数据部分。

    文件头部分主要说明了多媒体数据符合的的压缩标准及规范信息,包括视频的分辨率,帧率以及音频的采样率等

    由于多媒体数据通常会被分成若干块, 各块数据之间也可能是不连续存储的, 因此需要再索引部分建立多 媒体数据的存储位置索引,其详细显示了视频数据存储位置索引,用来记录相应数据块的存储位置 的偏移量,由于各数据块的大小可能不同,因此也可能需要在索引部分建立各种多媒体数据块的尺寸大小索引,用 来记录相应数据块的尺寸大小。此外在索引部分还建立了其他索引,比如音视频同步索引等等。 PC 上播放这些多 媒体容器文件时,一般是将索引一次性的全部放到内存中,然后在播放中根据操作(快进、快退等)来通过数据索 引得到所需的数据。这个貌似和项目里面的视频信息文件的作用类似

    多媒体数据部分就是经过压缩的多媒体数据,包括视频数据、音频数据、文本数据及其他多媒体数据。

    MP4的视频格式:https://www.cnblogs.com/tocy/p/media_container_3_mp4.html

    TS的视频格式:https://www.cnblogs.com/tocy/p/media_container_6-mpegts.html

    FLV视频格式:https://blog.csdn.net/mm792261167/article/details/69396493
                               https://blog.csdn.net/weed_hz/article/details/10232407
                            https://blog.csdn.net/leixiaohua1020/article/details/17934487

    展开全文
  • RIFF全称为资源互换文件格式(Resources Interchange File Format),是Windows下大部分多媒体文件遵循的一种文件结构。RIFF文件所包含的数据类型由该文件的扩展名来标识,能以RIFF格式存储的数据有: 音频视频交错...

    RIFF file format

    RIFF全称为资源互换文件格式(Resources Interchange File Format),是Windows下大部分多媒体文件遵循的一种文件结构。RIFF文件所包含的数据类型由该文件的扩展名来标识,能以RIFF格式存储的数据有:

    • 音频视频交错格式数据 .AVI
    • 波形格式数据 .WAV
    • 位图数据格式 .RDI
    • MIDI格式数据 .RMI
    • 调色板格式 .PAL
    • 多媒体电影 .RMN
    • 动画光标 .ANI
    • 其他的RIFF文件 .BND

    CHUNK

    chunk是RIFF文件的基本单元,其基本结构如下:

    struct chunk
    {
        uint32_t id;   // 块标志
        uint32_t size; // 块大小
        uint8_t data[size]; // 块数据
    };
    • id 4字节,用以标识块中所包含的数据。如:RIFF,LIST,fmt,data,WAV,AVI等,由于这种文件结构 最初是由Microsoft和IBM为PC机所定义,RIFF文件是按照小端 little-endian字节顺序写入的。
    • size 块大小 存储在data域中的数据长度,不包含id和size的大小
    • data 包含数据,数据以字为单位存放,如果数据长度为奇数(字节为单位),则最后添加一个空字节。

    chunk是可以嵌套的,但是只有块标志为RIFF或者LIST的chunk才能包含其他的chunk。

    RIFF chunk

    标志为RIFF的chunk是比较特殊的,每一个RIFF文件首先存放的必须是一个RIFF chunk,并且只能有这一个标志为RIFF的chunk。RIFF的数据域的起始位置是一个4字节码(FOURCC),用于标识其数据域中chunk的数据类型;紧接着数据域的内容则是包含的subchunk,如下图

    这是一个RIFF chunk中包含有两个subchunk,可以看出RIFF chunk的数据域首先是是4字节的 Form Type,接着是两个subchunk,每一个subchun有包含有自己的标识、数据域的大小以及数据域。
    除了RIFF cunk可以嵌套其他的chunk外,另一个可以有subchunk的就是LIST chunk

    上图中,首先是RIFF文件必须的RIFF chunk,其数据域又包含有两个subchunk,其中一个subchunk的类型为LIST,该LIST chunk又包含了两个subchunk。

    FourCC

    FourCC 全称为Four-Character Codes,是一个4字节32位的标识符,通常用来标识文件的数据格式。例如,在音视频播放器中,可以通过 文件的FourCC来决定调用那种CODEC进行视音频的解码。例如:DIV3,DIV4,DIVX,H264等,对于音频则有:WAV,MP3等。对于上面的RIFF文件,则有:RIFF,WAVE,fmt,data等。FourCC是4个ASCII字符,不足四个字符的则在最后补充空格(不是空字符)。比如,FourCC fmt,实际上是'f' 'm' 't' ' '。
    FourCC的生成通常可以使用如下宏:

    #define MAKE_FOURCC(a,b,c,d) \
    ( ((uint32_t)d) | ( ((uint32_t)c) << 8 ) | ( ((uint32_t)b) << 16 ) | ( ((uint32_t)a) << 24 ) )

    在程序 中还是不要使用太长的宏为好,在C++中可以使用模板和enum结合的方式。来保证在编译时期就能够将FourCC生成出来。

    #define FOURCC uint32_t 
    template <char ch0, char ch1, char ch2, char ch3> struct MakeFOURCC{ enum { value = (ch0 << 0) + (ch1 << 8) + (ch2 << 16) + (ch3 << 24) }; };
    FOURCC fourcc_fmt = MakeFOURCC<'f', 'm', 't', ' '>::value;

    将字符常量传入模板,在结构体中声明一个enum,编译器会在编译时期确定枚举值,这样就能给保证FOURCC在编译就能生成出来。

    WAV file

    WAV 是Microsoft开发的一种音频文件格式,它符合上面提到的RIFF文件格式标准,可以看作是RIFF文件的一个具体实例。既然WAV符合RIFF规范,其基本的组成单元也是chunk。一个WAV文件通常有三个chunk以及一个可选chunk,其在文件中的排列方式依次是:RIFF chunk,Format chunk,Fact chunk(附加块,可选),Data chunk。

    一个WAV文件,首先是一个RIFF chunk;RIFF chunk又包含有Format chunk,Data chunk以及可选的Fact chunk。各个chunk中字段的意义如下:

    • RIFF chunk
      • id
        FOURCC 值为'R' 'I' 'F' 'F'
      • size
        其data字段中数据的大小 字节数
      • data
        包含其他的chunk
    • Format chunk
      • id
        FOURCC 值为 'f' 'm' 't' ' '
      • size
        数据字段包含数据的大小。如无扩展块,则值为16;有扩展块,则值为= 16 + 2字节扩展块长度 + 扩展块长度或者值为18(只有扩展块的长度为2字节,值为0)
      • data
        存放音频格式、声道数、采样率等信息
        • format_tag
          2字节,表示音频数据的格式。如值为1,表示使用PCM格式。
        • channels
          2字节,声道数。值为1则为单声道,为2则是双声道。
        • samples_per_sec
          采样率,主要有22.05KHz,44.1kHz和48KHz。
        • bytes_per sec
          音频的码率,每秒播放的字节数。samples_per_sec * channels * bits_per_sample / 8,可以估算出使用缓冲区的大小
        • block_align
          数据块对齐单位,一次采样的大小,值为声道数 * 量化位数 / 8,在播放时需要一次处理多个该值大小的字节数据。
        • bits_per_sample
          音频sample的量化位数,有16位,24位和32位等。
        • cbSize
          扩展区的长度
        • 扩展块内容
          22字节,具体介绍,后面补充。
    • Fact chunk(option)
      • id
        FOURCC 值为 'f' 'a' 'c' 't'
      • size
        数据域的长度,4(最小值为4)
      • 采样总数 4字节
    • Data chunk
      • id
        FOURCC 值为'd' 'a' 't' 'a'
      • size
        数据域的长度
      • data
        具体的音频数据存放在这里

    采用压缩编码的WAV文件,必须要有Fact chunk,该块中只有一个数据,为每个声道的采样总数。

    Format chunk 中的编码方式

    在Format chunk中,除了有音频的数据的采样率、声道等音频的属性外,另一个比较主要的字段就是format_tag,该字段表示音频数据是以何种方式编码存放的。其具体的取值可以为以下:

    • 0x0001
      WAVE_FORMAT_PCM,采用PCM格式
    • 0x0003
      WAVE_FORMAT_IEEE_FLOAT,存放的值为IEEE float,范围为[-1.0f,1.0f]
    • 0x0006
      WAVE_FORMAT_ALAW , 8bit ITU-T G.711 A-law
    • 0x0007
      WAVE_FORMAT_MULAW,8bit ITU-T G.711 μμ-law
    • 0XFFFE
      WAVE_FORMAT_EXTENSIBLE,具体的编码方式有扩展区的 sub_format字段决定

    关于扩展格式块

    当WAV文件使用的不是PCM编码方式是,就需要扩展格式块,它是在基本的Format chunk又添加一段数据。该数据的前两个字节,表示的扩展块的长度。紧接其后的是扩展的数据区,含有扩展的格式信息,其具体的长度取决于压缩编码的类型。当某种编码方式(如 ITU G.711 a-law)使扩展区的长度为0,扩展区的长度字段还必须保留,只是其值设置为0。
    扩展区的各个字节的含义如下:

    • size 2字节
      扩展区的数据长度 ,可以为0或22
    • valid_bits_per_sample 2字节
      有效的采样位数,最大值为采样字节数 * 8。可以使用更灵活的量化位数,通常音频sample的量化位数为8的倍数,但是使用了WAVE_FORMAT_EXTENSIBLE时,量化的位数有扩展区中的valid bits per sample来描述,可以小于Format chunk中制定的bits per sample
    • channle mask 4字节
      声道掩码
    • sub format 16字节
      GUID,include the data format code,数据格式码。

    在Format chunk中的format_tag设置为0xFFFE时,表示使用扩展区中的sub_format来决定音频的数据的编码方式。在以下几种情况下必须要使用WAVE_FORMAT_EXTENSIBLE

    • PCM数据的量化位数大于16
    • 音频的采样声道大于2
    • 实际的量化位数不是8的倍数
    • 存储顺序和播放顺序不一致,需要指定从声道顺序到声卡播放顺序的映射情况。

    Data chunk

    Data块中存放的是音频的采样数据。每个sample按照采样的时间顺序写入,对于使用多个字节的sample,使用小端模式存放(低位字节存放在低地址,高位字节存放在高地址)。对于多声道的sample采用交叉存放的方式。例如:立体双声道的sample存储顺序为:声道1的第一个sample,声道2的第一个sample;声道1的第二个sample,声道2的第二个sample;依次类推....。对于PCM数据,有以下两种的存储方式:

    • 单声道,量化位数为8,使用偏移二进制码
    • 除上面之外的,使用补码方式存储。

    总结

    本文主要介绍了RIFF文件的格式和WAV音频文件格式,为后面实现对WAVE文件的读写打一个理论基础。后面打算使用C++标准库,实现对WAV文件的读写。

     

    转自:https://www.cnblogs.com/wangguchangqing/p/5957531.html#autoid-0-0-0

    展开全文
  • 音频文件格式

    2010-08-09 11:39:00
    经典的WAVE  WAVE文件作为最经典的Windows多媒体音频格式,应用非常广泛,它使用三个参数来表示声音:采样位数、采样频率和声道数。 声道有单声道和立体声之分,采样频率一般有11025Hz(11kHz)、...
    展开全文
  • RIFF全称为资源互换文件格式(Resources Interchange File Format),是Windows下大部分多媒体文件遵循的一种文件结构。RIFF文件所包含的数据类型由该文件的扩展名来标识,能以RIFF格式存储的数据有(包含有:): ...
  • 常见的音视频文件格式(容器): MPG:MPEG编码采用的容器,具有流的特性。里面又分为 PS,TS 等,PS 主要用于 DVD 存储,TS 主要用于 HDTV。 VOB:DVD采用的容器格式,支持多视频多音轨多字幕章节等。 MP4:MPEG
  • 多媒体文件格式总览

    2019-03-03 23:19:40
    目录 0 前言 1 数字封装格式 Digital container format ...2.1 音频文件格式 Audio file format 2.2 图像文件格式 Image file format 2.3 视频文件格式 Video file format 3 重要的视频文件格式 3.1 QuickTi...
  • 一、综述 WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个字节便是“RIFF”。 WAVE文件是由若干个Chunk组成的。...
  • 多媒体文件封装格式

    千次阅读 2017-03-17 15:19:20
    多媒体文件封装格式[top] 常见的封装格式有:TS、AVI、MKV、TP、MOV、M2T等等,它们与编码类型没有必然联系。不同的封装方式就好比是不同的盒子,高清视频要用它装起来才能呈现给观众。AVI AVI即音频视频交叉存取...
  • 【Audio】WAV音频文件格式结构解析

    千次阅读 2019-07-05 11:14:33
    网上找的一些资料,和自己的调试经验,总结~ ...WAV WAV文件是在PC机平台上很常见的、最经典的多媒体音频文件,最早于1991年8月出现在Windows 3.1操作系统上,文件扩展名为W...
  • 抽取音频文件 注册log与编解码器 av_log_set_level(AV_LOG_INFO); av_register_all(); 打开多媒体文件 打开多媒体文件,并读取头部信息 /** * Open an input stream and read the header. The codecs are not ...
  • 多媒体文件格式分析

    2014-12-15 15:55:42
    参考自: http://blog.csdn.net/taniya001/article/details/7962864 mp3   MP3文件结构及编解码流程 aac ...AMR音频编码器概述及文件格式分析 AMR音频编解码 awb AMR-N

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,716
精华内容 686
关键字:

多媒体音频文件格式