Я разрабатываю приложение для Android, в котором мне нужно воспроизводить аудиопоток AAC в прямом эфире, поступающий с сервера Red5.
Я успешно декодировал аудиопоток с помощью javacv-ffmpeg.
Но моя проблема заключается в том, как воспроизводить аудио из декодированного образцы.
Я пробовал следующим образом
int len = avcodec.avcodec_decode_audio4( audio_c, samples_frame, got_frame, pkt2);
if (len <= 0){
this.pkt2.size(0);
} else {
if (this.got_frame[0] != 0) {
long pts = avutil.av_frame_get_best_effort_timestamp(samples_frame);
int sample_format = samples_frame.format();
int planes = avutil.av_sample_fmt_is_planar(sample_format) != 0 ? samples_frame.channels() : 1;
int data_size = avutil.av_samples_get_buffer_size((IntPointer)null, audio_c.channels(), samples_frame.nb_samples(), audio_c.sample_fmt(), 1) / planes;
if ((samples_buf == null) || (samples_buf.length != planes)) {
samples_ptr = new BytePointer[planes];
samples_buf = new Buffer[planes];
}
BytePointer ptemp = samples_frame.data(0);
BytePointer[] temp_ptr = new BytePointer[1];
temp_ptr[0] = ptemp.capacity(sample_size);
ByteBuffer btemp = ptemp.asBuffer();
byte[] buftemp = new byte[sample_size];
btemp.get(buftemp, 0, buftemp.length);
play the buftemp[] with audiotrack.....
}
Но из динамиков слышен только шум, требуется ли какая-либо обработка AVFrame
, которую мы получаем от decode_audio4(...)
.
Входящий аудиопоток правильно закодирован кодеком AAC.
Любая помощь, предложения приветствуются.
Заранее спасибо.