高分求教!解决问题还高分悬赏,我是新手,自己写android socket 接收视频流,为什么只显示一帧

我的服务器(arm linux)一直给android发送320*240的位图视频流。
下面给出android机器的run线程代码,我发现我只能提取出inputstream第一帧的数据,因为第二次读取就返回bBitmap 为空,报空指针错误
但是我如果加上if(bBitmap !=null)判断吧,第二次inputstream.read空可以跳过,但是第三次虽然不为空,显示还是的是第一次的那个画面,我下面的这个程序的现象是:第一帧->黑屏(因为加上if(bBitmap !=null)第二次根本没有执行draw,所以黑屏)->第一帧->黑屏->第一帧->黑屏.....
我查看了,服务器一直发送数据,android机器也一直接收socket的数据,但是就是死活读不出来,我接收的socket数据哪去了,小弟第一次用android开发,有笑话之处,望不要笑话
public void paintview()
{
sHolder = surfaceView.getHolder();
Paint paint=new Paint();
bCanvas=null;
bCanvas = new Canvas();

// 从Socket对象中得到OutputStream对象
try
{

if(inputStream==null)
Log.v("安卓手机:inputStream is null", "message");
else
{
Log.v("安卓手机:inputStream is not null", "message");
}
inputStream =socket.getInputStream();
Arrays.fill(totalBuffer,(byte)0);
Arrays.fill(buffer,(byte)0);//
length=0;
for(int lastLength = 0; ((length = inputStream.read(buffer,0,(W*H*3-length))) >0);
lastLength = lastLength + length)
{
System.arraycopy(buffer, 0,totalBuffer, lastLength, length);

}
}
catch (Exception e)
{
e.printStackTrace();
}
bBitmap=null;
if(totalBuffer==null)
Log.v("安卓手机:totalBuffer is null", "message");
else
{
Log.v("安卓手机:totalBuffer is not null", "message");
}
bBitmap = BitmapFactory.decodeByteArray(totalBuffer, 0, totalBuffer.length);
Log.v("安卓手机", "message");
bCanvas = sHolder.lockCanvas(new Rect(0,0,320,240));
Log.v("安卓手机:sHolder.lockCanvas", "message");
if(bBitmap==null)
Log.v("安卓手机:bBitmap is null", "message");
else
{
Log.v("安卓手机:bBimap is not null", "message");
}
if(bBitmap!=null)
bCanvas.drawBitmap(bBitmap, 0, 0, paint);
Log.v("安卓手机:drawBitmap", "message");
sHolder.unlockCanvasAndPost(bCanvas);

大概看了一下你的程序,还没仔细分析,也不知道你的服务器端程序是什么样子,不过这边有几点提醒:
1.不知道你从服务器端传过来的数据到底是什么格式,如果是Bitmap对象的格式,估计一帧的大小不会是W*H*3,起码还有一些图片的头信息之类的,就像bitmap文件里面不会只存像素数据,还会有一些版本号,颜色表,长宽之类的数据。
2.bitmap得到null并不是说没有取到数据,很有可能是取到的数据不符合bitmap对象格式,你可以把收到的数据在转换成bitmap之前dump出来看看,跟服务器端发的数据是不是吻合。
3.综合1和2,第一帧能显示,是因为有bitmap文件头,虽然最后的像素数据不足,但是影响不大,第二帧黑屏很可能是把原来应该属于第一帧的最后的一些数据放到了第二帧的开头,造成认不了bitmap头,于是不能解析。至于第三帧为什么跟第一帧一样,还要再仔细分析你的程序,包括客户端的其他代码以及服务器端。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-05
你说只是绘制一帧,那我和你说说视频播放的原理,视频数据获取就不说了,你得到了转换成每一帧的图片,然后一帧一帧的绘制形成动画(视频),那你说你现在只绘制了一帧,就看这一帧是开始的还是最后结束的,开始的话,那就说明你的循环绘制没起作用(可以自己加线程),问题的源头你就找到了,剩下的就自己解局了;如果是最后一帧,那就是你代码错了
第2个回答  2012-04-05
...首先佩服楼主不怕内存泄露..

然后楼主你的代码里面最后显示的貌似就是那个bBitmap吧..那只是你提取出来的第一帧的图片..不是视频..然后你每次运行paintview这个类的时候都会把bBitmap重新赋值一次NULL那就是你为什么第二次进去会报空指针的原因了
第3个回答  2012-04-06
我去楼主,你怎么那么麻烦你不知道安卓里有这个 BitmapFactory.decodeBitmap(inputstream is);这个东西么本回答被提问者采纳

高分求教!解决问题还高分悬赏,我是新手,自己写android socket...
1.不知道你从服务器端传过来的数据到底是什么格式,如果是Bitmap对象的格式,估计一帧的大小不会是W*H*3,起码还有一些图片的头信息之类的,就像bitmap文件里面不会只存像素数据,还会有一些版本号,颜色表,长宽之类的数据。2.bitmap得到null并不是说没有取到数据,很有可能是取到的数据不符合bitm...

我有好几个问题都悬赏了高分,为什么没有一个人回答
emmm...原因可能有以下几点:第一、你的问题难度太大太专业,一般用户无法提供合理准确的回答,毕竟不是所有人都是专家;第二、你的提问在你不知情的情况下被系统检测违规删除了,别人看不到自然也没法提供回答;第三、你提问提交的时间相对较短,能够回答的用户暂时还没看到,再等等或许会有人来回答。

大家能否帮助我,高分悬赏几点疑问!
***的答案是“为了中华民族的伟大复兴”,好多家长的答案是“为了光宗耀祖”,好多老师的答案是“为了你们将来的前途,作家郑渊洁说:“我小学毕业一样当作家”,比尔•盖茨说;“大学退学也能世界首富”在经过了三年清华的磨练,我现在的答案是“求学这条路是我们通向成功的捷径”。这里我举几个例子证明这个观点:我在...

我是上海应届毕业生,两个问题,高分悬赏!
1.这个问题请自己考虑,最好结合你自己的职业生涯规划。估计你是研究生毕业生来说,如果你有继续深造的打算,那么建议选择到院校择业,近水楼台,而且可支配时间多。如果还不能确定是否会继续深造的,那么可以选择在上海工作,看事业发展前景再决定是否深造。当然如果你比较在意收入和生活问题的,这个选择就...

...我的手机是MT15i ,高分悬赏 解决了问题 追加分数。
1、可能是rom问题,建议重刷试试。2、豌豆荚那种需要看软件本是否支持,如果软件本身不支持,你强制安装也安装不上的,自然会安装失败。

大三下学期入党问题,懂的进,高分悬赏,非诚勿扰
一般的说入党积极分子到预备党员是一个分水岭,只要过了,预备党员到党员基本上就差不多.入党的这个问题实际上只要把辅导员的关系搞好就差不多,现在这个社会是人情社会,需要把握人际关系,入党也只不过是搞个形式,和上级搞好关系就没问题,要经常和辅导员谈话,必须要主动,多对自己的辅导员表示关心,这样他...

三方协议违约,没付违约金,档案问题,高分悬赏
首先,三方协议主要是两个用途,一个是转户口,一个是存档案。你找的单位如果是事业单位、公务员、教师之类的能让你有北京户口的单位,那么就会要求你签三方协议,这样你的户口和档案都能留北京了。如果你要进的单位是私企或者外企等单位,与这个三方基本没多大关系,因为它不会帮你调户口,你的档案也...

...是自己的下属,请同龄的女性帮助。高分悬赏,如有帮助,除高分外,必 ...
你考虑的问题还是对的,毕竟你们是上司和下属的关系,感情和工作不能混谈,公归公,私归私。不然别人也瞧不起。以你目前的情况千万不要草率的表白,因为你还不了解她,而你又是她的上司,万一不好的话大家就尴尬了,欲速则不达。你可以从她身边朋友,同事下手,通过别人探探她的口风,比如有没有...

高分悬赏学习问题,一定要找到原因!大家都来帮帮我吧!感谢至极!
而不如人意的原因是多方面的,有外部的原因如学校的学习氛围不好,自己坐在后面没能很好听课(教学方式有问题);另外还有内部的原因,你有尝试用自己的力量去改变不利的一切,却往往力不从心,不是你方法有不对,问题在于没有把你方法计划好好的实施,要去实行好,最重要的取决于你耐心,恒心,不...

高分悬赏!!女孩子为什么不让我看她的视频?
有几种可能 第一就是还不够信任你 第二就是她其实不漂亮 第二条的背后她有一个想法 不仅是她的自卑,因为你太帅了嘛,还有就是她觉得不给你看的话,你在想象里会把她想得更美丽 至少说明她很珍惜自己在你心里的形象 或者不看也可以的话,又有何不可呢?

相似回答