返回信息流我做的是一个基于android平台的应用。服务器进行udp组播TS流,然后用终端收流,解码(OMX硬解码)播放。现在的情况是终端的硬解码能力有限,运行时出现“write speed is to fast that maybe overwirte some content has not be readed”的问题。
经查资料我找到一个方法,使用2个buffer,思路是:
buffer1用来储存服务器发送的流。
buffer2从buffer1中已一定速度取流送给终端解码。
但是我认为buffer1的数据满了过后,不是会造成丢包么(TS流很大,不可能把buffer1设置成跟TS流大小相当吧?)
求大牛指导!
这是一条镜像帖。来源:北邮人论坛 / cpp / #73122同步于 2013/8/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
C语言 socket udp
QQobe
2013/8/8镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
这要看你的硬件解码效率和网络传输平均速率的比值了,举个最简单的例子:理想情况下,硬件解码效率为每秒可以处理1MB数据,网络传输的平均速率为2MB/s,那么你至少需要开辟一个1/2 TS流大小的缓冲空间用来存放接收到的数据。
【 在 QQobe 的大作中提到: 】
: 我做的是一个基于android平台的应用。服务器进行udp组播TS流,然后用终端收流,解码(OMX硬解码)播放。现在的情况是终端的硬解码能力有限,运行时出现“write speed is to fast that maybe overwirte some content has not be readed”的问题。
: 经查资料我找到一个方法,使用2个buffer,思路是:
: buffer1用来储存服务器发送的流。
: ...................
恩,我明白你的意思,但是我还有个疑问。
第1S时间内,传输了2M数据,终端处理了1M,buffer里剩1M
第2S时间内,传输了2M数据,终端处理了1M,buffer里剩3M
这样buffer里的数据不是越来越多么,最后就满了,这个怎么处理。
【 在 tonyjansan 的大作中提到: 】
: 这要看你的硬件解码效率和网络传输平均速率的比值了,举个最简单的例子:理想情况下,硬件解码效率为每秒可以处理1MB数据,网络传输的平均速率为2MB/s,那么你至少需要开辟一个1/2 TS流大小的缓冲空间用来存放接收到的数据。
: