diff --git a/trunk/auto/depends.sh b/trunk/auto/depends.sh index 3fc86b0b0..227fc901d 100755 --- a/trunk/auto/depends.sh +++ b/trunk/auto/depends.sh @@ -549,22 +549,22 @@ fi ##################################################################################### # cherrypy for http hooks callback, CherryPy-3.2.4 ##################################################################################### -if [[ -f ${SRS_OBJS}/CherryPy-3.2.4/setup.py ]]; then - echo "CherryPy-3.2.4 is ok."; -else - require_sudoer "install CherryPy-3.2.4" - echo "Installing CherryPy-3.2.4"; - ( - sudo rm -rf ${SRS_OBJS}/CherryPy-3.2.4 && cd ${SRS_OBJS} && - unzip -q ../3rdparty/CherryPy-3.2.4.zip && cd CherryPy-3.2.4 && - sudo python setup.py install - ) -fi -# check status -ret=$?; if [[ $ret -ne 0 ]]; then echo "build CherryPy-3.2.4 failed, ret=$ret"; exit $ret; fi -if [ ! -f ${SRS_OBJS}/CherryPy-3.2.4/setup.py ]; then echo "build CherryPy-3.2.4 failed."; exit -1; fi - if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then + if [[ -f ${SRS_OBJS}/CherryPy-3.2.4/setup.py ]]; then + echo "CherryPy-3.2.4 is ok."; + else + require_sudoer "install CherryPy-3.2.4" + echo "Installing CherryPy-3.2.4"; + ( + sudo rm -rf ${SRS_OBJS}/CherryPy-3.2.4 && cd ${SRS_OBJS} && + unzip -q ../3rdparty/CherryPy-3.2.4.zip && cd CherryPy-3.2.4 && + sudo python setup.py install + ) + fi + # check status + ret=$?; if [[ $ret -ne 0 ]]; then echo "build CherryPy-3.2.4 failed, ret=$ret"; exit $ret; fi + if [ ! -f ${SRS_OBJS}/CherryPy-3.2.4/setup.py ]; then echo "build CherryPy-3.2.4 failed."; exit -1; fi + echo "Link players to cherrypy static-dir" rm -rf research/api-server/static-dir/players && ln -sf `pwd`/research/players research/api-server/static-dir/players && diff --git a/trunk/auto/generate-srs-librtmp-single.sh b/trunk/auto/generate-srs-librtmp-single.sh index 149092050..34e7470f1 100755 --- a/trunk/auto/generate-srs-librtmp-single.sh +++ b/trunk/auto/generate-srs-librtmp-single.sh @@ -59,7 +59,7 @@ ret=$?; if [[ $ret -ne 0 ]]; then echo -e "${RED}failed to generate the srs_librtmp.cpp${BLACK}" exit $ret fi -# module to cpp files. +# module to hpp files. function build_module_hpp() { echo "build files ${SRS_LIBRTMP_OBJS} to $FILE" diff --git a/trunk/configure b/trunk/configure index 7c5282d61..7813835e6 100755 --- a/trunk/configure +++ b/trunk/configure @@ -154,9 +154,9 @@ MODULE_ID="KERNEL" MODULE_DEPENDS=("CORE") ModuleLibIncs=(${SRS_OBJS_DIR}) MODULE_FILES=("srs_kernel_error" "srs_kernel_log" "srs_kernel_buffer" - "srs_kernel_utility" "srs_kernel_flv" "srs_kernel_codec" "srs_kernel_file" + "srs_kernel_utility" "srs_kernel_flv" "srs_kernel_codec" "srs_kernel_io" "srs_kernel_consts" "srs_kernel_aac" "srs_kernel_mp3" "srs_kernel_ts" - "srs_kernel_stream" "srs_kernel_balance" "srs_kernel_mp4" "srs_kernel_io") + "srs_kernel_stream" "srs_kernel_balance" "srs_kernel_mp4" "srs_kernel_file") KERNEL_INCS="src/kernel"; MODULE_DIR=${KERNEL_INCS} . auto/modules.sh KERNEL_OBJS="${MODULE_OBJS[@]}" # diff --git a/trunk/src/libs/srs_librtmp.cpp b/trunk/src/libs/srs_librtmp.cpp index ffe5618e8..2ac6972ca 100644 --- a/trunk/src/libs/srs_librtmp.cpp +++ b/trunk/src/libs/srs_librtmp.cpp @@ -72,6 +72,7 @@ struct Context std::string app; std::string stream; std::string param; + srs_url_schema schema; // extra request object for connect to server, NULL to ignore. SrsRequest* req; @@ -122,6 +123,7 @@ struct Context h264_sps_changed = false; h264_pps_changed = false; rtimeout = stimeout = SRS_CONSTS_NO_TMMS; + schema = srs_url_schema_forbidden; } virtual ~Context() { srs_freep(req); @@ -741,11 +743,22 @@ int srs_rtmp_connect_app(srs_rtmp_t rtmp) srs_assert(rtmp != NULL); Context* context = (Context*)rtmp; - - string tcUrl = srs_generate_tc_url( - context->ip, context->vhost, context->app, context->port, - context->param - ); + + string tcUrl; + switch(context->schema) { + case srs_url_schema_normal: + tcUrl=srs_generate_normal_tc_url(context->ip, context->vhost, context->app, context->port); + break; + case srs_url_schema_via: + tcUrl=srs_generate_via_tc_url(context->ip, context->vhost, context->app, context->port); + break; + case srs_url_schema_vis: + case srs_url_schema_vis2: + tcUrl=srs_generate_vis_tc_url(context->ip, context->vhost, context->app, context->port); + break; + default: + break; + } if ((ret = context->rtmp->connect_app( context->app, tcUrl, context->req, true)) != ERROR_SUCCESS) @@ -774,10 +787,21 @@ int srs_rtmp_connect_app2(srs_rtmp_t rtmp, srs_assert(rtmp != NULL); Context* context = (Context*)rtmp; - string tcUrl = srs_generate_tc_url( - context->ip, context->vhost, context->app, context->port, - context->param - ); + string tcUrl; + switch(context->schema) { + case srs_url_schema_normal: + tcUrl=srs_generate_normal_tc_url(context->ip, context->vhost, context->app, context->port); + break; + case srs_url_schema_via: + tcUrl=srs_generate_via_tc_url(context->ip, context->vhost, context->app, context->port); + break; + case srs_url_schema_vis: + case srs_url_schema_vis2: + tcUrl=srs_generate_vis_tc_url(context->ip, context->vhost, context->app, context->port); + break; + default: + break; + } std::string sip, sserver, sprimary, sauthors, sversion; @@ -795,34 +819,14 @@ int srs_rtmp_connect_app2(srs_rtmp_t rtmp, return ret; } -int srs_rtmp_connect_app3(srs_rtmp_t rtmp, enum srs_url_schema sus) +int srs_rtmp_set_schema(srs_rtmp_t rtmp, enum srs_url_schema schema) { int ret = ERROR_SUCCESS; srs_assert(rtmp != NULL); Context* context = (Context*)rtmp; - - string tcUrl; - switch(sus) { - case srs_url_schema_normal: - tcUrl=srs_generate_normal_tc_url(context->ip, context->vhost, context->app, context->port); - break; - case srs_url_schema_via: - tcUrl=srs_generate_via_tc_url(context->ip, context->vhost, context->app, context->port); - break; - case srs_url_schema_vis: - case srs_url_schema_vis2: - tcUrl=srs_generate_vis_tc_url(context->ip, context->vhost, context->app, context->port); - break; - default: - break; - } - - if ((ret = context->rtmp->connect_app( - context->app, tcUrl, context->req, true)) != ERROR_SUCCESS) - { - return ret; - } + + context->schema = schema; return ret; } diff --git a/trunk/src/libs/srs_librtmp.hpp b/trunk/src/libs/srs_librtmp.hpp index 9ea69509e..6e36ee648 100644 --- a/trunk/src/libs/srs_librtmp.hpp +++ b/trunk/src/libs/srs_librtmp.hpp @@ -79,10 +79,13 @@ extern "C"{ * srs_url_schema_vis : rtmp://ip:port/app/stream?vhost=xxx * srs_url_schema_vis2 : rtmp://ip:port/app/stream?domain=xxx */ -enum srs_url_schema{ +enum srs_url_schema +{ + // Forbidden. + srs_url_schema_forbidden = 0, // Normal RTMP URL, the vhost put in host field, using DNS to resolve the server ip. // For example, rtmp://vhost:port/app/stream - srs_url_schema_normal = 0, + srs_url_schema_normal, // VIA(vhost in app), the vhost put in app field. // For example, rtmp://ip:port/vhost/app/stream srs_url_schema_via, @@ -225,16 +228,13 @@ extern int srs_rtmp_connect_app2(srs_rtmp_t rtmp, char srs_primary[128], char srs_authors[128], char srs_version[32], int* srs_id, int* srs_pid ); - + /** -* connect to rtmp vhost/app -* category: publish/play -* previous: handshake -* next: publish or play -* -* @return 0, success; otherswise, failed. -*/ -extern int srs_rtmp_connect_app3(srs_rtmp_t rtmp, enum srs_url_schema sus); + * Set the schema of URL when connect to server. + * @param schema, The schema of URL, @see srs_url_schema. + * @return 0, success; otherswise, failed. + */ +extern int srs_rtmp_set_schema(srs_rtmp_t rtmp, enum srs_url_schema schema); /** * play a live/vod stream.