音视频 播放每次出现这个log信息 播放就会明显得卡顿一下 ,各位帮忙看下什么原因,该怎么处理啊 新手求指教

Aln_ 2016-07-21 10:21:12
public class AudioThread implements Runnable {
private final int AUDIO_BUF_SIZE = 160;
private final int FRAME_INFO_SIZE = 16;

@Override
public void run() {
System.out.printf("[%s] Start\n", Thread.currentThread().getName());

AVAPIs av = new AVAPIs();
byte[] frameInfo = new byte[FRAME_INFO_SIZE];
byte[] audioBuffer = new byte[AUDIO_BUF_SIZE];
int[] frameNumber = new int[1];
byte[] pcm = new byte[320];
audioCodec mAudioCodec = new audioCodec();

int size = AudioTrack.getMinBufferSize(8000,
AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT);
// MODE_IN_COMMUNICATION
AudioTrack mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, // 指定在流的类型
8000, AudioFormat.CHANNEL_OUT_MONO,// 设置输出声道为双声道立体声
AudioFormat.ENCODING_PCM_16BIT,// 设置音频数据块是8位还是16位
size*2 , AudioTrack.MODE_STREAM);
mAudioTrack.setStereoVolume(1.0f, 1.0f);// 设置当前音量大
mAudioTrack.play();

int ret;
int _playPositon = 0;
while (isAudioRecv.get()) {
ret = av.avCheckAudioBuf(avcodec.this.avindex.get());

if (ret < 0) {
// Same error codes as below
System.out.printf("[%s] avCheckAudioBuf() failed: %d\n",
Thread.currentThread().getName(), ret);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
continue;
} else if (ret < 3) {
try {
Thread.sleep(200);
continue;
} catch (InterruptedException e) {
System.out.println(e.getMessage());
continue;
}
}



mAudioTrack.stop();
mAudioTrack.release();
mAudioCodec = null;
}
}
...全文
1217 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
一酸秀才 2016-10-19
  • 打赏
  • 举报
回复
相同问题我也遇见了,请问楼主怎么解决? 10-19 14:58:51.087 9780-9929/com.mapsoft.board I/Vitamio[5.2.0][Player]: player running , send MEDIA_INFO 10-19 14:58:51.147 9780-9929/com.mapsoft.board I/Vitamio[5.2.0][Player]: player running , send MEDIA_INFO 10-19 14:58:51.157 9780-9924/com.mapsoft.board W/AudioTrack: releaseBuffer() track 0x71304e40 name=s:2339;n:4;f:-1 disabled due to previous underrun, restarting 10-19 14:58:51.227 9780-9929/com.mapsoft.board I/Vitamio[5.2.0][Player]: player running , send MEDIA_INFO 10-19 14:58:51.287 9780-9929/com.mapsoft.board I/Vitamio[5.2.0][Player]: player running , send MEDIA_INFO 10-19 14:58:51.347 9780-9929/com.mapsoft.board I/Vitamio[5.2.0][Player]: player running , send MEDIA_INFO 10-19 14:58:51.417 9780-9929/com.mapsoft.board I/Vitamio[5.2.0][Player]: player running , send MEDIA_INFO 类似这种日志!
Aln_ 2016-07-23
  • 打赏
  • 举报
回复
引用 2 楼 bomengwutao 的回复:
传入到audiotrack的pcm数据不连续,好长时间没有传入数据,就会导致audiotrack里面的track 被remove掉,再次传入数据的时候,又会重新创建track,你这个log就是重新创建track的时候打印出来的。不知你之前是不是有很多underrun这样的log?
嗯 每隔 五六秒 就有一个 或连续的 五六个 出来 ,这时候 视频就卡在哪里 不会动了 怎么解决啊 大神
bomengwutao 2016-07-22
  • 打赏
  • 举报
回复
传入到audiotrack的pcm数据不连续,好长时间没有传入数据,就会导致audiotrack里面的track 被remove掉,再次传入数据的时候,又会重新创建track,你这个log就是重新创建track的时候打印出来的。不知你之前是不是有很多underrun这样的log?
Aln_ 2016-07-21
  • 打赏
  • 举报
回复
W/AudioTrack: releaseBuffer() track 0xa5163080 disabled due to previous underrun, restarting 就是这个log 一出现 就会卡一下 接着正常播放 ,待会 又出现了 ...............

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧