我正在尝试调整ExtractDecodeEditEncodeMuxTest.java中的代码,以便从通过Cordova的device.capture.captureVideo录制的mp4中提取音频和视频,解码音频,编辑解码的音频样本,编码音频,并将音频复用回来用视频再次保存为mp4.
我的第一次尝试只是提取,解码,编码和复用音频而不尝试编辑任何音频样本 - 如果我能做到这一点,我相当确定我可以根据需要编辑解码的样本.我不需要编辑视频,因此我假设我可以简单地使用MediaExtractor来提取和复用视频轨道.
但是,我遇到的问题是我似乎无法正确地获得音频解码/编码过程.不断发生的事情是,复用器从提取的视频轨道和提取的 - >解码 - >编码的音频轨道创建mp4,但是当视频播放正常时,音频以短暂的噪声开始,然后看起来像是最后一个几秒钟的音频数据正常播放(但在视频的开头),然后静音播放视频的其余部分.
一些相关领域:
private MediaFormat audioFormat;
private MediaFormat videoFormat;
private int videoTrackIndex = -1;
private int audioTrackIndex = -1;
private static final int MAX_BUFFER_SIZE = 256 * 1024;
// parameters for the audio encoder
private static final String OUTPUT_AUDIO_MIME_TYPE = "audio/mp4a-latm"; // Advanced Audio Coding
private static final int OUTPUT_AUDIO_CHANNEL_COUNT = 2; // Must match the input stream. not using this, getting from input format
private static final int OUTPUT_AUDIO_BIT_RATE = …Run Code Online (Sandbox Code Playgroud)