基于media-server简单的rtsp服务端实现

前言:学习一个协议总是枯燥乏味,如果能快速做出个小成品来,然后根据协议不断完善其功能,那就好多了。下面分享一个rtsp服务端的示例小程序,代码200多行,VLC和ffmpeg能正常拉多路流,适合新手探究rtsp协议,做rtsp服务器。

 

工程压缩包:下载链接(csdn: 简单rtsp服务端实现, 百度云盘:链接: https://pan.baidu.com/s/18BsIqEcvGY9cXw25iyub0A 提取码: 72hi ),包含以下代码,以及编译好的用到的media-server头文件和库文件,以及一段h264录像(做视频源)。

 

源码: 服务基于开源的media-server库在windows上实现,用来封装rtsp码流的数据包,信令部分直接固定字符串返回,配合wireshark抓包学rtsp协议很方便。

media-server源码链接:https://github.com/ireader/media-server

编译media-server需要用到sdk库,源码链接:https://github.com/ireader/sdk

主函数源码:

#include <iostream>
#include <WinSock2.h>
#include "rtspsession.h"

#pragma comment(lib, "winmm.lib")
#pragma comment(lib, "Iphlpapi.lib")
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "librtp.lib")

SOCKET Listener = 0;
std::vector<RtspSessionPtr> AllRtspSession;

int ListenLocalSvc(int port);

int main()
{
	std::cout << "hello rtsp server!" << std::endl;

	if (0 > ListenLocalSvc(554) ||
		0 > RtspSession::ReadSourceStream("miniH264.h264"))
	{
		return -1;
	}

	unsigned int startTime, usedTime;
	while (true)
	{
		startTime = GetTickCount();

		struct sockaddr_in clent;
		int len = sizeof(clent);

		int clientSocket = accept(Listener, (sockaddr*)&clent, &am
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值