Camera2 + MediaRecorder实现了录制视频的功能

电脑杂谈  发布时间:2020-07-03 01:23:54  来源:网络整理

dat视频格式转换器_图片转换dat格式_dat转换什么格式能视频

下表是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(窄带)音频编)

dat转换什么格式能视频_图片转换dat格式_dat视频格式转换器

④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及更高版本)

dat转换什么格式能视频_dat视频格式转换器_图片转换dat格式

: (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(宽带)音频编

语音编解码算法被用作第三代移动通信系统

dat视频格式转换器_dat转换什么格式能视频_图片转换dat格式

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.

图片转换dat格式_dat转换什么格式能视频_dat视频格式转换器

现在创建的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

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...