最近碰到一个需求是,播放(采集端是海康摄像头),websocket流推过来的,解码后的字节。在网上找了一圈没有播放byte字节的。
然后在网上找到了一个播放器,https://github.com/wanliyang1990/wlmedia这个人写的挺好的。这个可定制化很好。先用起来,回头再研究人家实现逻辑。
用法很简单
在readBuffer返回你要播放的解码byte就播放出来了。
wlMedia.setOnMediaInfoListener(new WlOnMediaInfoListener() {
@Override
public void onPrepared() {
wlMedia.start();
}
@Override
public void onError(int i, String s) {
}
@Override
public void onComplete(WlComplete wlComplete, String s) {
}
@Override
public void onTimeInfo(double v,double v1) {
}
@Override
public void onSeekFinish() {
}
@Override
public void onLoopPlay(int i) {
}
@Override
public void onLoad(boolean b) {
}
@Override
public byte[] decryptBuffer(byte[] bytes) {
return new byte[0];
}
@Override
public byte[] readBuffer(int i) {
while (0 ==quere.size() && !isFirst) {
try {
Thread.sleep(500);
}catch (InterruptedException e) {
e.printStackTrace();
}
}
if (quere.size() !=0) {
byte[] cByte =quere.get(0);
quere.remove(0);
Log.d("AAA",quere.size() +"BBBBBB");
return cByte;
}
Log.d("AAA","AAA1111");
return null;
}
@Override
public void onPause(boolean b) {
}
});
字节是通过websocket获取的,先把websocket获取的字节,然后放到一个集合里边,(类似生产者消费者,模式)顺利读出来摄像头的解码后的字节视频