增加PCM样本数据大小

时间:2015-08-10 04:16:07

标签: android mediaextractor

我注意到在使用MediaExtractor时,由于音频样本比电影的视频帧多得多,因此使用One-Image-Decode / One-SoundSample-Decode / One-Image-Encode / OneSound-SoundSample-Encode不是一个好的策略,因为它总是有更多的音频样本排队等待编码。

使用MediaExtractor使自定义PCM样本大小大于4096字节(或者上下文的大小)时,这是否可行? 8192会很棒。

有关:

int size = videoExtractor.ReadSampleData (decoderInputBuffer, 0);

大小永远是4096.

这意味着对于44100,立体声,16位声音,这代表+ - 23ms,这或多或少是每秒43.5个音频样本,有时是每秒24个图像。将PCM的样本大小加倍将允许视频始终具有相同或更多的音频以备编码。这甚至可以让我以24 fps同步它并使用AudioTrack播放音频样本,这样就可以实现我的渲染的实时预览。

我试过了:

inputFormat.SetInteger (MediaFormat.KeyMaxInputSize, 8192);

但它看起来更像是一个优化设置来设置解码器的最小内部缓冲区。

尺寸是否可自定义?

[编辑]

目前,我在排队时为每个视频帧编码两个音频样本,并且视频编码速度的性能变化不明显。正如预测的那样几乎在同一时间结束。

while (_shouldCopyAudio && encodeMoreAudioThanVideo++ < 2) {
    [...]
    audioEncoder.QueueInputBuffer (encoderInputBufferIndex, 0, size, 
    pcmChunk.PresentationTimeUs, (MediaCodecBufferFlags)pcmChunk.Flags);

0 个答案:

没有答案