LINUX下RTSP编程实践(linuxrtsp编程)

随着视频应用的火热,RTSP(Real Time Streaming Protocol,实时流媒体协议)在数据交换中被大量使用, 并能满足实时的应用状况, 在一些产品的设计上也是十分重要的.

假如我们需要开发一个多媒体应用,采用Linux系统,那么在实现RTSP通信上需要花费一定的精力。本文就就通过LINUX下RTSP编程实践来阐述LINUX实现RTSP协议的一些重要的操作。

首先,在实现RTSP协议的过程中,需要用到网络编程的技术,而这是在LINUX系统中非常容易实现的,实现基本的网络编程。只需使用一些简单的函数,就可以完成基本的TCP/UDP通信。以下为一个TCP通信的编程例子:

#include

#include

#include

#include

#include

#include

#include

#include

#include

int main(int argc , char *argv[])

{

int sockfd,n;

int portno = 8888;

struct sockaddr_in serv_addr;

/*Create a socket */

sockfd = socket(AF_INET,SOCK_STREAM,0);

/* Set all the values in the serv_addr to zero*/

bzero((char*)&serv_addr,sizeof(serv_addr));

/*Assign IP address and port number*/

serv_addr.sin_family = AF_INET;

serv_addr.sin_addr.s_addr = inet_addr(“127.0.0.1”);

serv_addr.sin_port = htons(portno);

/* Connect to Server */

connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr));

return 0;

}

其次,在实现RTSP协议时,分析RTSP传输协议非常重要,在实现RTSP传输时需注意一些服务器端和客户端需要进行的动作,以及服务器端与客户端之间的传输通信。

由于RTSP是一种实时媒体传输协议,整体上包括客户端首先发送DESCRIBE请求(定义资源,以获取资源的构成和支持的传输方法),

sting message = “DESCRIBE rtsp://127.0.0.1/test.mkv RTSP/1.0\n”+

“CSeq: 2\n”+

“User-Agent: LibVLC/3.0.4 (LIVE555 Streaming Media v2016.02.22)\n\n”;

if( send(sockfd,message,sizeof(message.c_str()),0)

{

printf(“Send failed\n”);

return 1;

}

发送SETUP请求(给服务器指定客户端的接收端口,并将服务器上的某一资源绑定到某一客户端),

string message = “SETUP rtsp://127.0.0.1/test.mkv/trackID=1 RTSP/1.0\n”+

“CSeq: 3\n”+

“User-Agent: LibVLC/3.0.4 (LIVE555 Streaming Media v2016.02.22)\n\n”;

if( send(sockfd,message,sizeof(message.c_str()),0)

{

printf(“Send failed\n”);

return 1;

}

以及PLAY请求(启动播放)等操作。

string message = “PLAY rtsp://127.0.0.1/test.mkv RTSP/1.0\n”+

“CSeq: 4\n”+

“User-Agent: LibVLC/3.0.4 (LIVE555 Streaming Media v2016.02.22)\n\n”;

if( send(sockfd,message,sizeof(message.c_str()),0)

{

printf(“Send failed\n”);

return 1;

}

总的来说,LINUX下的RTSP编程从网络编程和RTSP协议的分析两个方面来实现,编程实践结合上也是有必要的指导。


数据运维技术 » LINUX下RTSP编程实践(linuxrtsp编程)