查看完整版本: [-- 求助,关于视频传输的。。 --]

QTCN开发网 -> Qt基础编程 -> 求助,关于视频传输的。。 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

chengbei15 2015-06-14 10:13

求助,关于视频传输的。。

我现在用Tcp传输视频帧 我的方法是用QDataStream把一个帧放进一个QByteArray里面然后把QByteArray发送,发现视频不流畅,验证了下,问题就是把一个帧放进一个QByteArray竟然要用500ms ,就是这500ms导致视频卡顿,请问是我程序问题还是什么原因呢,怎么才可以解决呢,对了一帧大小是30多KB。。
包头省略了,以下是代码:
QByteArray block;
QDataStream out(&block,QIODevice::WriteOnly);
out<<wimage;

lmaxmax 2015-06-14 13:20
压缩和缓冲区。。。。。。

lmaxmax 2015-06-14 13:47
https://github.com/vlc-qt/
这个对你可能有用

chengbei15 2015-06-14 23:36
lmaxmax:压缩和缓冲区。。。。。。
 (2015-06-14 13:20) 

你好 可以具体点吗?

chengbei15 2015-06-14 23:37
lmaxmax:https://github.com/vlc-qt/
这个对你可能有用 (2015-06-14 13:47) 

我用的是OPENCV的。。 请问你知道我的问题怎么解决吗

dosmlp 2015-06-15 08:47
怎么会有500ms这么慢,一般我都是直接用TCPsocket的write函数,没有用数据流

firebolt 2015-06-15 11:16
chengbei15:我用的是OPENCV的。。 请问你知道我的问题怎么解决吗 (2015-06-14 23:37) 

opencv获得的视频原始数据还需要通过视频压缩算法进行压缩,然后用rtp封包,通过udp传输到指定地址(可以找个rtp库,一般都带传输部分),接收端收到rtp数据包,送人视频解码器解码,然后送入帧缓冲区,播放器根据视频pts对帧缓冲区的视频进行播放。大概就这个过程吧,实时视频数据最好用udp传输,否则会造成服务器拥塞,接收端还要根据网络情况做去抖动处理(jitterbuffer)。

20091001753 2015-06-15 12:20
视频与语音都是UDP传输,而且500ms你需要优化算法。

chengbei15 2015-06-15 17:13
firebolt:opencv获得的视频原始数据还需要通过视频压缩算法进行压缩,然后用rtp封包,通过udp传输到指定地址(可以找个rtp库,一般都带传输部分),接收端收到rtp数据包,送人视频解码器解码,然后送入帧缓冲区,播放器根据视频pts对帧缓冲区的视频进行播放。大概就这个过程吧,实时视频数据 .. (2015-06-15 11:16) 

你好,我刚刚把帧转换成JPEG格式再发出去,竟然只要30ms了。。
这是为什么呢,我没转换前一帧大小是30多K,转换后一帧也有20多K阿,但是为什么那个时间差了十倍呢,,

chengbei15 2015-06-15 17:18
firebolt:opencv获得的视频原始数据还需要通过视频压缩算法进行压缩,然后用rtp封包,通过udp传输到指定地址(可以找个rtp库,一般都带传输部分),接收端收到rtp数据包,送人视频解码器解码,然后送入帧缓冲区,播放器根据视频pts对帧缓冲区的视频进行播放。大概就这个过程吧,实时视频数据 .. (2015-06-15 11:16) 

看错了,压缩后只剩2K多了。。

firebolt 2015-06-15 18:27
chengbei15:看错了,压缩后只剩2K多了。。 (2015-06-15 17:18) 

jpeg差不多就着样了。jpeg2000动态会好些,但是码流也很高。

13641064384 2017-09-25 17:25
dosmlp:怎么会有500ms这么慢,一般我都是直接用TCPsocket的write函数,没有用数据流 (2015-06-15 08:47) 

您知道怎么实时的接收纯码流的方法吗?不用协议


查看完整版本: [-- 求助,关于视频传输的。。 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled