srs提供的rtmp客户端srs-librtmp

1、RTMP握手协议

    查看链接 : https://github.com/ossrs/srs/wiki/v1_CN_RTMPHandshake

2、下载srs-master.zip版本

    下载地址:https://github.com/ossrs/srs/tree/master

3、SRS可以直接导出一个srs-librtmp的project,编译成.h和.a使用。或者导出为.h和.cpp,一个大文件,具体的过程如下:

3.1、  SRS在2.0提供了导出srs-librtmp的编译选项,可以将srs-librtmp单独导出为project,单独编译生成.h和.a,方便在linux和windows平台编译。

    (1)下载srs后,解压,进入目录

srs提供的rtmp客户端srs-librtmp_第1张图片

       (2)SRS将srs-librtmp导出为独立可以make的项目,生成.a静态库和.h头文件,以及生成了srs-librtmp的所有实例。

dir=/home/test/srs-librtmp &&
rm -rf $dir &&
./configure --export-librtmp-project=$dir &&
cd $dir && make &&
./objs/research/librtmp/srs_play rtmp://ossrs.net/live/livestream

说明:
//执行该命令在相应的目录
//dir 为自己定义,生成的目录

(3)结果

3.2 直接导出为一个文件,提供了简单的使用实例,运行实例

(1)操作命令:

dir=/home/TEST/srs-librtmp &&
rm -rf $dir &&
./configure --export-librtmp-single=$dir &&
cd $dir && gcc example.c srs_librtmp.cpp -g -O0 -lstdc++ -o example && 
strip example && ./example

说明:
//example 为一个简单的运行demo

(2)结果

srs提供的rtmp客户端srs-librtmp_第2张图片

4.Windows下编译srs-librtmp

srs-librtmp可以只依赖于c++和socket,可以在windows下编译。

先使用SRS导出srs-librtmp(srs_librtmp.cpp和  srs_librtmp.h)如结果(2),将.h和cpp添加在自己的工程,然后在vs中编译,修改遇到的编译错误问题即可。

5.Windows下测试

#include 
#include "srs_librtmp.h"
int main(int argc, char** argv)
{
	srs_rtmp_t rtmp;

	printf("Example for srs-librtmp\n");
	printf("SRS(ossrs) client librtmp library.\n");
	printf("version: %d.%d.%d\n", srs_version_major(), srs_version_minor(), srs_version_revision());

	rtmp = srs_rtmp_create("rtmp://192.168.151.46:1935/live/livestream");
	srs_human_trace("create rtmp success");

	/*
	test
	*/
	int avx_success = -1;
	avx_success = srs_rtmp_handshake(rtmp);
	printf("srs_rtmp_handshake ,avx_success = %d\n", avx_success);
	if (avx_success != 0)
	{
		srs_human_trace("1 ortmp simple handshake fail");
	}
	srs_human_trace("1 ortmp simple handshake success");
	avx_success = srs_rtmp_connect_app(rtmp);
	if (avx_success != 0)
	{
		srs_human_trace("2 ortmp connect vhost/app fail");
	}
	srs_human_trace("2 ortmp connect vhost/app success");
	avx_success = srs_rtmp_publish_stream(rtmp);
	if (avx_success != 0)
	{
		srs_human_trace("3 ortmp publish stream fail");
	}
	srs_human_trace("3 ortmp publish stream success");

	while (1)
	{
	     //send data
	}	
	srs_rtmp_destroy(rtmp);

	return 0;
}

 

你可能感兴趣的:(流媒体/其他)