Flo*_*ian 4 audio video android mediacodec
我根据Google提供的示例转码视频(https://android.googlesource.com/platform/cts/+/master/tests/tests/media/src/android/media/cts/ExtractDecodeEditEncodeMuxTest.java)
基本上,MP4文件的转码有效,但在某些手机上我得到了一些奇怪的结果.例如,如果我在HTC One上对带有音频的视频进行转码,则代码不会出现任何错误,但文件无法在手机上播放.如果我有一个10秒的视频,它会跳到几乎最后一秒,而你只有一些噼啪声.如果您使用VLC播放视频,则音轨将完全静音.
我没有在编码/解码方面改变代码,并且相同的代码在Nexus 5或MotoX上给出了正确的结果.
任何人都知道为什么它可能在特定设备上失败?
最好的,谢谢你,弗洛里安
我通过以下更改使其在Android 4.4.2设备中运行:
Run Code Online (Sandbox Code Playgroud)private static final int OUTPUT_AUDIO_AAC_PROFILE = MediaCodecInfo.CodecProfileLevel.AACObjectLC;
Run Code Online (Sandbox Code Playgroud)MediaFormat outputAudioFormat = MediaFormat.createAudioFormat(OUTPUT_AUDIO_MIME_TYPE, inputFormat.getInteger(MediaFormat.KEY_SAMPLE_RATE), inputFormat.getInteger(MediaFormat.KEY_CHANNEL_COUNT));
timestampUs X < lastTimestampUs X for Audio track错误)Run Code Online (Sandbox Code Playgroud)if (audioPresentationTimeUsLast == 0) { // Defined in the begining of method audioPresentationTimeUsLast = audioEncoderOutputBufferInfo.presentationTimeUs; } else { if (audioPresentationTimeUsLast > audioEncoderOutputBufferInfo.presentationTimeUs) { audioEncoderOutputBufferInfo.presentationTimeUs = audioPresentationTimeUsLast + 1; } audioPresentationTimeUsLast = audioEncoderOutputBufferInfo.presentationTimeUs; } // Write data if (audioEncoderOutputBufferInfo.size != 0) { muxer.writeSampleData(outputAudioTrack, encoderOutputBuffer, audioEncoderOutputBufferInfo); }
希望这可以帮助...
| 归档时间: |
|
| 查看次数: |
2068 次 |
| 最近记录: |