MediaFormat 基本参数

本文详细解释了MediaFormat中的关键参数,如MIME类型、采样率、比特率等,以及它们在音频(如MPEG、AAC)和视频(如H.264、HEVC)编码中的作用,包括帧率、颜色格式和编解码设置。
摘要由CSDN通过智能技术生成

MediaFormat

  1. MIME 类型 (MediaFormat.KEY_MIME):指示媒体数据的类型。对于音频,典型的 MIME 类型可能是 "audio/mpeg";对于视频,可能是 "video/mp4"
    • 视频
      • video/avc:H.264/AVC(Advanced Video Coding)格式的视频数据。
      • video/hevc:H.265/HEVC(High Efficiency Video Coding)格式的视频数据。
      • video/mp4v-es:MPEG-4 Visual 格式的视频数据。
      • video/x-vnd.on2.vp8:VP8 格式的视频数据。
      • video/x-vnd.on2.vp9:VP9 格式的视频数据
    • 音频
      • audio/mpeg:MPEG 格式的音频数据。
      • audio/mp4a-latm:AAC 格式的音频数据。
      • audio/amr-wb:AMR-WB 格式的音频数据。
      • audio/vorbis:Vorbis 格式的音频数据。
      • audio/x-wav:WAV 格式的音频数据。
      • audio/x-flac:FLAC 格式的音频数据。
  2. 采样率 (MediaFormat.KEY_SAMPLE_RATE):音频的采样率,表示每秒采样的次数,通常以 Hz 为单位。例如,CD 音质的采样率为 44100 Hz。
  3. 声道数 (MediaFormat.KEY_CHANNEL_COUNT):音频的声道数,表示声音信号的通道数量。典型的值为 1(单声道)或 2(立体声)。
  4. 比特率 (MediaFormat.KEY_BIT_RATE):音频或视频的比特率,表示传输速率,通常以比特每秒(bps)为单位。对于音频,它表示每秒传输的比特数;对于视频,它表示压缩后的比特率。
  5. 帧率 (MediaFormat.KEY_FRAME_RATE):视频的帧率,表示每秒显示的帧数。典型的视频帧率为 24、30 或 60 帧每秒。
  6. 持续时间 (MediaFormat.KEY_DURATION):媒体文件的持续时间,通常以微秒(μs)为单位。
  7. 轨道角度 (MediaFormat.KEY_ROTATION):视频的旋转角度,以度为单位。典型值为 0、90、180 或 270 度。
  8. 关键帧间隔 (MediaFormat.KEY_I_FRAME_INTERVAL):视频的关键帧(I帧)之间的时间间隔,通常以秒或微秒为单位。
  9. 颜色格式 (MediaFormat.KEY_COLOR_FORMAT):视频数据的颜色格式。这是一个整数值,用于表示不同的颜色编码方案。
  10. 编码器名称 (MediaFormat.KEY_ENCODER):编码器的名称,指示生成该格式的媒体文件所使用的编码器。
  11. 字节顺序 (MediaFormat.KEY_PCM_ENCODING):音频的字节顺序。对于 PCM 编码的音频,通常是 AudioFormat.ENCODING_PCM_16BITAudioFormat.ENCODING_PCM_8BIT

编辑必传参数

Video中必设参数

  • MIME 类型 (MediaFormat.KEY_MIME):

  • 比特率 (MediaFormat.KEY_BIT_RATE):

  • 颜色格式(MediaFormat.KEY_COLOR_FORMAT):

  • 关键帧(MediaFormat.KEY_I_FRAME_INTERVAL):

Audio中必设参数

  • MIME 类型 (MediaFormat.KEY_MIME):

  • 采样率 (MediaFormat.KEY_SAMPLE_RATE):

  • 声道数 (MediaFormat.KEY_CHANNEL_COUNT):

  • 音频编码格式 ( MediaFormat.KEY_AAC_PROFILE)

  • 比特率 (MediaFormat.KEY_BIT_RATE)

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要创建NV21编码器,您需要使用MediaCodec类和MediaFormat类来设置编码器的参数和进行编码。 以下是创建NV21编码器的步骤: 1. 创建一个MediaCodec对象,并将其配置为编码器模式: ``` MediaCodec encoder = MediaCodec.createEncoderByType("video/avc"); ``` 2. 创建一个MediaFormat对象,并设置相关参数: ``` MediaFormat format = MediaFormat.createVideoFormat("video/avc", width, height); format.setInteger(MediaFormat.KEY_BIT_RATE, bitRate); format.setInteger(MediaFormat.KEY_FRAME_RATE, frameRate); format.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420SemiPlanar); format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, iFrameInterval); ``` 其中,设置颜色格式为`MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420SemiPlanar`表示使用NV21颜色格式。 3. 配置编码器,并启动: ``` encoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); encoder.start(); ``` 4. 将NV21数据输入到编码器中: ``` byte[] inputBuffer = getInputBufferFromEncoder(encoder); inputBuffer.put(nv21Data); encoder.queueInputBuffer(inputBufferIndex, 0, nv21Data.length, presentationTimeUs, 0); ``` 5. 获取编码后的数据: ``` MediaCodec.BufferInfo bufferInfo = new MediaCodec.BufferInfo(); int outputBufferIndex = encoder.dequeueOutputBuffer(bufferInfo, TIMEOUT_US); if (outputBufferIndex >= 0) { ByteBuffer outputBuffer = encoder.getOutputBuffer(outputBufferIndex); byte[] encodedData = new byte[bufferInfo.size]; outputBuffer.get(encodedData); // 处理编码后的数据 encoder.releaseOutputBuffer(outputBufferIndex, false); } ``` 注意,NV21数据需要进行格式转换成为编码器所支持的YUV格式,例如`COLOR_FormatYUV420SemiPlanar`。 以上是创建NV21编码器的基本步骤,具体实现可能会因设备和系统版本而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值