基於srs-librtmp釋出H.264視訊檔案到伺服器
阿新 • • 發佈:2019-02-12
開發平臺:Linux
說明:srs提供了釋出H.264的例子,在例子程式碼檔案為srs_h264_raw_publish.c,例子呼叫srs-librtmp函式庫即可實現H.264檔案釋出到伺服器。
srs-librtmp為VS2010工程,在Linux下可以直接使用原始碼,在srs-librtmp工程只使用到srs_librtmp.cpp和srs_librtmp.h。
工程的目錄為:
沒有使用Makefile,直接編譯命令為
gcc -g -O0 srs_h264_raw_publish.c srs_librtmp.cpp -o publisher -lstdc++
編譯會有兩處錯誤,修改如下:
#include "../../objs/include/srs_librtmp.h"
改為
#include "srs_librtmp.h"
#define RTMP_SIG_SRS_PRIMARY RTMP_SIG_SRS_KEY"/"VERSION_STABLE_BRANCH #define RTMP_SIG_SRS_HANDSHAKE RTMP_SIG_SRS_KEY"("RTMP_SIG_SRS_VERSION")" #define RTMP_SIG_SRS_VERSION SRS_XSTR(VERSION_MAJOR)"."SRS_XSTR(VERSION_MINOR)"."SRS_XSTR(VERSION_REVISION) #define RTMP_SIG_SRS_SERVER RTMP_SIG_SRS_KEY"/"RTMP_SIG_SRS_VERSION"("RTMP_SIG_SRS_CODE")"
改為
#define RTMP_SIG_SRS_PRIMARY RTMP_SIG_SRS_KEY//"/"VERSION_STABLE_BRANCH #define RTMP_SIG_SRS_HANDSHAKE RTMP_SIG_SRS_KEY"("RTMP_SIG_SRS_VERSION")" #define RTMP_SIG_SRS_VERSION SRS_XSTR(VERSION_MAJOR)//"."SRS_XSTR(VERSION_MINOR)"."SRS_XSTR(VERSION_REVISION) #define RTMP_SIG_SRS_SERVER RTMP_SIG_SRS_KEY//"/"RTMP_SIG_SRS_VERSION"("RTMP_SIG_SRS_CODE")"
修改後再次編譯,編譯通過後會生成可執行檔案publisher,把H.264檔案放到工程目錄。
使用下面命令釋出H.264檔案到伺服器
./publisher ./yourfile.h264 rtmp://yourserver/live/test 30
效果:
BUG:視訊卡頓,通關觀察資料,每發10幀就卡頓一次,正常發包的時間間隔為30ms左右,卡頓時的時間間隔為350ms左右。
srs_h264_raw_publish.c原始碼地址: