在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的官方文檔以獲取更多詳細信息和示例代碼。