正在显示
6 个修改的文件
包含
96 行增加
和
4 行删除
| @@ -155,6 +155,7 @@ Supported operating systems and hardware: | @@ -155,6 +155,7 @@ Supported operating systems and hardware: | ||
| 155 | 1. Support embeded http server for hls(live/vod) | 155 | 1. Support embeded http server for hls(live/vod) |
| 156 | 1. Support stream ingester using ffmpeg. | 156 | 1. Support stream ingester using ffmpeg. |
| 157 | 1. Support ingest RTSP(RTP, SDP) stream to RTMP. | 157 | 1. Support ingest RTSP(RTP, SDP) stream to RTMP. |
| 158 | +1. [dev] Support dvr(record live to flv file for vod) | ||
| 158 | 1. [plan] Support file to hls vod stream. | 159 | 1. [plan] Support file to hls vod stream. |
| 159 | 1. [plan] Support system full utest on gtest. | 160 | 1. [plan] Support system full utest on gtest. |
| 160 | 1. [plan] Support RTMP edge server, push/pull stream from any RTMP server | 161 | 1. [plan] Support RTMP edge server, push/pull stream from any RTMP server |
| @@ -162,7 +163,6 @@ Supported operating systems and hardware: | @@ -162,7 +163,6 @@ Supported operating systems and hardware: | ||
| 162 | 1. [no-plan] Support adobe RTMFP(flash p2p) protocol. | 163 | 1. [no-plan] Support adobe RTMFP(flash p2p) protocol. |
| 163 | 1. [no-plan] Support adobe flash refer/token/swf verification. | 164 | 1. [no-plan] Support adobe flash refer/token/swf verification. |
| 164 | 1. [no-plan] Support adobe amf3 codec. | 165 | 1. [no-plan] Support adobe amf3 codec. |
| 165 | -1. [no-plan] Support dvr(record live to vod file) | ||
| 166 | 1. [no-plan] Support encryption: RTMPE/RTMPS, HLS DRM | 166 | 1. [no-plan] Support encryption: RTMPE/RTMPS, HLS DRM |
| 167 | 1. [no-plan] Support RTMPT, http to tranverse firewalls | 167 | 1. [no-plan] Support RTMPT, http to tranverse firewalls |
| 168 | 1. [no-plan] Support file source, transcoding file to live stream | 168 | 1. [no-plan] Support file source, transcoding file to live stream |
| @@ -134,9 +134,12 @@ done | @@ -134,9 +134,12 @@ done | ||
| 134 | # apply the default value when user donot specified. | 134 | # apply the default value when user donot specified. |
| 135 | ##################################################################################### | 135 | ##################################################################################### |
| 136 | # if http-xxxx specified, open the SRS_HTTP_PARSER | 136 | # if http-xxxx specified, open the SRS_HTTP_PARSER |
| 137 | -if [ $SRS_HTTP_CALLBACK = YES ]; then SRS_HTTP_PARSER=YES; fi | ||
| 138 | -if [ $SRS_HTTP_SERVER = YES ]; then SRS_HTTP_PARSER=YES; fi | ||
| 139 | -if [ $SRS_HTTP_API = YES ]; then SRS_HTTP_PARSER=YES; fi | 137 | +__compile_http_parser=NO |
| 138 | +if [ $SRS_HTTP_CALLBACK = YES ]; then SRS_HTTP_PARSER=YES;__compile_http_parser=YES; fi | ||
| 139 | +if [ $SRS_HTTP_SERVER = YES ]; then SRS_HTTP_PARSER=YES;__compile_http_parser=YES; fi | ||
| 140 | +if [ $SRS_HTTP_API = YES ]; then SRS_HTTP_PARSER=YES;__compile_http_parser=YES; fi | ||
| 141 | +# if no http specified, disable http parser | ||
| 142 | +if [ $__compile_http_parser = NO ]; then SRS_HTTP_PARSER=NO; fi | ||
| 140 | 143 | ||
| 141 | # if transcode specified, try ffmpeg if possible. | 144 | # if transcode specified, try ffmpeg if possible. |
| 142 | if [ $SRS_TRANSCODE = YES ]; then if [ $SRS_FFMPEG_TOOL = RESERVED ]; then SRS_FFMPEG_TOOL=YES; fi fi | 145 | if [ $SRS_TRANSCODE = YES ]; then if [ $SRS_FFMPEG_TOOL = RESERVED ]; then SRS_FFMPEG_TOOL=YES; fi fi |
| @@ -169,6 +172,7 @@ if [ $SRS_ARM_UBUNTU12 = YES ]; then | @@ -169,6 +172,7 @@ if [ $SRS_ARM_UBUNTU12 = YES ]; then | ||
| 169 | if [ $SRS_PI = RESERVED ]; then SRS_PI=NO; fi | 172 | if [ $SRS_PI = RESERVED ]; then SRS_PI=NO; fi |
| 170 | # for arm, always set to static link. | 173 | # for arm, always set to static link. |
| 171 | SRS_STATIC=YES | 174 | SRS_STATIC=YES |
| 175 | +# defaults for x86/x64 | ||
| 172 | else | 176 | else |
| 173 | if [ $SRS_HLS = RESERVED ]; then SRS_HLS=YES; fi | 177 | if [ $SRS_HLS = RESERVED ]; then SRS_HLS=YES; fi |
| 174 | if [ $SRS_DVR = RESERVED ]; then SRS_DVR=YES; fi | 178 | if [ $SRS_DVR = RESERVED ]; then SRS_DVR=YES; fi |
| @@ -25,5 +25,44 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -25,5 +25,44 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 25 | 25 | ||
| 26 | #ifdef SRS_AUTO_DVR | 26 | #ifdef SRS_AUTO_DVR |
| 27 | 27 | ||
| 28 | +#include <srs_kernel_error.hpp> | ||
| 29 | + | ||
| 30 | +SrsDvr::SrsDvr(SrsSource* source) | ||
| 31 | +{ | ||
| 32 | + _source = source; | ||
| 33 | +} | ||
| 34 | + | ||
| 35 | +SrsDvr::~SrsDvr() | ||
| 36 | +{ | ||
| 37 | +} | ||
| 38 | + | ||
| 39 | +int SrsDvr::on_publish(SrsRequest* req) | ||
| 40 | +{ | ||
| 41 | + int ret = ERROR_SUCCESS; | ||
| 42 | + return ret; | ||
| 43 | +} | ||
| 44 | + | ||
| 45 | +void SrsDvr::on_unpublish() | ||
| 46 | +{ | ||
| 47 | +} | ||
| 48 | + | ||
| 49 | +int SrsDvr::on_meta_data(SrsAmf0Object* metadata) | ||
| 50 | +{ | ||
| 51 | + int ret = ERROR_SUCCESS; | ||
| 52 | + return ret; | ||
| 53 | +} | ||
| 54 | + | ||
| 55 | +int SrsDvr::on_audio(SrsSharedPtrMessage* audio) | ||
| 56 | +{ | ||
| 57 | + int ret = ERROR_SUCCESS; | ||
| 58 | + return ret; | ||
| 59 | +} | ||
| 60 | + | ||
| 61 | +int SrsDvr::on_video(SrsSharedPtrMessage* video) | ||
| 62 | +{ | ||
| 63 | + int ret = ERROR_SUCCESS; | ||
| 64 | + return ret; | ||
| 65 | +} | ||
| 66 | + | ||
| 28 | #endif | 67 | #endif |
| 29 | 68 |
| @@ -31,6 +31,47 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -31,6 +31,47 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 31 | 31 | ||
| 32 | #ifdef SRS_AUTO_DVR | 32 | #ifdef SRS_AUTO_DVR |
| 33 | 33 | ||
| 34 | +class SrsSource; | ||
| 35 | +class SrsRequest; | ||
| 36 | +class SrsAmf0Object; | ||
| 37 | +class SrsSharedPtrMessage; | ||
| 38 | + | ||
| 39 | +/** | ||
| 40 | +* dvr(digital video recorder) to record RTMP stream to flv file. | ||
| 41 | +* TODO: FIXME: add utest for it. | ||
| 42 | +*/ | ||
| 43 | +class SrsDvr | ||
| 44 | +{ | ||
| 45 | +private: | ||
| 46 | + SrsSource* _source; | ||
| 47 | +public: | ||
| 48 | + SrsDvr(SrsSource* source); | ||
| 49 | + virtual ~SrsDvr(); | ||
| 50 | +public: | ||
| 51 | + /** | ||
| 52 | + * publish stream event, continue to write the m3u8, | ||
| 53 | + * for the muxer object not destroyed. | ||
| 54 | + */ | ||
| 55 | + virtual int on_publish(SrsRequest* req); | ||
| 56 | + /** | ||
| 57 | + * the unpublish event, only close the muxer, donot destroy the | ||
| 58 | + * muxer, for when we continue to publish, the m3u8 will continue. | ||
| 59 | + */ | ||
| 60 | + virtual void on_unpublish(); | ||
| 61 | + /** | ||
| 62 | + * get some information from metadata, it's optinal. | ||
| 63 | + */ | ||
| 64 | + virtual int on_meta_data(SrsAmf0Object* metadata); | ||
| 65 | + /** | ||
| 66 | + * mux the audio packets to ts. | ||
| 67 | + */ | ||
| 68 | + virtual int on_audio(SrsSharedPtrMessage* audio); | ||
| 69 | + /** | ||
| 70 | + * mux the video packets to ts. | ||
| 71 | + */ | ||
| 72 | + virtual int on_video(SrsSharedPtrMessage* video); | ||
| 73 | +}; | ||
| 74 | + | ||
| 34 | #endif | 75 | #endif |
| 35 | 76 | ||
| 36 | #endif | 77 | #endif |
| @@ -494,15 +494,19 @@ int SrsHttpHandler::res_error(SrsSocket* skt, SrsHttpMessage* req, int code, str | @@ -494,15 +494,19 @@ int SrsHttpHandler::res_error(SrsSocket* skt, SrsHttpMessage* req, int code, str | ||
| 494 | return res_flush(skt, ss); | 494 | return res_flush(skt, ss); |
| 495 | } | 495 | } |
| 496 | 496 | ||
| 497 | +#ifdef SRS_AUTO_HTTP_API | ||
| 497 | SrsHttpHandler* SrsHttpHandler::create_http_api() | 498 | SrsHttpHandler* SrsHttpHandler::create_http_api() |
| 498 | { | 499 | { |
| 499 | return new SrsApiRoot(); | 500 | return new SrsApiRoot(); |
| 500 | } | 501 | } |
| 502 | +#endif | ||
| 501 | 503 | ||
| 504 | +#ifdef SRS_AUTO_HTTP_SERVER | ||
| 502 | SrsHttpHandler* SrsHttpHandler::create_http_stream() | 505 | SrsHttpHandler* SrsHttpHandler::create_http_stream() |
| 503 | { | 506 | { |
| 504 | return new SrsHttpRoot(); | 507 | return new SrsHttpRoot(); |
| 505 | } | 508 | } |
| 509 | +#endif | ||
| 506 | 510 | ||
| 507 | SrsHttpMessage::SrsHttpMessage() | 511 | SrsHttpMessage::SrsHttpMessage() |
| 508 | { | 512 | { |
| @@ -263,11 +263,15 @@ public: | @@ -263,11 +263,15 @@ public: | ||
| 263 | /** | 263 | /** |
| 264 | * create http api resource handler. | 264 | * create http api resource handler. |
| 265 | */ | 265 | */ |
| 266 | +#ifdef SRS_AUTO_HTTP_API | ||
| 266 | static SrsHttpHandler* create_http_api(); | 267 | static SrsHttpHandler* create_http_api(); |
| 268 | +#endif | ||
| 267 | /** | 269 | /** |
| 268 | * create http stream resource handler. | 270 | * create http stream resource handler. |
| 269 | */ | 271 | */ |
| 272 | +#ifdef SRS_AUTO_HTTP_SERVER | ||
| 270 | static SrsHttpHandler* create_http_stream(); | 273 | static SrsHttpHandler* create_http_stream(); |
| 274 | +#endif | ||
| 271 | }; | 275 | }; |
| 272 | 276 | ||
| 273 | /** | 277 | /** |
-
请 注册 或 登录 后发表评论