1秒钟振动的次数 次声波 20Hz 可听声波 20kHz 超声波
原始数据格式:
WAV: PCM + 数据头
AudioRecord: 偏低层 MediaRecorder: 偏应用
AudioUnit AVFoundation
DirectShow OpenAl >window7 audio cool
通过命令方式 ffmpeg -f avfoundation -i :0 out.wav
注册设备 avdevice_register_all();
设置采集方式 AVInputFormat *iformat = av_find_input_format(“avfoundation”); 打开音频设备 AVFormatContext *fmt_ctx = NULL; AVDictionary *opetions = NULL; avformat_open_input(&fmt_ctx, “:0”, iformat, &opetions);
av_strerror 打印ffmpeg 错误信息
读取数据 av_read_frame
将音频数据写入文件 fopen() 打开文件 fwrite(pkt.data, pkt.size, 1, outfile); 写入数据 fclose(outfile);
压缩最快
OPUS > AAC > Ogg
AAC(Advanced Audio Coding), 为了取代mp3格式. 最开始基于MPEG-2的音频编码技术, MPEG-4出来后AAC重新集成了其特性, 加入了SBR技术和PS技术.
常用的规格有:
AAC格式, AAC头格式:
ffmpeg -i xxx.mp4 -vn -c:a libfdk_aac -ar 441000 -channels 2 -profile:a aac_he_v2 3.aac
将音频三元组(采样率, 采样大小, 通道数)的值转成另外一组值
为什么要重采样
怎么获取参数
重采样的步骤
进行重采样
swr_alloc_set_opts swr_init swr_convert swr_free
*AVFrame - 未编码 *AVPacket - 编码过
从设置读取数据, ffmpeg当成从多媒体文件中读取, 读取的是AVPacket, 里面是PCM数据, 正常的做法是有个解码过程, 把AVPacket解码成AVFrame
释放数据
avcodec_find_encoder avcodec_alloc_context3 avcodec_open2 avcodec_frame_alloc av_frame_get_buffer avcodec_send_frame avcodec_receive_packet
2.5ms - 60ms 定义为一帧, 时间为采样时间
采样率: 8kHz 通道: 2 位宽: 16bit 帧: 20ms
8000 * 2 * 16 * 0.02 = 5120bit / 8 = 640byte