1. Protocolo de protocolo de enlace RTMP
Ver enlace: https://github.com/ossrs/srs/wiki/v1_CN_RTMPHandshake
2. Descargue la versión srs-master.zip
Enlace de descarga: https://github.com/ossrs/srs/tree/master
3. SRS puede exportar directamente un proyecto srs-librtmp y compilarlo en .hy .a para su uso. O exportar como .hy .cpp, un archivo grande, el proceso específico es el siguiente:
3.1. SRS 2.0 proporciona una opción de compilación para exportar srs-librtmp. Puede exportar srs-librtmp como un proyecto y compilar por separado para generar .hy .a, lo cual es conveniente para compilar en plataformas Linux y Windows.
(1) Después de descargar srs, descomprima e ingrese al directorio
(2) SRS exporta srs-librtmp como un proyecto make independiente, genera bibliotecas estáticas .a y archivos de encabezado .h, y genera todas las instancias de 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) Resultados
3.2 Exportar directamente a un archivo, proporcionando un caso de uso simple, caso de ejecución
(1) Comando de operación:
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) Resultados
4. Compile srs-librtmp en Windows
srs-librtmp solo puede depender de c ++ y socket, y se puede compilar en Windows.
Primero use SRS para exportar srs-librtmp (srs_librtmp.cpp y srs_librtmp.h) como resultado (2), agregue .hy cpp a su propio proyecto, luego compile en VS y modifique el error de compilación que encuentre.
5. Prueba en Windows
#include <stdio.h>
#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;
}