在Linux环境下,使用librtmp库可以方便地实现RTMP(Real-Time Messaging Protocol)的推流和拉流功能。下面是一个简单的使用案例,展示如何使用librtmp库进行推流。
推流案例
sudo apt-get install librtmp-dev
在CentOS/RHEL系统上,可以使用以下命令安装:
sudo yum install librtmp-devel
rtmp_push.c
,并使用以下代码:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <rtmp.h>
int main(int argc, char *argv[]) {
RTMP *rtmp;
RTMP_Alloc();
// 连接到RTMP服务器
rtmp = RTMP_Init("rtmp://localhost/live/stream");
if (!rtmp) {
fprintf(stderr, "Failed to initialize RTMP\n");
return 1;
}
// 设置推流参数
RTMP_SetupURL(rtmp, "rtmp://localhost/live/stream");
RTMP_SetChunkSize(rtmp, 128);
RTMP_EnableWrite(rtmp);
// 打开文件以写入数据
FILE *file = fopen("output.flv", "wb");
if (!file) {
fprintf(stderr, "Failed to open output file\n");
RTMP_Free(rtmp);
return 1;
}
// 开始推流
char buffer[1024];
int len;
while (RTMP_Read(rtmp, buffer, sizeof(buffer)) > 0) {
fwrite(buffer, 1, len, file);
}
// 关闭文件和RTMP连接
fclose(file);
RTMP_Free(rtmp);
return 0;
}
gcc -o rtmp_push rtmp_push.c -lrtmp
./rtmp_push
这将开始将本地文件output.flv
推送到指定的RTMP服务器地址rtmp://localhost/live/stream
。请确保RTMP服务器正在运行并监听相应的地址和端口。
这只是一个简单的推流案例,实际应用中可能需要根据具体需求进行更多的配置和处理。你可以查阅librtmp的官方文档以获取更多详细信息和示例代码。