- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在我的应用程序中解码 AAC 编码文件并初始化用于初始化我的 MediaCodec
对象的 MediaFormat
对象,这是设置变量的代码对于 MediaFormat
对象
MediaExtractor mediaExtractor = new MediaExtractor();
try {
mediaExtractor.setDataSource(audioFilePath);
} catch (IOException e) {
return false;
}
Log.d(TAG, "Number of tracks in the file are:" + mediaExtractor.getTrackCount());
MediaFormat mediaFormat = mediaExtractor.getTrackFormat(0);
Log.d(TAG, "mediaFormat:" + mediaFormat.toString());
mSampleRate = mediaFormat.getInteger(MediaFormat.KEY_SAMPLE_RATE);
Log.d(TAG, "mSampleRate: " + mSampleRate);
mChannels = mediaFormat.getInteger(MediaFormat.KEY_CHANNEL_COUNT);
Log.d(TAG, "mChannels number of channels: " + mChannels);
// Reading the duration from the file and converting from micro seconds to milliseconds.
mDuration = (int) (mediaFormat.getLong(MediaFormat.KEY_DURATION) / 1000);
Log.d(TAG, "duration: " + mDuration);
// Getting the csd-0 info from the file ..
mCSDBuffer = mediaFormat.getByteBuffer("csd-0");
我面临的问题是语句 mCSDBuffer = mediaFormat.getByteBuffer("csd-0")
为某些设备上的同一文件获取了 null
。该应用程序正在生产中,我在 Android API 级别为 17、18 和 19 的 armabi-v7a/armabi
处理器设备上看到此错误,并且这些错误中的大部分都在三星设备上。有什么方向吗?
最佳答案
如果 csd-0
缓冲区为空,那么我希望它在传递到 MediaCodec 时仍能正确解码。如果您只是选择不将 csd-0
数据设置为 MediaCodec 的输入(如果它为 null),是否可以?一般来说,如果您直接将 MediaExtractor 输出通过管道传输到 MediaCodec,您应该能够对其进行解码。
尽管 MediaExtractor 输出的数据的实际格式并没有非常严格的规定,所以在实践中众所周知,一些制造商(主要是三星)以只有他们自己的解码器处理的方式改变了这种格式。参见例如https://code.google.com/p/android/issues/detail?id=74356对于另一个相同的情况。
理想情况下,Android CTS 测试会变得更加严格,以确保 MediaExtractor 的行为一致,允许其在更通用的上下文中使用,或者使用除 MediaCodec 之外的其他解码器。 (例如,对于当前的三星问题,您不能在一台设备上使用 MediaExtractor,通过网络将提取的数据发送到另一台设备并在那里解码。)
关于android - MediaFormat.getByteBuffer ("csd-0") 在某些设备上返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41014730/
本文整理了Java中com.sun.grizzly.util.WorkerThread.getByteBuffer()方法的一些代码示例,展示了WorkerThread.getByteBuffer()
我正在尝试在我的应用程序中解码 AAC 编码文件并初始化用于初始化我的 MediaCodec 对象的 MediaFormat 对象,这是设置变量的代码对于 MediaFormat 对象 MediaEx
我是一名优秀的程序员,十分优秀!