1. 程式人生 > >基於srs-librtmp釋出H.264視訊檔案到伺服器

基於srs-librtmp釋出H.264視訊檔案到伺服器

開發平臺:Linux

說明:srs提供了釋出H.264的例子,在例子程式碼檔案為srs_h264_raw_publish.c,例子呼叫srs-librtmp函式庫即可實現H.264檔案釋出到伺服器。

srs-librtmp為VS2010工程,在Linux下可以直接使用原始碼,在srs-librtmp工程只使用到srs_librtmp.cppsrs_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原始碼地址: