
下表是outputFormat类中的调用字段及其表示的格式对应表
呼叫字段
AAC_ADTS
AMR_NB
默认
MPEG_2_TS
MPEG_4
THREE_GPP
WEBM
格式
.aac
.3gp
.ts
.mp4
.3gp
.ogg
格式
.m4a
mkv
①AAC(AAC低复杂度(AAC-LC)音频编)
②AAC_ELD(增强型低延迟AAC(AAC-ELD)音频编)
③AMR_NB(AMR(窄带)音频编)

④AMR_WB(AMR(宽带)音频编)
⑤默认
⑥HE_AAC(高效AAC(HE-AAC)音频编)
⑦VORBIS(Ogg Vorbis音频编)
以下是一些常见的内容:
AAC
它使用一种新的编码算法,效率更高且具有更高的“成本效益”.
优点: 与mp3相比,AAC格式具有更好的音质和更小的文件.
缺点: AAC是一种有损压缩格式.
设计目标是替换原始的MP3编码标准,并希望在与MP3相似的比特率下质量优于MP3. ISO和IEC标准组织已在MPEG-2和MPEG-4中实现了这一目标并将其标准化.
受支持的容器格式
3GPP,3gp,MPEG-4,mp4,m4a,ts(不可搜索,Android 3.0 +),aac
HE_AAC
高效AAC(HE-AAC)音频编
分为两个版本
HE_AACV1(编码器为Android4.1 +)
支持单声道/立体声/5.0/5.1内容,标准采样率为8至48 kHz.
HE_AACV2(增强型AAC +)
支持立体声/5.0/5.1内容,标准采样率为8到48 kHz.
AAC_ELD
增强的低延迟AAC(AAC-ELD)音频编
编码器: (Android 4.1及更高版本)
![]()
: (Android 4.1及更高版本)
以16至48 kHz的标准采样率支持单声道/立体声内容
可以提供与CD相同的音频质量,使用户获得无与伦比的通信体验. 它是唯一被广泛采用的全高清语音技术.
AMR_NB
AMR(窄带)音频编
主要用于第三代移动通信W-CDMA系统
AMR-NB支持八种速率模式. 为了更智能地解决源编码和信道编码的速率分配问题,可以根据无线信道和传输状态自适应地选择一种编码方式进行传输,使无线资源的配置和利用更加灵活有效.
模式0(4.75kbit / s)
模式1(5.15kbit / s)
模式2(5.90kbit / s)
模式3(6.70kbit / s)
模式4(7.40kbit / s)
模式5(7.95kbit / s)
模式6(10.2kbit / s)
模式7(12.2kbit / s)
在8kHz采样时<4.75至12.2 kbps
支持的文件类型/容器格式
3GPP
.3gp
AMR_WB
AMR(宽带)音频编
语音编解码算法被用作第三代移动通信系统
![]()
AMR-WB音频带宽为50Hz-7000Hz,而200Hz-3400Hz则为宽带,并支持九种速率模式
模式0(6.60kbit / s)
模式1(8.85kbit / s)
模式2(12.65kbit / s)
模式3(14.25kbit / s)
模式4(15.85kbit / s)
模式5(18.25kbit / s)
模式6(19.85kbit / s)
模式7(23.05kbit / s)
模式8(23.85kbit / s)
采用代数编码线性预测(ACELP),3GPP已将其选择为GSM和3G无线W-CDMA的宽带编码器,并将应用于IP电话,第三代移动通信,ISDN宽带电话, ISDN视频电话和视频会议等领域,这标志着无线和有线服务首次使用相同的编码器.
在16kHz时从6.60 kbit / s到23.85 kbit / s采样率的9种速率
支持的文件类型/容器格式
3GPP
.3gp
VORBIS
Ogg Vorbis音频编.
Ogg Vorbis是一种新的音频压缩格式,类似于现有的音乐格式,例如MP3.
它是完全免费,开放的,没有专利限制.
支持多渠道.
降低比特率和文件大小.
Ogg Vorbis文件的扩展名为.ogg.

现在创建的OGG文件可以在以后的任何播放器上播放. 因此,这种文件格式可以不断提高大小和音质,而不会影响旧的编码器或播放器.
支持的文件类型/容器格式
•Ogg
.ogg
•Matroska
.mkv(Android 4.0 +)
Matroska是一种新的多媒体打包格式,可以将各种不同编码的视频以及超过16种不同格式的音频和字幕流以不同的语言封装到Matroska Media文件中. 它也是开源的多媒体打包格式之一.
AAC音频编码标准支持8至96KHZ的采样率
AMRNB音频编码标准支持8KHZ的采样率范围
AMRWB音频编码标准支持16KHZ的采样率范围
常用的采样率是:
摘要: 通过以上步骤,在使用MediaRecord时,我们不会盲目地设置AudioEncoder,OutputFormat和AudioSamplingRate,而是根据实际情况使用它.
(2)我遇到的问题如下:
此类是一个实体类,用于保存摄像机配置信息,确切地说,它存储音频和视频配置信息,因此创建实例的过程如下;
我使用的视频质量是CamcorderProfile.QUALITY_1080P 对应size 大小是6
int size = CamcorderProfile.QUALITY_1080P;
//通过传入相机id 和视频质量来获取其实例对象
CamcorderProfile mProfile = CamcorderProfile.get(cameraId, size);
在对mediaRecorder录制的视频进行一些初始配置时,我们使用了setProfile(CamcorderProfile配置文件);然后一些手机出现了音频和视频不同步的问题
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mProfile.videoBitRate = videoBitRate;
mProfile.audioBitRate = audioBitRate;
mMediaRecorder.setProfile(mProfile);
mMediaRecorder.setCaptureRate(30);
mMediaRecorder.setVideoFrameRate(30);
mMediaRecorder.setVideoEncodingBitRate(videoBitRate);
mMediaRecorder.setAudioEncodingBitRate(audioBitRate);
通过查看此方法的源代码:
public void setProfile(CamcorderProfile profile) {
setOutputFormat(profile.fileFormat);
setVideoFrameRate(profile.videoFrameRate);
setVideoSize(profile.videoFrameWidth, profile.videoFrameHeight);
setVideoEncodingBitRate(profile.videoBitRate);
setVideoEncoder(profile.videoCodec);
if (profile.quality >= CamcorderProfile.QUALITY_TIME_LAPSE_LOW &&
profile.quality <= CamcorderProfile.QUALITY_TIME_LAPSE_QVGA) {
// Nothing needs to be done. Call to setCaptureRate() enables
// time lapse video recording.
} else {
setAudioEncodingBitRate(profile.audioBitRate);
setAudioChannels(profile.audioChannels);
setAudioSamplingRate(profile.audioSampleRate);
setAudioEncoder(profile.audioCodec);
}
}
经过分析: 当上面的代码达到判断条件时,它转到else打印并查看profile.quality = 6,这是我们创建CamcorderProfile实例时传入的大小6. 与运行时质量有关(查看源代码为1000dat视频格式转换器,上述数字)在比较时总是很小,因此我去其他地方进行了音频设置.
因此,让我们看看这些音频设置行是否存在任何问题. 重写这些方法以使用类打印输出,如下所示:
// 打印我们profile 中的这些值如下, 我们采用一行行注释执行找到设置采样率时出现了音频不
//同步
Log.d(TAG, "video bit rate: " + mProfile.videoBitRate);
Log.d(TAG, "video frame rate: " + mProfile.videoFrameRate);
Log.d(TAG, "audio bit rate: " + mProfile.audioBitRate);
Log.d(TAG, "audio channels: " + mProfile.audioChannels);
Log.d(TAG, "audio sampling rate: " + mProfile.audioSampleRate);
通过查看音频使用的是AAC
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
//编码率使用的128000 设置这个音频的编码率不会影响音视频不同步 ;
// mMediaRecorder.setAudioEncodingBitRate(128000);
// 音频频道使用为2 设置音频频道为2也不会影响音视频不同步问题;
// mMediaRecorder.setAudioChannels(2);
// AAC音频编码标准支持的采样率范围为8至96KHz //这里log打印设置的是48000 出现了不
//同步的问题
mMediaRecorder.setAudioSamplingRate(48000);
通过上述发现的原因,设置音频采样率时出现不同步现象;通过知识储备,我们知道我们设置的编码格式AAC的音频采样率范围为8到96KHz. 在逻辑上dat视频格式转换器,此处的48000设置令人满意. 48000的采样率是Hz-miniDV,数字电视,DVD,DAT,电影和音频中使用的数字声音的采样率. 结果,它出现在某些设备上. 不同步. 如果未设置此参数,则默认值应为8000 Hz,这是电话使用的采样率,足以使人说话. 结果,在我所有的设备上都没有音频和视频的不同步现象,因此当我们不设置它时,默认值为8000 Hz,因此就没有音频和视频的不同步现象. . ;
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shumachanpin/article-266406-1.html
棒棒哒