当前位置: 技术问答>linux和unix
视频在网络上该如何传输?
来源: 互联网 发布时间:2016-08-31
本文导语: 小弟请教一个关于Socket编程的问题,我通过摄像头采集了Jpeg图像,在本地可以时时的播放。我如果需要通过网络传输该如何实现?刚学习socket编程,对网络这一块也不是很熟悉。传文件的话是应该怎么传?是图片一...
小弟请教一个关于Socket编程的问题,我通过摄像头采集了Jpeg图像,在本地可以时时的播放。我如果需要通过网络传输该如何实现?刚学习socket编程,对网络这一块也不是很熟悉。传文件的话是应该怎么传?是图片一桢一桢的传过去吗?socket编程中那个send函数一次传输有数据量大小的限制吗?我用omap3530能够直接对jpeg文件进行压缩处理吗?
还遇到了一个奇怪的问题,在局域网内PC机与PC机能够传输文本文件,为什么移植到板子上传输就出错了啊?
printf("Please Input File Name On Server:");
scanf("%s", file_name);
printf("file_name length: %dn",strlen(file_name));
//bzero(buffer, BUFFER_SIZE);
strncpy(buffer, file_name,(strlen(file_name)>BUFFER_SIZE?BUFFER_SIZE:strlen(file_name)+1));
printf("buffer to send: %sn",buffer);
send(client_socket,buffer,4,0);
// fp_send = fopen(file_name,"r");
fp_send = fopen("sor","r");
if(NULL == fp_send )
{
printf("File:t%s Not Foundn", file_name);
}
else
{
bzero(buffer, BUFFER_SIZE);
printf("buffer zero: %sn",buffer);
file_block_length = fread(buffer,1,BUFFER_SIZE,fp_send);
在PC机与PC机之间通信没问题。
但是在板子上就不行了:
send函数是将要传的文件名传给客户端,但是如果加上这个send的话,fopen可以打开文件,但是fread的返回值为0,文件是有数据的。
还遇到了一个奇怪的问题,在局域网内PC机与PC机能够传输文本文件,为什么移植到板子上传输就出错了啊?
printf("Please Input File Name On Server:");
scanf("%s", file_name);
printf("file_name length: %dn",strlen(file_name));
//bzero(buffer, BUFFER_SIZE);
strncpy(buffer, file_name,(strlen(file_name)>BUFFER_SIZE?BUFFER_SIZE:strlen(file_name)+1));
printf("buffer to send: %sn",buffer);
send(client_socket,buffer,4,0);
// fp_send = fopen(file_name,"r");
fp_send = fopen("sor","r");
if(NULL == fp_send )
{
printf("File:t%s Not Foundn", file_name);
}
else
{
bzero(buffer, BUFFER_SIZE);
printf("buffer zero: %sn",buffer);
file_block_length = fread(buffer,1,BUFFER_SIZE,fp_send);
在PC机与PC机之间通信没问题。
但是在板子上就不行了:
send函数是将要传的文件名传给客户端,但是如果加上这个send的话,fopen可以打开文件,但是fread的返回值为0,文件是有数据的。
|
是通过可以通过socket传输,当然你也可以通过一张一张jpeg图片传输.
当然这样会传输数据量非常大的,因为我们如果需要眼睛需要看动态的1s需要显示24张图片.
所以鉴于,这样,就引入了图象压缩算法,我们常用的有MPEG和h.264.这种压缩算法.
这个时候,我们在传输这种两种压缩格式的数据时,任何公司都是自定协议,导致设备之间不能兼容.后来就定义了一个标准的通信协议这就是RTSP协议族.
整个视频流的标准就是这么来的.
所以如果能自己压缩算法,就不需要MEPG,h.264.
如果你能自己写通信协议就不需要知道RTSP.
所以我们可以随心所欲,想怎么整都可以,
哦,对了,忘了给你说,这样的话你还要开发支持你压缩算法和传输协议的播放器.
就是这样 ;)
希望你能明白,你现在最需要什么。
当然这样会传输数据量非常大的,因为我们如果需要眼睛需要看动态的1s需要显示24张图片.
所以鉴于,这样,就引入了图象压缩算法,我们常用的有MPEG和h.264.这种压缩算法.
这个时候,我们在传输这种两种压缩格式的数据时,任何公司都是自定协议,导致设备之间不能兼容.后来就定义了一个标准的通信协议这就是RTSP协议族.
整个视频流的标准就是这么来的.
所以如果能自己压缩算法,就不需要MEPG,h.264.
如果你能自己写通信协议就不需要知道RTSP.
所以我们可以随心所欲,想怎么整都可以,
哦,对了,忘了给你说,这样的话你还要开发支持你压缩算法和传输协议的播放器.
就是这样 ;)
希望你能明白,你现在最需要什么。