精华内容
下载资源
问答
  • 对音频格式的描述中
    2021-05-16 12:26:30

    1. 音频简介

    前面我们说过视频有一个每秒钟采集多少张的概念,这就叫做视频的帧率。

    和视频的帧率一样的道理,声音也有一个频率,叫做采样率。

    人对频率的识别范围是 20HZ - 20000HZ, 如果每秒钟能对声音做 20000 个采样, 回放时就足可以满足人耳的需求. 所以 22050 的采样频率是常用的, 44100已是CD音质, 超过48000的采样对人耳已经没有意义。这和电影的每秒 24 帧图片的道理差不多。

    关于音频经常见到这样的描述:44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等.

    44100HZ 16bit stereo: 表示每秒钟有 44100 次采样, 采样数据用 16 位(2字节)记录, 双声道(立体声);

    22050HZ 8bit mono: 表示每秒钟有 22050 次采样, 采样数据用 8 位(1字节)记录, 单声道;

    当然也可以有 16bit 的单声道或 8bit 的立体声, 等等。

    上面的44100HZ代表的就是采样率:

    所谓采样率是指:声音信号在“模→数”转换过程中单位时间内采样的次数。采样值是指每一次采样周期内声音模拟信号的积分值。

    对于单声道声音文件,采样数据为八位的短整数(short int 00H-FFH);

    而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位(左声道)和低八位(右声道)分别代表两个声道。

    每个采样数据记录的是振幅, 采样精度取决于储存空间的大小:

    1 字节(也就是8bit) 只能记录 256 个数, 也就是只能将振幅划分成 256 个等级;

    2 字节(也就是16bit) 可以细到 65536 个数, 这已是 CD 标准了;

    4 字节(也就是32bit) 能把振幅细分到 4294967296 个等级, 实在是没必要了.

    如果是双声道(stereo), 采样就是双份的, 文件也差不多要大一倍.

    这样我们就可以根据一个 wav 文件的大小、采样频率和采样大小估算出一个 wav 文件的播放长度。

    譬如 “Windows XP 启动.wav” 的文件长度是 424,644 字节, 它是 “22050HZ / 16bit / 立体声” 格式(这可以从其 “属性->摘要” 里看到),

    那么它的每秒的传输速率(位速, 也叫比特率、取样率)是 22050162 = 705600(bit/s), 换算成字节单位就是 705600/8 = 88200(字节/秒),
    播放时间:424644(总字节数) / 88200(每秒字节数) ≈ 4.8145578(秒)。

    但是这还不够精确, 包装标准的 PCM 格式的 WAVE 文件(.wav)中至少带有 42 个字节的头信息, 在计算播放时间时应该将其去掉,
    所以就有:(424644-42) / (22050
    16*2/8) ≈ 4.8140816(秒). 这样就比较精确了.

    关于声音文件还有一个概念: “位速”, 也有叫做比特率、取样率, 譬如上面文件的位速是 705.6kbps 或 705600bps, 其中的 b 是 bit, ps 是每秒的意思;

    压缩的音频文件常常用位速来表示, 譬如达到 CD 音质的 MP3 是: 128kbps / 44100HZ.

    2. PCM数据格式

    PCM(Pulse Code Modulation)也被称为 脉码编码调制。PCM中的声音数据没有被压缩,如果是单声道的文件,采样数据按时间的先后顺序依次存入。(它的基本组织单位是BYTE(8bit)或WORD(16bit))。

    一般情况下,一帧PCM是由2048次采样组成的,如果是双声道的文件,采样数据按时间先后顺序交叉地存入。如图所示:
    在这里插入图片描述

    更多相关内容
  • 本文主要介绍了Python编程,用sndhdr模块识别音频格式的相关内容,具体如下。 sndhdr模块 功能描述:sndhdr模块提供检测音频类型的接口。 唯一一个API sndhdr模块提供了sndhdr.what(filename)和sndhdr.whathdr...
  • Matlab音频格式转换

    千次阅读 2020-05-07 10:46:28
    所需前置知识 读音频 audioread 语法:   [y,Fs] = audioread(filename);   从名为 filename 的文件读取数据,并返回样本...   读取文件所选范围的音频样本,其中 samples 是 [start,finish] 格式的向量。 ...

    所需前置知识
    读音频 audioread
    语法:
      [y,Fs] = audioread(filename);   从名为 filename 的文件中读取数据,并返回样本数据 y 以及该数据的采样率 Fs。
      
      [y,Fs] = audioread(filename,samples);   读取文件中所选范围的音频样本,其中 samples 是 [start,finish] 格式的向量。
      
      [y,Fs] = audioread(___,dataType) ;   返回数据范围内与 dataType(‘native’ 或 ‘double’)对应的采样数据,可以包含先前语法中的任何输入参数。
    写音频audiowrite
    语法:
      audiowrite(filename,y,Fs);  以采样率 Fs 将音频数据矩阵 y 写入名为 filename 的文件。filename 输入还指定了输出文件格式。输出数据类型取决于音频数据 y 的输出文件格式和数据类型。
      
      audiowrite(filename,y,Fs,Name,Value) ;  使用一个或多个 Name,Value 对组参数指定的其他选项。
    FFT 离散傅立叶变换的快速算法:此处 FFT 只用作绘制频谱图像进行分析,并不对音频格式转换有直接的影响:
      N个采样点,经过FFT之后,就可以得到N个点的FFT结果。为了方便进行FFT运算,通常N取2的整数次方,但是这里直接取读取出来的样本数作为N。

    FFT 计算公式如下:
    

    在这里插入图片描述

    Xk 长度与 N 相同。
    根据奈科斯特定律,只有 f=fs/2 范围内的信号才是被采样到的有效信号,因此得到的频谱肯定是关于 N/2 对称的(就是只看前一半的波形就好)。
    第k点的实际频率的计算为 f(k) = k * (fs / n) — — (横轴的频率范围为 :f = n * fs / N;)
    X[0] 为直流分量 ,幅值 = 模值(X[0]) / N
    X[k] 为个点的频率分量(除X[0]外),幅值 = 模值(X[k]) / (N / 2)
    

    1 参数定义

    能够修改的参数,放在这个部分来定义。
    
    代码片段:
    
    	%%  参数定义  %%%%%%%%%%%
        % 音频文件参数
        % source_FS = 16000; %原采样率(该值弃用,从文件读取)
        dest_FS = 8000; %目标采样率
        bps = 16;       %位深 (查看帮助文档可以获取支持的 bps)
        Tfile = 0;      %声音片段的总时长s (0为不修改)
    
        % 音频通道
        stereo = 'mono';            % 输出音频通道 'mono':单声道,'stereo':立体声
        audio_ch = 'left';          % 立体声输入,单声道输出时,选用哪一通道? 'left''right''both'
        Left_channel_ratio = 0.5;   % 左声道占比
    
        % 文件
        inputfile = ('connected_CN.mp3');   % 输入文件名
        outputfile = [inputfile,'.wav'];    % 输出文件名
        AudioInfo = audioinfo(inputfile)    % 打印输入音频文件的信息(不加分号)
    
        %播放设置
        isplay = 1; % 0:播放原音频 1:播放生成音频
    

    2 原始音频文件读取

    读入原始音频,记得修改对应的文件名,带后缀。如果选择播放原音频,那么读取完源文件后,会从电脑喇叭播放声音。
    
    代码片段:
    
     %%  原始音频文件读取  %%%%%%%%%%%
        [y_input,source_FS]=audioread(inputfile);         % 将 WAV 文件转换成变量
        fs_str = ['(Fs:',num2str(source_FS/1000),'KHz)']; % fs 的字符串,在图上显示文件 fs
        whos y_input                                      % 打印y的信息
        if isplay == 0                                    % 如果选择播放原音频
            if source_FS < 192000                         %     电脑小于 192K 采样率才能播放
                sound(y_input,source_FS)                  %     调用可以播放声音的函数 sound()
            end
        end
    

    3 打印输入波形图像

    这一步将 audioread 读取出来的原音频数据,通过图像展示出来,原音频文件解码后,会得到一个列表,根据源文件的通道数n来区分,常用的通道是双通道,即2声道立体声,还有有其他的如:2.1声道、4声道、5.1声道、7.1声道等,对应的n会不同,此处我只对2声道的立体声做处理,有需要其他声道的,可以在此基础上,增加不同 n 值处理的方法。
    
    代码片段
    
     %%  打印输入波形图像  %%%%%%%%%%%
        figure('Name','输入文件波形','NumberTitle','off');
        [m,n] = size(y_input);                  % 计算文件的长度与声道数量
        if n==1                                 % 单声道
            y1 = y_input(:,1);                  % 提取声道数据
            subplot(2,1,1);             
            plot(y1);                           % 描绘左声道图像
            title(['单声道原始波形 ',fs_str]);
            legend(fs_str);                     % 显示图例
            
            subplot(2,1,2);
            Y_fft = fft(y1,4096);               % 计算 FFT
            plot(abs(Y_fft));                   % 描绘 FFT 图像
            title('单声道原始波形频谱')
    
        else                                    % 立体声                          
            y1 = y_input(:,1);                  % 提取左声道数据
            y2 = y_input(:,2);                  % 提取右声道数据
            
            subplot(2,2,1);                     
            plot(y1);                           % 描绘左声道图像
            title(['左声道原始波形 ',fs_str]);
            legend(fs_str);                     % 显示图例
            
            subplot(2,2,2);
            plot(y2);                           % 描绘右声道图像
            title(['右声道原始波形 ',fs_str]);
            legend(fs_str);                     % 显示图例
            
            subplot(2,2,3); 
            Y_fft1 = fft(y1,4096);              % 左声道 FFT 计算
            plot(abs(Y_fft1));                  % 描绘左声道 FFT 图像
            title('左声道原始波形频谱')
            
            subplot(2,2,4);   
            Y_fft2 = fft(y2,4096);              % 右声道 FFT 计算               
            plot(abs(Y_fft2));                  % 描绘右声道 FFT 图像
            title('右声道原始波形频谱')
        end    
    

    4 输出参数设置

    这一个步骤是根据 2.1 设置的参数来去对读取出来的声道列表进行计算,可以根据需求来这里增加对音频序列的操作,但是本文的目标是转码,不做音频处理,因此,此处不对音频数据进行过多的处理。
    

    代码片段:

    %% 输出参数设置  %%%%%%%%%%%
    if strcmp(stereo,'mono')                % 输出选项为单声道
        if n == 1                           % 如果输入文件是单声道文件
            y_ratio = y1;                   % 那么输出文件的数据与输入文件的数据一致
        else                                % 如果输入是立体声文件
            if strcmp(audio_ch,'left')      %     输出通道选择 左声道
                y_ratio = y1;               %     将左声道的数据作为输出数据
            elseif strcmp(audio_ch,'right') %     输出通道选择 右声道
                y_ratio = y2;               %     将右声道的数据作为输出数据
            else                            %     输出通道选择其他选项(both)
                y_ratio = y1*Left_channel_ratio + y2*(1-Left_channel_ratio); % 就将左声道数据与右声道数据,按照设定的比例来混合。
            end
        end
    else                                    % 如果输出选项为立体声
        if n == 1                           % 输入文件是单声道
            y_ratio(:,1) = y1;              % 那么左右声道都用输入的数据
            y_ratio(:,2) = y1;
        else                                % 输入文件是立体声
            y_ratio = y_input;              % 那么输出文件的数据与输入文件的数据一致
        end
    end
    

    5 生成输出音频并转码

    这一步是本文的关键步骤,转码的核心就是调用 audiowrite() ,也是需要去学习使用的函数。
    代码片段:
    
     %% 生成输出音频并转码  %%%%%%%%%%%
        y_out = resample(y_ratio,dest_FS,source_FS);              % 对即将输出的数据,进行重采样到设定的采样率
        audiowrite(outputfile,y_out,dest_FS,'BitsPerSample',bps); % 将输出数据存储为音频文件。
    

    6 输出音频文件读取

    这一步将刚才生成的音频文件再重新读入进来,用于检查格式转换后的效果。如果选择播放生成音频,那么读取完源文件后,会从电脑喇叭播放声音。
    
    代码片段:
    
     %% 输出音频文件读取  %%%%%%%%%%%
        figure('Name','输出文件波形','NumberTitle','off');    % 打开第2个figure
        [y_output,dest_FS]=audioread(outputfile);            % 将上一步生成的文件读取出来保存为变量
        fs_str = ['(Fs:',num2str(dest_FS/1000),'KHz)'];      % 采样率字符串
    
        if isplay == 1                                       % 如果选择播放生成音频
            if dest_FS < 192000                              %     电脑小于 192K 采样率才能播放
                sound(y_output,dest_FS)                      %     调用可以播放声音的函数 sound()
            end
        end
    

    7 打印输出波形图像

    这一步将 audioread 读取出来的转码后的音频数据,通过图像展示出来,操作方式与原文件的读取并打印波形类似。
    
    代码片段:
    
     %%  打印输出波形图像 (跟打印输入波形图像类似,由于后续复用性较低,就不单独编写函数了)  %%%%%%%%%%%
        [m,n] = size(y_output);                    % 计算文件的长度与声道数量 
        if n==1                                    % 单声道
            y1 = y_output(:,1);                    % 提取声道数据
            subplot(2,1,1);
            plot(y1);                              % 描绘左声道图像
            title(['单声道生成波形 ',fs_str]);
            legend(fs_str);                        % 显示图例
            
            subplot(2,1,2);
            Y_fft = fft(y1,4096);                   % 计算 FFT
            plot(abs(Y_fft));                       % 描绘 FFT 图像
            title('单声道生成波形频谱');
    
        else                                        %立体声
            y1 = y_output(:,1);                     % 提取左声道数据
            y2 = y_output(:,2);                     % 提取右声道数据
            
            subplot(2,2,1);
            plot(y1);                               % 描绘左声道图像
            title(['左声道生成波形 ',fs_str]);
            legend(fs_str);                         % 显示图例
            
            subplot(2,2,2);
            plot(y2);                               % 描绘右声道图像
            title(['右声道生成波形 ',fs_str]);
            legend(fs_str);                         % 显示图例
            
            subplot(2,2,3);
            Y_fft1 = fft(y1,4096);                  % 左声道 FFT 计算
            plot(abs(Y_fft1));                      % 描绘左声道 FFT 图像
            title('左声道生成波形频谱')
            
            subplot(2,2,4);                         
            Y_fft2 = fft(y2,4096);                  % 右声道 FFT 计算
            plot(abs(Y_fft2));                      % 描绘右声道 FFT 图像
            title('右声道生成波形频谱')
        end    
    

    3、运行图片

    先准备两首歌,用于测试。分别将 .m4a 转成 .ogg,将 .flac 转成 .wav。
    3.1 例:.m4a 转 ogg
    在这里插入图片描述

    “萨克斯 - 莫斯科郊外的晚上 - 纯音乐.m4a” 转 .ogg,且将44.1KHz 采样率转为 48KHz采样率。
      由于上述代码中,是按照 wav 的格式来输出,audiowrite 中的 name-value 键值对对 ogg 无效,因此修改一下 audiowrite 函数的 name-value 键值对,按照帮助文档提供的设置,可以选择以下选项:
    在这里插入图片描述

    因此修改一下 audiowrite 为:

    audiowrite(outputfile,y_out,dest_FS,'Quality',100); % 将输出数据存储为音频文件。
    

    同时修改 inputfile 与 outputfile。
    运行程序后,生成下面文件
    在这里插入图片描述

    3.2 例:.flac转 wav

    按照老方法,修改一下 audiowrite 函数的 name-value 键值对,选用bps参数。
    在这里插入图片描述

    运行代码,
    同样也生成了“张国荣-沉默是金.flac.wav”文件,显示区间显示,有需要可以通过这个地方来设置在这里插入图片描述
    在这里插入图片描述

    完整代码

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %   功能:音频格式转换(任意格式互转)           % 
    %   作者:Mr-Ma Technology(马健维)             %
    %   时间:2020.04.09                           %
    %   转载请注明出处                             %
    %   https://blog.csdn.net/qq_29225913/article/details/105445028
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
    %% 支持的转换格式  %%%%%%%%%%%
    % |-----------------------------------------------------|
    % |            格式                     |  输入 |  输出  | 
    % |-----------------------------------------------------|
    % |WAVE (.wav)                          |  支持 |  支持  |
    % |OGG (.ogg)                           |  支持 |  支持  |
    % |FLAC (.flac)                         |  支持 |  支持  |
    % |AU (.au)                             |  支持 | 不支持 |
    % |AIFF(.aiff/.aif)                     |  支持 | 不支持 |
    % |AIFC (.aifc)                         |  支持 | 不支持 |
    % |MP3 (.mp3) (注意电脑版本)             |  支持 | 不支持 |
    % |MPEG-4 AAC(.m4a/.mp4)(注意电脑版本)   |  支持 |  支持  |
    % |-----------------------------------------------------|
    
    % 更多详细信息,请参考 Matlab 相关描述(通道数、比特率、位深)
    % audioread :https://ww2.mathworks.cn/help/matlab/ref/audioread.html
    % audiowrite :https://ww2.mathworks.cn/help/matlab/ref/audiowrite.html?ue&s_tid=gn_loc_dropp
    
    %% 清空内存里的变量  %%%%%%%%%%%
    clear; 
    close all; 
    clc;
    %%  参数定义  %%%%%%%%%%%
    % 音频文件参数
    % source_FS = 16000; %原采样率(该值弃用,从文件读取)
    dest_FS = 48000; % 目标采样率
    bps = 16;        % 位深 -audiowrite 参数(适用于输出 .wav/.flac 文件)
    qlt = 80;       % Quality -audiowrite 参数(适用于输出 .ogg 文件)
    br  = 0;         % BitRate -audiowrite 参数(适用于输出 .m4a/.mp4 文件) 
    % Tfile = 0;       % 声音片段的总时长s (0为不修改) 暂时没用这个参数
    
    % 音频通道
    stereo = 'stereo';            % 输出音频通道 'mono':单声道,'stereo':立体声
    audio_ch = 'left';          % 立体声输入,单声道输出时,选用哪一通道? 'left''right''both'
    Left_channel_ratio = 0.5;   % 左声道占比
    
    % 文件
    inputfile = ('张国荣-沉默是金.flac');   % 输入文件名
    outputfile = [inputfile,'.wav'];    % 输出文件名
    AudioInfo = audioinfo(inputfile)    % 打印输入音频文件的信息(不加分号)
    
    %播放设置
    isplay = 1; % 0:播放原音频 1:播放生成音频
    
    % 绘图
    isdraw = 1;                  % 1:打开绘图, 0:关闭绘图, 计算 FFT 需要消耗时间
    t_axis = [-1 1];             % 时域图显示区域(纵坐标),按实际来改
    f_axis = [0 20000 0 0.002];  % 频域图显示区域,按实际来改
    
    %%  原始音频文件读取  %%%%%%%%%%%
    [y_input,source_FS]=audioread(inputfile);         % 将 WAV 文件转换成变量
    fs_str = ['(Fs:',num2str(source_FS/1000),'KHz)']; % fs 的字符串,在图上显示文件 fs
    whos y_input                                      % 打印y的信息
    if isplay == 0                                    % 如果选择播放原音频
        if source_FS < 192000                         %     电脑小于 192K 采样率才能播放
            sound(y_input,source_FS)                  %     调用可以播放声音的函数 sound()
        end
    end
    
        
    %%  打印输入波形图像  %%%%%%%%%%%
    if isdraw == 1
        figure('Name','输入文件波形','NumberTitle','off');
        [N,n] = size(y_input);                  % 计算文件的长度与声道数量
        if n==1                                 % 单声道
            y1 = y_input(:,1);                  % 提取声道数据
            subplot(2,1,1);             
            plot(y1);                           % 描绘左声道图像
            axis([0 N t_axis]);                 % 根据实际情况,限制可显示区间
            xlabel('采样点');ylabel('幅度');
            title(['单声道原始波形 ',fs_str]);
    
            subplot(2,1,2);
            NFFT = source_FS * floor(N / source_FS);   % FFT 点数取 fs 的倍数
            Y_fft = abs(fft(y1,NFFT));                 % 左声道 FFT 计算
            A_FFT1 = Y_fft * 2 / NFFT;                 % 转换为幅值
            A_FFT1(1) = 0;                             % 忽略直流分量的影响
            f = (0:(NFFT/2)) * source_FS / NFFT;       % 频率范围,横坐标(半边谱)
            plot(f ,A_FFT1(1:NFFT/2 +1));              % 描绘 FFT 图像
            axis(f_axis);                              % 根据实际情况,限制可显示区间
            xlabel('频率/Hz');ylabel('振幅');
            title('单声道原始波形频谱')
    
        else                                    % 立体声                          
            y1 = y_input(:,1);                  % 提取左声道数据
            y2 = y_input(:,2);                  % 提取右声道数据
    
            subplot(2,2,1);                     
            plot(y1);                            % 描绘左声道图像
            axis([0 N t_axis]);                  % 根据实际情况,限制可显示区间
            xlabel('采样点');ylabel('幅度');
            title(['左声道原始波形 ',fs_str]);
    
            subplot(2,2,2);
            plot(y2);                            % 描绘右声道图像
            axis([0 N t_axis]);                  % 根据实际情况,限制可显示区间
            xlabel('采样点');ylabel('幅度');
            title(['右声道原始波形 ',fs_str]);
    
            subplot(2,2,3); 
            NFFT = source_FS * floor(N / source_FS);    % FFT 点数取 fs 的倍数
            Y_fft1 = abs(fft(y1,NFFT));                 % 左声道 FFT 计算
            A_FFT1 = Y_fft1 * 2 / NFFT;                 % 转换为幅值
            A_FFT1(1) = 0;                              % 忽略直流分量的影响
            f = (0:(NFFT/2)) * source_FS / NFFT;        % 频率范围,横坐标(半边谱)
    
            plot(f ,A_FFT1(1:NFFT/2 +1));               % 描绘 FFT 图像
            axis(f_axis);                               % 根据实际情况,限制可显示区间
            xlabel('频率/Hz');ylabel('振幅');
            title('左声道原始波形频谱')
    
            subplot(2,2,4);   
            NFFT = source_FS * floor(N / source_FS);    % FFT 点数取 fs 的倍数
            Y_fft2 = abs(fft(y2,NFFT));                 % 左声道 FFT 计算
            A_FFT2 = Y_fft2 * 2 / NFFT;                 % 转换为幅值
            A_FFT2(1) = 0;                              % 忽略直流分量的影响
            f = (0:(NFFT/2)) * source_FS / NFFT;        % 频率范围,横坐标(半边谱)
    
            plot(f ,A_FFT2(1:NFFT/2 +1));               % 描绘 FFT 图像
            axis(f_axis);                               % 根据实际情况,限制可显示区间
            xlabel('频率/Hz');ylabel('振幅');
            title('右声道原始波形频谱')
        end    
    end
    %% 输出参数设置  %%%%%%%%%%%
    if strcmp(stereo,'mono')                % 输出选项为单声道
        if n == 1                           % 如果输入文件是单声道文件
            y_ratio = y1;                   % 那么输出文件的数据与输入文件的数据一致
        else                                % 如果输入是立体声文件
            if strcmp(audio_ch,'left')      %     输出通道选择 左声道
                y_ratio = y1;               %     将左声道的数据作为输出数据
            elseif strcmp(audio_ch,'right') %     输出通道选择 右声道
                y_ratio = y2;               %     将右声道的数据作为输出数据
            else                            %     输出通道选择其他选项(both)
                y_ratio = y1*Left_channel_ratio + y2*(1-Left_channel_ratio); % 就将左声道数据与右声道数据,按照设定的比例来混合。
            end
        end
    else                                    % 如果输出选项为立体声
        if n == 1                           % 输入文件是单声道
            y_ratio(:,1) = y1;              % 那么左右声道都用输入的数据
            y_ratio(:,2) = y1;
        else                                % 输入文件是立体声
            y_ratio = y_input;              % 那么输出文件的数据与输入文件的数据一致
        end
    end
    
    %% 生成输出音频并转码  %%%%%%%%%%%
    y_out = resample(y_ratio,dest_FS,source_FS);              % 对即将输出的数据,进行重采样到设定的采样率
    audiowrite(outputfile,y_out,dest_FS,'BitsPerSample',bps); % 将输出数据存储为音频文件。
    %audiowrite(outputfile,y_out,dest_FS,'Quality',qlt); % 将输出数据存储为音频文件。
    
    %% 输出音频文件读取  %%%%%%%%%%%
    [y_output,dest_FS]=audioread(outputfile);            % 将上一步生成的文件读取出来保存为变量
    fs_str = ['(Fs:',num2str(dest_FS/1000),'KHz)'];      % 采样率字符串
    
    if isplay == 1                                       % 如果选择播放生成音频
        if dest_FS < 192000                              %     电脑小于 192K 采样率才能播放
            sound(y_output,dest_FS)                      %     调用可以播放声音的函数 sound()
        end
    end
    
    %%  打印输出波形图像 (跟打印输入波形图像类似,由于后续复用性较低,就不单独编写函数了)  %%%%%%%%%%%
    if isdraw == 1
        figure('Name','输出文件波形','NumberTitle','off');    % 打开第2个figure
        [N,n] = size(y_output);                    % 计算文件的长度与声道数量 
        if n==1                                    % 单声道
            y1 = y_output(:,1);                    % 提取声道数据
    
            subplot(2,1,1);
            plot(y1);                              % 描绘左声道图像
            axis([0 N t_axis]);                    % 根据实际情况,限制可显示区间
            xlabel('采样点');ylabel('幅度');
            title(['单声道生成波形 ',fs_str]);
    
            subplot(2,1,2);
            NFFT = dest_FS * floor(N / dest_FS);    % FFT 点数取 fs 的倍数
            Y_fft = abs(fft(y1,NFFT));              % 左声道 FFT 计算
            A_FFT1 = Y_fft * 2 / NFFT;              % 转换为幅值
            A_FFT1(1) = 0;                          % 忽略直流分量的影响
            f = (0:(NFFT/2)) * dest_FS / NFFT;      % 频率范围,横坐标(半边谱)
            plot(f ,A_FFT1(1:NFFT/2 +1));           % 描绘 FFT 图像
            axis(f_axis);                           % 根据实际情况,限制可显示区间
            xlabel('频率/Hz');ylabel('振幅');
            title('单声道生成波形频谱');
    
        else                                        % 立体声
            y1 = y_output(:,1);                     % 提取左声道数据
            y2 = y_output(:,2);                     % 提取右声道数据
    
            subplot(2,2,1);
            plot(y1);                               % 描绘左声道图像
            axis([0 N t_axis]);                     % 根据实际情况,限制可显示区间
            xlabel('采样点');ylabel('幅度');
            title(['左声道生成波形 ',fs_str]);
    
            subplot(2,2,2);
            plot(y2);                               % 描绘右声道图像
            axis([0 N t_axis]);                     % 根据实际情况,限制可显示区间
            xlabel('采样点');ylabel('幅度');
            title(['右声道生成波形 ',fs_str]);
    
            subplot(2,2,3);
            NFFT = dest_FS * floor(N / dest_FS);    % FFT 点数取 fs 的倍数
            Y_fft1 = abs(fft(y1,NFFT));             % 左声道 FFT 计算
            A_FFT1 = Y_fft1 * 2 / NFFT;             % 转换为幅值
            A_FFT1(1) = 0;                          % 忽略直流分量的影响
            f = (0:(NFFT/2)) * dest_FS / NFFT;      % 频率范围,横坐标(半边谱)
    
            plot(f ,A_FFT1(1:NFFT/2 +1));           % 描绘 FFT 图像
            axis(f_axis);                           % 根据实际情况,限制可显示区间
            xlabel('频率/Hz');ylabel('振幅');
            title('左声道生成波形频谱')
    
            subplot(2,2,4);                         
            NFFT = dest_FS * floor(N / dest_FS);    % FFT 点数取 fs 的倍数
            Y_fft2 = abs(fft(y2,NFFT));             % 左声道 FFT 计算
            A_FFT2 = Y_fft2 * 2 / NFFT;             % 转换为幅值
            A_FFT2(1) = 0;                          % 忽略直流分量的影响
            f = (0:(NFFT/2)) * dest_FS / NFFT;      % 频率范围,横坐标(半边谱)
    
            plot(f ,A_FFT2(1:NFFT/2 +1));           % 描绘 FFT 图像
            axis(f_axis);                           % 根据实际情况,限制可显示区间
            xlabel('频率/Hz');ylabel('振幅');
            title('右声道生成波形频谱')
        end    
    end
    

    ————————————————
    版权声明:本文为CSDN博主「Mr-Ma Technology」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_29225913/article/details/105445028

    展开全文
  • 基于Docker的实用程序,可将音频文件(mp3,m4a,wma)转换为所需的Hörbert音频格式描述 音频播放器需要特定的WAV格式(32khz,16bit,Mono)和文件名(0.WAV,1.WAV等)才能在该设备上播放音频文件。 这个基于...
  • MX Player不支持此音频格式(EAC3)

    万次阅读 多人点赞 2021-07-01 09:58:15
    文章目录 问题描述 解决方案 遇到的坑 参考文献 问题描述 MX Player不支持此音频格式(EAC3),MX Player 从 1.69 开始因为授权问题移除了 AC3/DTS 支持 可以使用本人的版本(o98w) 解决方案 查看 MX Player 版本:...

    问题描述

    MX Player不支持此音频格式(EAC3),MX Player 从 1.69 开始因为授权问题移除了 AC3/DTS 支持

    可以使用本人的版本(o98w)




    解决方案

    查看 MX Player 版本:选项 → 帮助 → 关于
    在这里插入图片描述

    下载 MX_FFmpeg,根据版本号和处理器架构下载

    如本人下载版本为 1.25.0 的 mx_neon64.zip
    在这里插入图片描述
    在手机存储里任意新建一个文件夹,如 MxPlayerPro,将该压缩包放进去

    设置编解码器:选项 → 本地播放器设置 → 解码器 → 自定义编解码器 → 选择该压缩包

    在这里插入图片描述




    遇到的坑

    1. 报错找不到自定义编解码器。 请使用1.25.0 ARMv8 NEON 版编解码器

    根据提示下载对应版本,即 1.25.0 版本

    2. .mkv视频文件中的SRT字幕无法加载出来
    直接下载最新版本 1.35.0 ,解压,将版本号改为需要的版本号




    参考文献

    1. MX player播放器放不了EAC3格式音频
    2. 想问一下为什么我的srt字幕加载不出来?
    展开全文
  • HTML5视频音频的使用详解

    千次阅读 2021-06-13 05:13:58
    一、video1.1 video支持视频格式常见的视频格式视频的组成部分:画面、音频、编码格式视频编码:H.264、Theora、VP8(google开源)HTML5支持的视频格式:1、Ogg带有Theora视频编码+Vorbis音频编码的Ogg文件支持的...

    一、video

    1.1 video支持视频格式

    常见的视频格式

    视频的组成部分:画面、音频、编码格式

    视频编码:H.264、Theora、VP8(google开源)

    HTML5支持的视频格式:

    1、Ogg

    带有Theora视频编码+Vorbis音频编码的Ogg文件

    支持的浏览器:F、C、O

    2、MEPG4

    带有H.264视频编码+AAC音频编码的MPEG4文件

    支持的浏览器: S、C

    3、WebM

    带有VP8视频编码+Vorbis音频编码的WebM格式

    支持的浏览器: I、F、C、O

    劣势:视频少、转码器几乎没有,不好转码

    想要video能自动填充慢父div的大小,只要给video标签加上style="width= 100%; height=100%; object-fit: fill"即可

    1.2 标签原型

    指定一种视频格式,不能播就提示

    poster="examp1.jpg" >您的浏览器不支持video

    给定多种视频格式,浏览器根据自身支持程度选择播放哪一种

    注意:多个source标签,浏览器会从第一个开始识别,如果第一个不被识别,则会继续识别第二个;如果第一个识别成功,则会直接播放第一种格式视频

    //src属性写到source标签中,要指定视频的type类型,例如MP4的即为type=“video/mp4”

    //ogg格式

    //webm格式

    1.3 重要的video标签属性

    属性(常用)

    功能描述

    controls

    controls

    是否显示播放控件

    autoplay

    autoplay

    设置是否打开浏览器后自动播放

    width

    Pilex(像素)

    设置播放器的宽度

    height

    Pilex(像素)

    设置播放器的高度

    loop

    loop

    设置视频是否循环播放(即播放完后继续重新播放)

    preload

    preload

    设置是否等加载完再播放

    src

    url

    设置要播放视频的url地址

    poster

    imgurl

    设置播放器初始默认显示图片

    autobuffer

    autobuffer

    设置为浏览器缓冲方式,不设置autoply才有效

    API 属性

    属性

    描述

    audioTracks

    返回表示可用音轨的 AudioTrackList 对象

    buffered

    返回表示音频/视频已缓冲部分的 TimeRanges 对象

    controller

    返回表示音频/视频当前媒体控制器的 MediaController 对象

    crossOrigin

    设置或返回音频/视频的 CORS 设置

    currentSrc

    返回当前音频/视频的 URL

    currentTime

    设置或返回音频/视频中的当前播放位置(以秒计)

    defaultMuted

    设置或返回音频/视频默认是否静音

    defaultPlaybackRate

    设置或返回音频/视频的默认播放速度

    duration

    返回当前音频/视频的长度(以秒计)

    ended

    返回音频/视频的播放是否已结束

    error

    返回表示音频/视频错误状态的 MediaError 对象

    mediaGroup

    设置或返回音频/视频所属的组合(用于连接多个音频/视频元素)

    muted

    设置或返回音频/视频是否静音

    networkState

    返回音频/视频的当前网络状态

    paused

    设置或返回音频/视频是否暂停

    playbackRate

    设置或返回音频/视频播放的速度

    played

    返回表示音频/视频已播放部分的 TimeRanges 对象

    readyState

    返回音频/视频当前的就绪状态

    seekable

    返回表示音频/视频可寻址部分的 TimeRanges 对象

    seeking

    返回用户是否正在音频/视频中进行查找

    startDate

    返回表示当前时间偏移的 Date 对象

    textTracks

    返回表示可用文本轨道的 TextTrackList 对象

    videoTracks

    返回表示可用视频轨道的 VideoTrackList 对象

    volume

    设置或返回音频/视频的音量

    常用API属性

    duration:返回当前音频/视频的长度(以秒计)

    paused:设置或返回音频/视频是否暂停

    currentTime:设置或返回音频/视频中的当前播放位置(以秒计)

    ended:返回音频/视频的播放是否已结束

    1.4 Video API

    1.4.1 Video 方法

    API

    事件说明

    play

    video.play(); 播放视频

    pause

    video.pause(); 暂停播放视频

    load

    video.load(); 将全部属性回复默认值,视频恢复重新开始状态

    canPlayType

    var support = videoid.canPlayType(‘video/mp4′);

    判断浏览器是否支持当前类型的视频格式

    返回值:

    空字符串:不支持Maybe:可能支持Probably:完全支持

    常用方法

    play():开始播放音频/视频

    pause():暂停当前播放的音频/视频

    1.4.2网络状态

    获取video对象

    Media = document.getElementById("media");

    1.Media.currentSrc;

    返回当前资源的URL

    2.Media.src = value;

    返回或设置当前资源的URL

    3.Media.canPlayType(type);

    是否能播放某种格式的资源

    4.Media.networkState;

    0.此元素未初始化

    1.正常但没有使用网络

    2.正在下载数据

    3.没有找到资源

    5.Media.load();

    重新加载src指定的资源

    6.Media.buffered;

    返回已缓冲区域,TimeRanges

    7.Media.preload;

    none:不预载

    metadata:预载资源信息

    auto:

    1.4.3 准备状态

    1.Media.readyState

    2.Media.seeking;

    是否正在seeking

    1.4.4 回放状态

    1.Media.currentTime = value;

    当前播放的位置,赋值可改变位置

    2.Media.startTime;

    一般为0,如果为流媒体或者不从0开始的资源,则不为0

    3.Media.duration;

    当前资源长度 流返回无限

    4.Media.paused;

    是否暂停

    5.Media.defaultPlaybackRate = value;

    默认的回放速度,可以设置

    6.Media.playbackRate = value;

    当前播放速度,设置后马上改变

    7.Media.played;

    返回已经播放的区域,TimeRanges,关于此对象见下文

    8.Media.seekable;

    返回可以seek的区域 TimeRanges

    9.Media.ended;

    是否结束

    10.Media.autoPlay;

    是否自动播放

    11.Media.loop;

    是否循环播放

    12.Media.play();

    播放

    13.Media.pause();

    暂停

    1.4.5 视频控制

    Media.controls;//是否有默认控制条

    Media.volume = value; //音量

    Media.muted = value; //静音

    TimeRanges(区域)对象

    TimeRanges.length; //区域段数

    TimeRanges.start(index) //第index段区域的开始位置

    TimeRanges.end(index) //第index段区域的结束位置

    1.4.6 相关事件

    1.首先绑定事件的话可以通过js中的addEventListener方法来绑定事件

    事件

    说明

    loadstart

    客户端开始请求数据

    progress

    客户端正在请求数据

    suspend

    延迟下载

    abort

    客户端主动终止下载(不是因为错误引起)

    loadstart

    客户端开始请求数据

    progress

    客户端正在请求数据

    error

    请求数据时遇到错误

    stalled

    网速失速

    play

    play()和autoplay开始播放时触发

    pause

    pause()触发

    loadedmetadata

    成功获取资源长度

    loadeddata

    -

    waiting

    等待数据,并非错误

    playing

    开始回放

    canplay

    可以播放,但中途可能因为加载而暂停

    canplaythrough

    可以播放,歌曲全部加载完毕

    seeking

    寻找中

    seeked

    寻找完毕

    timeupdate

    播放时间改变

    ended

    播放结束

    ratechange

    播放速率改变

    durationchange

    资源长度改变

    volumechange

    音量改变

    2.常用事件

    oncanplay:当文件就绪可以开始播放时运行的脚本(缓冲已足够开始时)。

    ontimeupdate: 当播放位置改变时(比如当用户快进到媒介中一个不同的位置时)运行的脚本。

    onended:当媒介已到达结尾时运行的脚本(可发送类似“感谢观看”之类的消息)。

    1.4.7 其他

    1.全屏:

    element.webkitRequestFullScreen();( webkit)

    element.mozRequestFullScreen(); (Firefox )

    element.requestFullscreen(); (W3C )

    2.退出全屏:

    document.webkitCancelFullScreen(); (webkit )

    document.mozCancelFullScreen(); (Firefox)

    document.exitFullscreen(); (W3C)

    二、audio

    2.1 audio格式

    1.常见的音频格式

    音频编码:ACC、MP3、Vorbis

    2.HTML5支持的音频格式:

    Ogg 免费 支持的浏览器:C、F、O

    MP3 收费 支持的浏览器: I、C、S

    Wav 收费 支持的浏览器: F、O、S

    2.2 audio标签中的一些常用属性

    属性

    属性值

    注释

    src

    url

    播放的音乐的url地址(火狐只支持ogg的音乐,而IE9只支持MP3格式的音乐。chrome貌似全支持)

    preload

    preload

    预加载(在页面被加载时进行加载或者说缓冲音频),如果使用了autoplay的话那么该属性失效。

    loop

    loop

    循环播放

    controls

    controls

    是否显示默认控制条(控制按钮)

    autoplay

    autoplay

    自动播放

    对于音乐格式的支持

    音频格式

    Chrome

    Firefox

    IE9

    Opera

    Safari

    OGG

    支持

    支持

    支持

    不支持

    不支持

    MP3

    支持

    不支持

    支持

    不支持

    支持

    WAV

    不支持

    支持

    不支持

    支持

    不支持

    audio可通过new来创建。也可以通过用document来获取

    //通过new关键字来创建Audio对象

    var Music = new Audio("test.mp3");

    //通过document来获取已经存在的Audio对象

    var Music = document.getElementById("audio");

    //当然这里也可以使用document.getElementsByClassName('className')等其他的方法来获取。

    2.3 api所提供的对audio标签操作的一些属性和方法

    属性

    注释

    duration

    获取媒体文件的总时长,以s为单位,如果无法获取,返回NaN

    paused

    如果媒体文件被暂停,那么paused属性返回true,反之则返回false

    ended

    如果媒体文件播放完毕返回true

    muted

    用来获取或设置静音状态。值为boolean

    volume

    控制音量的属性值为0-1;0为音量最小,1为音量最大

    startTime

    返回起始播放时间

    error

    返回错误代码,为uull的时候为正常。否则可以通过Music.error.code来获取

    currentTime

    用来获取或控制当前播放的时间,单位为s。

    currentSrc

    以字符串形式返回正在播放或已加载的文件

    2.4 常用的控制用的函数

    函数

    作用

    load()

    加载音频、视频软件

    play()

    加载并播放音频、视频文件或重新播放暂停的的音频、视频

    pause()

    暂停出于播放状态的音频、视频文件

    canPlayType(obj)

    测试是否支持给定的Mini类型的文件

    2.5 audio标签API中的常用事件

    首先绑定事件的话可以通过js中的addEventListener方法来绑定事件

    事件名称

    事件作用

    loadstart

    客户端开始请求数据

    progress

    客户端正在请求数据(或者说正在缓冲)

    play

    play()和autoplay播放时

    pause

    pause()方法促发时

    ended

    当前播放结束

    timeupdate

    当前播放时间发生改变的时候。播放中常用的时间处理

    canplaythrough

    歌曲已经载入完全完成

    canplay

    缓冲至目前可播放状态。

    其实video的api和audio几乎一致。稍稍有点不同。所以基本上会了一个其他的也就都会了

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。 ad51e517755f8fd6a7ec83ced4ecfaf3.png

    展开全文
  • 格式 表单 框架 图像 音频/视频 链接 列表 表格 样式/节 元信息 编程 HTML5 添加的属性。 属性 描述 = HTML5 中新的事件属性。 Window 事件属性 Form 事件 Keyboard 事件 Mouse 事件 Media 事件
  • 音频编码格式——AAC简介

    千次阅读 2021-03-08 21:29:02
    AAC (Advanced Audio Coding),高级音频编码。基于1997年,目的是为了取代MP3格式。 优点:相较于mp3,AAC格式的音质更佳,文件更小。 缺点:AAC属于有损压缩的格式,与时下流行的APE、FLAC等无损格式相比音质存在...
  • flac 音频格式标准

    千次阅读 2021-02-05 20:41:45
    文件结构 总体结构 一个标准的 flac 音频文件应当包含以下三个...元数据块区域包含用于描述 flac 音频流的信息以及一些附属的信息,其中的信息以不同类型的块(block)进行记录,称为“元数据块(metadata block)”
  • AMR音频格式分析

    千次阅读 2018-11-15 20:56:25
    AMR音频格式分析 2016年10月19日 19:58:24 -鸣人- 阅读数:5058 标签: amr audio 更多 个人分类: audio语音 一. AMR音频格式概述 AMR,全称是:Adaptive Multi-Rate,自适应多速率,是一种音频编码文件...
  • 根据官方文档说明:libswresample提供深度优化的音频重采样、声道布局转换与格式转换。音频重采样过程是先建立原始音频信号,然后重新采样。重采样分为上采样和下采样,其中上采样需要插值,下采样需要抽取。从高...
  • 本文档解析了MPEG音频文件格式,详细描述了MP3文件格式。质量很高
  • OGG音频格式分析

    万次阅读 2016-05-17 20:48:26
    OGG音频格式概述 Ogg是一个自由且开放标准的容器格式,由Xiph.Org 基金会所维护。Ogg格式并不受到软件专利的限制,并设计用于有效率地流媒体和处理高品质的数字多媒体。 “Ogg”意指一种文件格式,可以纳入各式各样...
  • 音频格式(一)PCM和WAV

    千次阅读 2022-05-01 22:03:02
    我们先从最原始的两种音频文件入手,讲一讲常见的音频文件格式。首先是PCM和WAV 一、PCM文件 PCM(Pulse-code modulation 脉冲编码调制)是音频原始数据,是采样器(麦克风)电信号转化的数字信号,这就是我们常说的...
  • 小猫爪:嵌入式小知识10-I2S,TDM,PCM等音频格式详解1 前言2 I2S3 Codec模式(左/右对齐)3.1 左对齐(MSB对齐)3.2 右对齐(LSB对齐)4 DSP模式5 时分多路复用(TDM)6 PCMEND 1 前言   前段时间接触到了一个音频...
  • 音频格式介绍和说明

    2020-06-28 15:23:45
    零、音频压缩的原理 音频文件压缩的原理很简单:因为有冗余信息,因此可以压缩。 主要有两种方式实现: 频谱掩蔽效应: 人耳所能察觉的声音信号的频率范围为20Hz~20KHz,在这个频率范围以外的音频信号属于冗余...
  • AAC音频格式分析与解码

    千次阅读 2016-07-23 16:17:34
    一直在做一个语音项目,到了测试阶段,近来不是很忙,想把之前做的内容整理一下。...AAC音频格式分析 AAC音频格式有ADIF和ADTS: ADIF:Audio Data Interchange Format 音频数据交换格式。这种格式的
  • 音频是个专业术语,音频一词已用作一般性描述音频范围内和声音有关的设备及其作用。人类能够听到的所有声音都称之为音频,它可能包括噪音等。 声音被录制下来以后,无论是说话声、歌声、乐器都可以通过数字音乐软件...
  • 音频格式之间的转换

    千次阅读 2022-04-30 22:01:28
    1. 位深之间的转换 位深度也叫采样位深,音频的位深度决定动态范围,常见的位深格式有8bit、16bit、24bit、32bit,而其中16bit最常见,8bit、16bit、32bit之间的转换可以通过ffmpeg的swr_convert函数很方便地实现...
  • 常见音频格式大盘点分析

    千次阅读 2018-03-18 14:29:32
    常见音频格式大盘点分析取样率指的是每一秒钟取样的数目,其单位为赫兹(Hz),通常CD的采样率为44.1 kHz;DAT (Digital Audio Tape) 的采样率为32,44.1 和 48 kHz,其他常见的采样率还有22.05 和 11.025 kHz等。...
  • 在 Android 播放音频文件一般都是使用 MediaPlayer 类来实现的,它多种格式的音 频文件提供了非常全面的控制方法,从而使得播放音乐的工作变得十分简单。下表列出了 MediaPlayer 类一些较为常用的控制方法。 ...
  • ACC(Advanced Audio Coding,高级音频编码)是杜比实验室为音乐社区提供的技术。,出现于1997年,基于MPEG-2的音频编码技术。2000年,MPEG-4标准出现后,AAC重新集成了其特性,加入了SBR技术和PS技术,为了区别于...
  • 常见音频编码格式解析

    万次阅读 多人点赞 2017-12-15 11:22:06
    常见音频编码格式解析常见音频编码格式解析 MP3编码格式 1MP3概述 2MPEG音频压缩基础 3MPEG Layer3编解码的基本原理 4整个MP3文件结构 ...51AAC音频格式有ADIFADTSLATM 52ADIF和ADTS的header 53ADIF和
  • AAC是Advanced Audio Coding简写,即高级音频编码,其压缩后的音质效果比MP3要好,是目前主流的音频压缩格式。AAC单独编码出来的流后缀为aac或者m4a(iPhone等产品)。AAC有两种数据传输格式:ADIF和ADTS。 ADIF:...
  • 音频格式与编码的理解

    千次阅读 2013-10-06 10:12:51
    原文链接地址:http://www.raywenderlich.com/204/audio-101-for-iphone-developers-file-and-data-formats ... 在做iphone开发之前,我(ray)声音格式了解的相当少。我知道一些“wav”和“mp3”声音
  • 格式 表单 框架 图像 音频/视频 链接 列表 表格 样式/节 元信息 编程 HTML5 添加的属性。 属性 描述 = HTML5 中新的事件属性。 Window 事件属性 Form 事件 Keyboard 事件 Mouse 事件 Media 事件
  • 音频格式详解:WAV

    千次阅读 2015-07-13 17:44:39
    (1)音频格式:典型WAV 封装格式是每个音频文件必不可少的组成部分之一,它给我们提供了以下参考信息。音频文件类型、编解码方法、单双声道、采样深度、采样率、量化位数、音频文件大小、长度。下面首先来分析一下...
  • AAC音频格式分析

    千次阅读 2020-05-23 21:19:21
    T、Sony等公司共同开发,目的是取代MP3格式。2000年,MPEG-4标准出台,AAC重新集成了其它技术(PS,SBR),为区别于传统的MPEG-2 AAC,故含有SBR或PS特性的AAC又称为MPEG-4 AAC。 AAC是新一代的音频有损压缩技术,...
  • 音频封装格式一般由:多媒体信息+音频流+封面流+歌词流组成。有些音乐会包含封面和歌词,则应有封面流、歌词流。多媒体信息包括:标题、艺术家、专辑、作曲、音乐风格、日期、码率、时长、声道布局、采样率、音频...
  • 音频的基本知识和多通道以及Plane格式和Packet格式

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 64,185
精华内容 25,674
热门标签
关键字:

对音频格式的描述中