mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
remove src/main/srs_main_bandcheck.cpp, and --with-bwtc(use librtmp instead). 0.9.159
This commit is contained in:
parent
8984ba9d56
commit
fd1e8aa882
6 changed files with 16 additions and 896 deletions
|
@ -24,8 +24,6 @@ SRS_HTTP_CALLBACK=RESERVED
|
||||||
SRS_HTTP_SERVER=RESERVED
|
SRS_HTTP_SERVER=RESERVED
|
||||||
SRS_HTTP_API=RESERVED
|
SRS_HTTP_API=RESERVED
|
||||||
SRS_LIBRTMP=RESERVED
|
SRS_LIBRTMP=RESERVED
|
||||||
# srs-bandwidth-test client
|
|
||||||
SRS_BWTC=RESERVED
|
|
||||||
SRS_RESEARCH=RESERVED
|
SRS_RESEARCH=RESERVED
|
||||||
SRS_UTEST=RESERVED
|
SRS_UTEST=RESERVED
|
||||||
# tcmalloc
|
# tcmalloc
|
||||||
|
@ -195,7 +193,6 @@ function parse_user_option() {
|
||||||
--with-http-server) SRS_HTTP_SERVER=YES ;;
|
--with-http-server) SRS_HTTP_SERVER=YES ;;
|
||||||
--with-http-api) SRS_HTTP_API=YES ;;
|
--with-http-api) SRS_HTTP_API=YES ;;
|
||||||
--with-librtmp) SRS_LIBRTMP=YES ;;
|
--with-librtmp) SRS_LIBRTMP=YES ;;
|
||||||
--with-bwtc) SRS_BWTC=YES ;;
|
|
||||||
--with-research) SRS_RESEARCH=YES ;;
|
--with-research) SRS_RESEARCH=YES ;;
|
||||||
--with-utest) SRS_UTEST=YES ;;
|
--with-utest) SRS_UTEST=YES ;;
|
||||||
--with-gperf) SRS_GPERF=YES ;;
|
--with-gperf) SRS_GPERF=YES ;;
|
||||||
|
@ -217,7 +214,6 @@ function parse_user_option() {
|
||||||
--without-http-server) SRS_HTTP_SERVER=NO ;;
|
--without-http-server) SRS_HTTP_SERVER=NO ;;
|
||||||
--without-http-api) SRS_HTTP_API=NO ;;
|
--without-http-api) SRS_HTTP_API=NO ;;
|
||||||
--without-librtmp) SRS_LIBRTMP=NO ;;
|
--without-librtmp) SRS_LIBRTMP=NO ;;
|
||||||
--without-bwtc) SRS_BWTC=NO ;;
|
|
||||||
--without-research) SRS_RESEARCH=NO ;;
|
--without-research) SRS_RESEARCH=NO ;;
|
||||||
--without-utest) SRS_UTEST=NO ;;
|
--without-utest) SRS_UTEST=NO ;;
|
||||||
--without-gperf) SRS_GPERF=NO ;;
|
--without-gperf) SRS_GPERF=NO ;;
|
||||||
|
@ -334,7 +330,6 @@ function apply_user_presets() {
|
||||||
SRS_HTTP_SERVER=NO
|
SRS_HTTP_SERVER=NO
|
||||||
SRS_HTTP_API=NO
|
SRS_HTTP_API=NO
|
||||||
SRS_LIBRTMP=NO
|
SRS_LIBRTMP=NO
|
||||||
SRS_BWTC=NO
|
|
||||||
SRS_RESEARCH=NO
|
SRS_RESEARCH=NO
|
||||||
SRS_UTEST=NO
|
SRS_UTEST=NO
|
||||||
SRS_GPERF=NO
|
SRS_GPERF=NO
|
||||||
|
@ -359,7 +354,6 @@ function apply_user_presets() {
|
||||||
SRS_HTTP_SERVER=YES
|
SRS_HTTP_SERVER=YES
|
||||||
SRS_HTTP_API=YES
|
SRS_HTTP_API=YES
|
||||||
SRS_LIBRTMP=YES
|
SRS_LIBRTMP=YES
|
||||||
SRS_BWTC=YES
|
|
||||||
SRS_RESEARCH=YES
|
SRS_RESEARCH=YES
|
||||||
SRS_UTEST=YES
|
SRS_UTEST=YES
|
||||||
SRS_GPERF=NO
|
SRS_GPERF=NO
|
||||||
|
@ -384,7 +378,6 @@ function apply_user_presets() {
|
||||||
SRS_HTTP_SERVER=NO
|
SRS_HTTP_SERVER=NO
|
||||||
SRS_HTTP_API=NO
|
SRS_HTTP_API=NO
|
||||||
SRS_LIBRTMP=NO
|
SRS_LIBRTMP=NO
|
||||||
SRS_BWTC=NO
|
|
||||||
SRS_RESEARCH=NO
|
SRS_RESEARCH=NO
|
||||||
SRS_UTEST=NO
|
SRS_UTEST=NO
|
||||||
SRS_GPERF=NO
|
SRS_GPERF=NO
|
||||||
|
@ -409,7 +402,6 @@ function apply_user_presets() {
|
||||||
SRS_HTTP_SERVER=NO
|
SRS_HTTP_SERVER=NO
|
||||||
SRS_HTTP_API=NO
|
SRS_HTTP_API=NO
|
||||||
SRS_LIBRTMP=NO
|
SRS_LIBRTMP=NO
|
||||||
SRS_BWTC=NO
|
|
||||||
SRS_RESEARCH=NO
|
SRS_RESEARCH=NO
|
||||||
SRS_UTEST=NO
|
SRS_UTEST=NO
|
||||||
SRS_GPERF=NO
|
SRS_GPERF=NO
|
||||||
|
@ -434,7 +426,6 @@ function apply_user_presets() {
|
||||||
SRS_HTTP_SERVER=NO
|
SRS_HTTP_SERVER=NO
|
||||||
SRS_HTTP_API=NO
|
SRS_HTTP_API=NO
|
||||||
SRS_LIBRTMP=NO
|
SRS_LIBRTMP=NO
|
||||||
SRS_BWTC=NO
|
|
||||||
SRS_RESEARCH=NO
|
SRS_RESEARCH=NO
|
||||||
SRS_UTEST=NO
|
SRS_UTEST=NO
|
||||||
SRS_GPERF=NO
|
SRS_GPERF=NO
|
||||||
|
@ -459,7 +450,6 @@ function apply_user_presets() {
|
||||||
SRS_HTTP_SERVER=YES
|
SRS_HTTP_SERVER=YES
|
||||||
SRS_HTTP_API=YES
|
SRS_HTTP_API=YES
|
||||||
SRS_LIBRTMP=YES
|
SRS_LIBRTMP=YES
|
||||||
SRS_BWTC=NO
|
|
||||||
SRS_RESEARCH=NO
|
SRS_RESEARCH=NO
|
||||||
SRS_UTEST=NO
|
SRS_UTEST=NO
|
||||||
SRS_GPERF=NO
|
SRS_GPERF=NO
|
||||||
|
@ -485,7 +475,6 @@ function apply_user_presets() {
|
||||||
SRS_HTTP_SERVER=YES
|
SRS_HTTP_SERVER=YES
|
||||||
SRS_HTTP_API=YES
|
SRS_HTTP_API=YES
|
||||||
SRS_LIBRTMP=YES
|
SRS_LIBRTMP=YES
|
||||||
SRS_BWTC=NO
|
|
||||||
SRS_RESEARCH=NO
|
SRS_RESEARCH=NO
|
||||||
SRS_UTEST=NO
|
SRS_UTEST=NO
|
||||||
SRS_GPERF=NO
|
SRS_GPERF=NO
|
||||||
|
@ -510,7 +499,6 @@ function apply_user_presets() {
|
||||||
SRS_HTTP_SERVER=YES
|
SRS_HTTP_SERVER=YES
|
||||||
SRS_HTTP_API=YES
|
SRS_HTTP_API=YES
|
||||||
SRS_LIBRTMP=YES
|
SRS_LIBRTMP=YES
|
||||||
SRS_BWTC=YES
|
|
||||||
SRS_RESEARCH=NO
|
SRS_RESEARCH=NO
|
||||||
SRS_UTEST=YES
|
SRS_UTEST=YES
|
||||||
SRS_GPERF=NO
|
SRS_GPERF=NO
|
||||||
|
@ -535,7 +523,6 @@ function apply_user_presets() {
|
||||||
SRS_HTTP_SERVER=YES
|
SRS_HTTP_SERVER=YES
|
||||||
SRS_HTTP_API=YES
|
SRS_HTTP_API=YES
|
||||||
SRS_LIBRTMP=YES
|
SRS_LIBRTMP=YES
|
||||||
SRS_BWTC=YES
|
|
||||||
SRS_RESEARCH=YES
|
SRS_RESEARCH=YES
|
||||||
SRS_UTEST=YES
|
SRS_UTEST=YES
|
||||||
SRS_GPERF=NO
|
SRS_GPERF=NO
|
||||||
|
@ -560,7 +547,6 @@ function apply_user_presets() {
|
||||||
SRS_HTTP_SERVER=YES
|
SRS_HTTP_SERVER=YES
|
||||||
SRS_HTTP_API=YES
|
SRS_HTTP_API=YES
|
||||||
SRS_LIBRTMP=NO
|
SRS_LIBRTMP=NO
|
||||||
SRS_BWTC=NO
|
|
||||||
SRS_RESEARCH=NO
|
SRS_RESEARCH=NO
|
||||||
SRS_UTEST=NO
|
SRS_UTEST=NO
|
||||||
SRS_GPERF=NO
|
SRS_GPERF=NO
|
||||||
|
@ -585,7 +571,6 @@ function apply_user_presets() {
|
||||||
SRS_HTTP_SERVER=YES
|
SRS_HTTP_SERVER=YES
|
||||||
SRS_HTTP_API=YES
|
SRS_HTTP_API=YES
|
||||||
SRS_LIBRTMP=YES
|
SRS_LIBRTMP=YES
|
||||||
SRS_BWTC=YES
|
|
||||||
SRS_RESEARCH=NO
|
SRS_RESEARCH=NO
|
||||||
SRS_UTEST=YES
|
SRS_UTEST=YES
|
||||||
SRS_GPERF=NO
|
SRS_GPERF=NO
|
||||||
|
@ -610,7 +595,6 @@ function apply_user_presets() {
|
||||||
SRS_HTTP_SERVER=YES
|
SRS_HTTP_SERVER=YES
|
||||||
SRS_HTTP_API=YES
|
SRS_HTTP_API=YES
|
||||||
SRS_LIBRTMP=YES
|
SRS_LIBRTMP=YES
|
||||||
SRS_BWTC=NO
|
|
||||||
SRS_RESEARCH=NO
|
SRS_RESEARCH=NO
|
||||||
SRS_UTEST=NO
|
SRS_UTEST=NO
|
||||||
SRS_GPERF=NO
|
SRS_GPERF=NO
|
||||||
|
@ -635,7 +619,6 @@ function apply_user_presets() {
|
||||||
SRS_HTTP_SERVER=YES
|
SRS_HTTP_SERVER=YES
|
||||||
SRS_HTTP_API=YES
|
SRS_HTTP_API=YES
|
||||||
SRS_LIBRTMP=YES
|
SRS_LIBRTMP=YES
|
||||||
SRS_BWTC=NO
|
|
||||||
SRS_RESEARCH=NO
|
SRS_RESEARCH=NO
|
||||||
SRS_UTEST=NO
|
SRS_UTEST=NO
|
||||||
SRS_GPERF=NO
|
SRS_GPERF=NO
|
||||||
|
@ -694,7 +677,6 @@ function regenerate_options() {
|
||||||
if [ $SRS_HTTP_SERVER = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --with-http-server"; else SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --without-http-server"; fi
|
if [ $SRS_HTTP_SERVER = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --with-http-server"; else SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --without-http-server"; fi
|
||||||
if [ $SRS_HTTP_API = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --with-http-api"; else SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --without-http-api"; fi
|
if [ $SRS_HTTP_API = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --with-http-api"; else SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --without-http-api"; fi
|
||||||
if [ $SRS_LIBRTMP = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --with-librtmp"; else SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --without-librtmp"; fi
|
if [ $SRS_LIBRTMP = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --with-librtmp"; else SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --without-librtmp"; fi
|
||||||
if [ $SRS_BWTC = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --with-bwtc"; else SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --without-bwtc"; fi
|
|
||||||
if [ $SRS_RESEARCH = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --with-research"; else SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --without-research"; fi
|
if [ $SRS_RESEARCH = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --with-research"; else SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --without-research"; fi
|
||||||
if [ $SRS_UTEST = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --with-utest"; else SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --without-utest"; fi
|
if [ $SRS_UTEST = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --with-utest"; else SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --without-utest"; fi
|
||||||
if [ $SRS_GPERF = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --with-gperf"; else SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --without-gperf"; fi
|
if [ $SRS_GPERF = YES ]; then SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --with-gperf"; else SRS_AUTO_CONFIGURE="${SRS_AUTO_CONFIGURE} --without-gperf"; fi
|
||||||
|
@ -741,7 +723,6 @@ function check_option_conflicts() {
|
||||||
# user should disable all other features
|
# user should disable all other features
|
||||||
if [ $SRS_EMBEDED_CPU = YES ]; then
|
if [ $SRS_EMBEDED_CPU = YES ]; then
|
||||||
if [ $SRS_FFMPEG_TOOL = YES ]; then echo "ffmpeg for arm is not available, see: ./configure --help"; __check_ok=NO; fi
|
if [ $SRS_FFMPEG_TOOL = YES ]; then echo "ffmpeg for arm is not available, see: ./configure --help"; __check_ok=NO; fi
|
||||||
if [ $SRS_BWTC = YES ]; then echo "bwtc for arm is not available, see: ./configure --help"; __check_ok=NO; fi
|
|
||||||
if [ $SRS_RESEARCH = YES ]; then echo "research for arm is not available, see: ./configure --help"; __check_ok=NO; fi
|
if [ $SRS_RESEARCH = YES ]; then echo "research for arm is not available, see: ./configure --help"; __check_ok=NO; fi
|
||||||
if [ $SRS_GPERF = YES ]; then echo "gperf for arm is not available, see: ./configure --help"; __check_ok=NO; fi
|
if [ $SRS_GPERF = YES ]; then echo "gperf for arm is not available, see: ./configure --help"; __check_ok=NO; fi
|
||||||
if [ $SRS_GPERF_MC = YES ]; then echo "gmc for arm is not available, see: ./configure --help"; __check_ok=NO; fi
|
if [ $SRS_GPERF_MC = YES ]; then echo "gmc for arm is not available, see: ./configure --help"; __check_ok=NO; fi
|
||||||
|
@ -767,7 +748,6 @@ function check_option_conflicts() {
|
||||||
if [ $SRS_HTTP_SERVER = RESERVED ]; then echo "you must specifies the http-server, see: ./configure --help"; __check_ok=NO; fi
|
if [ $SRS_HTTP_SERVER = RESERVED ]; then echo "you must specifies the http-server, see: ./configure --help"; __check_ok=NO; fi
|
||||||
if [ $SRS_HTTP_API = RESERVED ]; then echo "you must specifies the http-api, see: ./configure --help"; __check_ok=NO; fi
|
if [ $SRS_HTTP_API = RESERVED ]; then echo "you must specifies the http-api, see: ./configure --help"; __check_ok=NO; fi
|
||||||
if [ $SRS_LIBRTMP = RESERVED ]; then echo "you must specifies the librtmp, see: ./configure --help"; __check_ok=NO; fi
|
if [ $SRS_LIBRTMP = RESERVED ]; then echo "you must specifies the librtmp, see: ./configure --help"; __check_ok=NO; fi
|
||||||
if [ $SRS_BWTC = RESERVED ]; then echo "you must specifies the bwtc, see: ./configure --help"; __check_ok=NO; fi
|
|
||||||
if [ $SRS_RESEARCH = RESERVED ]; then echo "you must specifies the research, see: ./configure --help"; __check_ok=NO; fi
|
if [ $SRS_RESEARCH = RESERVED ]; then echo "you must specifies the research, see: ./configure --help"; __check_ok=NO; fi
|
||||||
if [ $SRS_UTEST = RESERVED ]; then echo "you must specifies the utest, see: ./configure --help"; __check_ok=NO; fi
|
if [ $SRS_UTEST = RESERVED ]; then echo "you must specifies the utest, see: ./configure --help"; __check_ok=NO; fi
|
||||||
if [ $SRS_GPERF = RESERVED ]; then echo "you must specifies the gperf, see: ./configure --help"; __check_ok=NO; fi
|
if [ $SRS_GPERF = RESERVED ]; then echo "you must specifies the gperf, see: ./configure --help"; __check_ok=NO; fi
|
||||||
|
|
70
trunk/configure
vendored
70
trunk/configure
vendored
|
@ -115,7 +115,6 @@ SrsHttpServerSummaryColor="\${YELLOW}{disabled} "; if [ $SRS_HTTP_SERVER = YES ]
|
||||||
SrsHttpApiSummaryColor="\${YELLOW}{disabled} "; if [ $SRS_HTTP_API = YES ]; then SrsHttpApiSummaryColor="\${GREEN}"; fi
|
SrsHttpApiSummaryColor="\${YELLOW}{disabled} "; if [ $SRS_HTTP_API = YES ]; then SrsHttpApiSummaryColor="\${GREEN}"; fi
|
||||||
SrsLibrtmpSummaryColor="\${YELLOW}{disabled} "; if [ $SRS_LIBRTMP = YES ]; then SrsLibrtmpSummaryColor="\${GREEN}"; fi
|
SrsLibrtmpSummaryColor="\${YELLOW}{disabled} "; if [ $SRS_LIBRTMP = YES ]; then SrsLibrtmpSummaryColor="\${GREEN}"; fi
|
||||||
SrsLibrtmpSSLSummaryColor="\${YELLOW}{disabled} "; if [ $SRS_LIBRTMP = YES ]; then if [ $SRS_SSL = YES ]; then SrsLibrtmpSSLSummaryColor="\${GREEN}"; fi fi
|
SrsLibrtmpSSLSummaryColor="\${YELLOW}{disabled} "; if [ $SRS_LIBRTMP = YES ]; then if [ $SRS_SSL = YES ]; then SrsLibrtmpSSLSummaryColor="\${GREEN}"; fi fi
|
||||||
SrsBWTCSummaryColor="\${GREEN}{disabled} "; if [ $SRS_BWTC = YES ]; then SrsBWTCSummaryColor="\${GREEN}"; fi
|
|
||||||
SrsResearchSummaryColor="\${GREEN}{disabled} "; if [ $SRS_RESEARCH = YES ]; then SrsResearchSummaryColor="\${GREEN}"; fi
|
SrsResearchSummaryColor="\${GREEN}{disabled} "; if [ $SRS_RESEARCH = YES ]; then SrsResearchSummaryColor="\${GREEN}"; fi
|
||||||
SrsUtestSummaryColor="\${YELLOW}{disabled} "; if [ $SRS_UTEST = YES ]; then SrsUtestSummaryColor="\${GREEN}"; fi
|
SrsUtestSummaryColor="\${YELLOW}{disabled} "; if [ $SRS_UTEST = YES ]; then SrsUtestSummaryColor="\${GREEN}"; fi
|
||||||
SrsGperfSummaryColor="\${GREEN}{disabled} "; if [ $SRS_GPERF = YES ]; then SrsGperfSummaryColor="\${GREEN}"; fi
|
SrsGperfSummaryColor="\${GREEN}{disabled} "; if [ $SRS_GPERF = YES ]; then SrsGperfSummaryColor="\${GREEN}"; fi
|
||||||
|
@ -159,8 +158,6 @@ echo -e " | ${SrsGprofSummaryColor}gprof -b ./objs/srs gmon.out > gprof.
|
||||||
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
|
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
|
||||||
echo -e " |${SrsResearchSummaryColor}research: ./objs/research, api server, players, ts info, librtmp.\${BLACK}"
|
echo -e " |${SrsResearchSummaryColor}research: ./objs/research, api server, players, ts info, librtmp.\${BLACK}"
|
||||||
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
|
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
|
||||||
echo -e " |${SrsBWTCSummaryColor}bandwidth: ./objs/bandwidth, the bandwidth test client\${BLACK}"
|
|
||||||
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
|
|
||||||
echo -e " |${SrsUtestSummaryColor}utest: ./objs/srs_utest, the utest for srs\${BLACK}"
|
echo -e " |${SrsUtestSummaryColor}utest: ./objs/srs_utest, the utest for srs\${BLACK}"
|
||||||
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
|
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
|
||||||
echo -e " |${SrsLibrtmpSummaryColor}librtmp @see: https://github.com/winlinvip/simple-rtmp-server/wiki/SrsLibrtmp\${BLACK}"
|
echo -e " |${SrsLibrtmpSummaryColor}librtmp @see: https://github.com/winlinvip/simple-rtmp-server/wiki/SrsLibrtmp\${BLACK}"
|
||||||
|
@ -168,6 +165,10 @@ echo -e " |${SrsLibrtmpSummaryColor}librtmp: ./objs/include, ./objs/lib, the
|
||||||
echo -e " | ${SrsLibrtmpSummaryColor}simple handshake: publish/play stream with simple handshake to server\${BLACK}"
|
echo -e " | ${SrsLibrtmpSummaryColor}simple handshake: publish/play stream with simple handshake to server\${BLACK}"
|
||||||
echo -e " | ${SrsLibrtmpSSLSummaryColor}complex handshake: it's not required for client, recommend disable it\${BLACK}"
|
echo -e " | ${SrsLibrtmpSSLSummaryColor}complex handshake: it's not required for client, recommend disable it\${BLACK}"
|
||||||
echo -e " | ${SrsLibrtmpSummaryColor}librtmp-sample: ./research/librtmp, the srs-librtmp client sample\${BLACK}"
|
echo -e " | ${SrsLibrtmpSummaryColor}librtmp-sample: ./research/librtmp, the srs-librtmp client sample\${BLACK}"
|
||||||
|
echo -e " | ${SrsLibrtmpSummaryColor}librtmp-sample: ./research/librtmp/objs/srs_ingest_flv\${BLACK}"
|
||||||
|
echo -e " | ${SrsLibrtmpSummaryColor}librtmp-sample: ./research/librtmp/objs/srs_ingest_rtmp\${BLACK}"
|
||||||
|
echo -e " | ${SrsLibrtmpSummaryColor}librtmp-sample: ./research/librtmp/objs/srs_detect_rtmp\${BLACK}"
|
||||||
|
echo -e " | ${SrsLibrtmpSummaryColor}librtmp-sample: ./research/librtmp/objs/srs_bandwidth_check\${BLACK}"
|
||||||
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
|
echo -e " \${BLACK}+------------------------------------------------------------------------------------\${BLACK}"
|
||||||
echo -e " |\${GREEN}server: ./objs/srs -c conf/srs.conf, start the srs server\${BLACK}"
|
echo -e " |\${GREEN}server: ./objs/srs -c conf/srs.conf, start the srs server\${BLACK}"
|
||||||
echo -e " | ${SrsHlsSummaryColor}hls @see: https://github.com/winlinvip/simple-rtmp-server/wiki/DeliveryHLS\${BLACK}"
|
echo -e " | ${SrsHlsSummaryColor}hls @see: https://github.com/winlinvip/simple-rtmp-server/wiki/DeliveryHLS\${BLACK}"
|
||||||
|
@ -204,7 +205,7 @@ END
|
||||||
# makefile
|
# makefile
|
||||||
echo "generate Makefile"
|
echo "generate Makefile"
|
||||||
cat << END > ${SRS_MAKEFILE}
|
cat << END > ${SRS_MAKEFILE}
|
||||||
.PHONY: default _default install install-api help clean server bandwidth librtmp librtmp-sample utest _prepare_dir
|
.PHONY: default _default install install-api help clean server librtmp utest _prepare_dir
|
||||||
|
|
||||||
# install prefix.
|
# install prefix.
|
||||||
SRS_PREFIX=${SRS_PREFIX}
|
SRS_PREFIX=${SRS_PREFIX}
|
||||||
|
@ -230,24 +231,22 @@ fi
|
||||||
|
|
||||||
# the real entry for all platform.
|
# the real entry for all platform.
|
||||||
cat << END >> ${SRS_MAKEFILE}
|
cat << END >> ${SRS_MAKEFILE}
|
||||||
_default: bandwidth librtmp-sample utest
|
_default: server librtmp utest
|
||||||
@bash objs/_srs_build_summary.sh
|
@bash objs/_srs_build_summary.sh
|
||||||
|
|
||||||
help:
|
help:
|
||||||
@echo "Usage: make <help>|<clean>|<server>|<bandwidth>|<librtmp>|<librtmp-sample>|<utest>|<install>|<install-api>|<uninstall>"
|
@echo "Usage: make <help>|<clean>|<server>|<librtmp>|<utest>|<install>|<install-api>|<uninstall>"
|
||||||
@echo " help display this help menu"
|
@echo " help display this help menu"
|
||||||
@echo " clean cleanup project"
|
@echo " clean cleanup project"
|
||||||
@echo " server build the srs(simple rtmp server) over st(state-threads)"
|
@echo " server build the srs(simple rtmp server) over st(state-threads)"
|
||||||
@echo " bandwidth build the bandwidth test client tool."
|
@echo " librtmp build the client publish/play library, and samples"
|
||||||
@echo " librtmp build the client publish/play library."
|
|
||||||
@echo " librtmp-sample build the srs-librtmp sample"
|
|
||||||
@echo " utest build the utest for srs"
|
@echo " utest build the utest for srs"
|
||||||
@echo " install install srs to the prefix path"
|
@echo " install install srs to the prefix path"
|
||||||
@echo " install-api install srs api to the prefix path"
|
@echo " install-api install srs and api-server to the prefix path"
|
||||||
@echo " uninstall uninstall srs from prefix path"
|
@echo " uninstall uninstall srs from prefix path"
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
(cd ${SRS_OBJS}; rm -rf srs bandwidth srs_utest)
|
(cd ${SRS_OBJS}; rm -rf srs srs_utest)
|
||||||
(cd ${SRS_OBJS}; rm -rf src research include lib)
|
(cd ${SRS_OBJS}; rm -rf src research include lib)
|
||||||
(cd ${SRS_OBJS}/utest; rm -rf *.o *.a)
|
(cd ${SRS_OBJS}/utest; rm -rf *.o *.a)
|
||||||
(cd research/librtmp; make clean)
|
(cd research/librtmp; make clean)
|
||||||
|
@ -313,26 +312,13 @@ install:
|
||||||
|
|
||||||
END
|
END
|
||||||
|
|
||||||
if [ $SRS_BWTC = YES ]; then
|
|
||||||
cat << END >> ${SRS_MAKEFILE}
|
|
||||||
bandwidth: server
|
|
||||||
@echo "build the bandwidth test client tool"
|
|
||||||
\$(MAKE) -f ${SRS_OBJS}/${SRS_MAKEFILE} bandwidth
|
|
||||||
|
|
||||||
END
|
|
||||||
else
|
|
||||||
cat << END >> ${SRS_MAKEFILE}
|
|
||||||
bandwidth: server
|
|
||||||
@echo "bandwidth test client tool is disabled, ignore."
|
|
||||||
|
|
||||||
END
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $SRS_LIBRTMP = YES ]; then
|
if [ $SRS_LIBRTMP = YES ]; then
|
||||||
cat << END >> ${SRS_MAKEFILE}
|
cat << END >> ${SRS_MAKEFILE}
|
||||||
librtmp: server
|
librtmp: server
|
||||||
@echo "build the client publish/play library."
|
@echo "build the client publish/play library."
|
||||||
\$(MAKE) -f ${SRS_OBJS}/${SRS_MAKEFILE} librtmp
|
\$(MAKE) -f ${SRS_OBJS}/${SRS_MAKEFILE} librtmp
|
||||||
|
@echo "build the srs-librtmp sample"
|
||||||
|
(cd research/librtmp; \$(MAKE) ${SrsLibrtmpSampleEntry})
|
||||||
|
|
||||||
END
|
END
|
||||||
else
|
else
|
||||||
|
@ -340,23 +326,6 @@ else
|
||||||
librtmp: server
|
librtmp: server
|
||||||
@echo "srs-librtmp is disabled, ignore."
|
@echo "srs-librtmp is disabled, ignore."
|
||||||
|
|
||||||
END
|
|
||||||
fi
|
|
||||||
if [ $SRS_LIBRTMP = YES ]; then
|
|
||||||
cat << END >> ${SRS_MAKEFILE}
|
|
||||||
|
|
||||||
librtmp-sample: librtmp
|
|
||||||
@echo "build the srs-librtmp sample"
|
|
||||||
(cd research/librtmp; \$(MAKE) ${SrsLibrtmpSampleEntry})
|
|
||||||
@echo "srs-librtmp sample build success"
|
|
||||||
|
|
||||||
END
|
|
||||||
else
|
|
||||||
cat << END >> ${SRS_MAKEFILE}
|
|
||||||
|
|
||||||
librtmp-sample: librtmp
|
|
||||||
@echo "srs-librtmp sample is disabled, ignore."
|
|
||||||
|
|
||||||
END
|
END
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -406,7 +375,7 @@ AR = ar
|
||||||
LINK = g++
|
LINK = g++
|
||||||
CXXFLAGS = ${CXXFLAGS}
|
CXXFLAGS = ${CXXFLAGS}
|
||||||
|
|
||||||
.PHONY: default srs bandwidth librtmp
|
.PHONY: default srs librtmp
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
||||||
|
@ -491,7 +460,7 @@ LIBS_OBJS="${MODULE_OBJS[@]}"
|
||||||
MODULE_ID="MAIN"
|
MODULE_ID="MAIN"
|
||||||
MODULE_DEPENDS=("CORE" "KERNEL" "RTMP" "APP")
|
MODULE_DEPENDS=("CORE" "KERNEL" "RTMP" "APP")
|
||||||
ModuleLibIncs=(${LibSTRoot} ${SRS_OBJS} ${LibGperfRoot})
|
ModuleLibIncs=(${LibSTRoot} ${SRS_OBJS} ${LibGperfRoot})
|
||||||
MODULE_FILES=("srs_main_server" "srs_main_bandcheck")
|
MODULE_FILES=("srs_main_server")
|
||||||
MAIN_INCS="src/main"; MODULE_DIR=${MAIN_INCS} . auto/modules.sh
|
MAIN_INCS="src/main"; MODULE_DIR=${MAIN_INCS} . auto/modules.sh
|
||||||
MAIN_OBJS="${MODULE_OBJS[@]}"
|
MAIN_OBJS="${MODULE_OBJS[@]}"
|
||||||
|
|
||||||
|
@ -500,7 +469,7 @@ MAIN_OBJS="${MODULE_OBJS[@]}"
|
||||||
# then link to a binary, for example, objs/srs
|
# then link to a binary, for example, objs/srs
|
||||||
#
|
#
|
||||||
# all main entrances
|
# all main entrances
|
||||||
MAIN_ENTRANCES=("srs_main_server" "srs_main_bandcheck")
|
MAIN_ENTRANCES=("srs_main_server")
|
||||||
#
|
#
|
||||||
# all depends libraries
|
# all depends libraries
|
||||||
ModuleLibFiles=(${LibSTfile} ${LibHttpParserfile} ${LibSSLfile} ${LibGperfFile})
|
ModuleLibFiles=(${LibSTfile} ${LibHttpParserfile} ${LibSSLfile} ${LibGperfFile})
|
||||||
|
@ -511,10 +480,6 @@ LINK_OPTIONS="${SrsLinkOptions}${SrsGprofLink}${SrsGperfLink}"
|
||||||
# srs:
|
# srs:
|
||||||
# srs(simple rtmp server) over st(state-threads)
|
# srs(simple rtmp server) over st(state-threads)
|
||||||
BUILD_KEY="srs" APP_MAIN="srs_main_server" APP_NAME="srs" . auto/apps.sh
|
BUILD_KEY="srs" APP_MAIN="srs_main_server" APP_NAME="srs" . auto/apps.sh
|
||||||
# bandwidth test tool, to test the bandwidth to server
|
|
||||||
if [ $SRS_BWTC = YES ]; then
|
|
||||||
BUILD_KEY="bandwidth" APP_MAIN="srs_main_bandcheck" APP_NAME="bandwidth" . auto/apps.sh
|
|
||||||
fi
|
|
||||||
# srs librtmp
|
# srs librtmp
|
||||||
if [ $SRS_LIBRTMP = YES ]; then
|
if [ $SRS_LIBRTMP = YES ]; then
|
||||||
MODULE_OBJS="${CORE_OBJS[@]} ${KERNEL_OBJS[@]} ${RTMP_OBJS[@]} ${LIBS_OBJS[@]}"
|
MODULE_OBJS="${CORE_OBJS[@]} ${KERNEL_OBJS[@]} ${RTMP_OBJS[@]} ${LIBS_OBJS[@]}"
|
||||||
|
@ -601,11 +566,6 @@ if [ $SRS_LIBRTMP = YES ]; then
|
||||||
else
|
else
|
||||||
echo -e "${YELLOW}note: srs-librtmp for client is disabled${BLACK}"
|
echo -e "${YELLOW}note: srs-librtmp for client is disabled${BLACK}"
|
||||||
fi
|
fi
|
||||||
if [ $SRS_BWTC = YES ]; then
|
|
||||||
echo -e "${GREEN}srs bandwidth test client is enabled${BLACK}"
|
|
||||||
else
|
|
||||||
echo -e "${GREEN}note: srs bandwidth test client is disabled${BLACK}"
|
|
||||||
fi
|
|
||||||
if [ $SRS_RESEARCH = YES ]; then
|
if [ $SRS_RESEARCH = YES ]; then
|
||||||
echo -e "${GREEN}research tools are builded${BLACK}"
|
echo -e "${GREEN}research tools are builded${BLACK}"
|
||||||
else
|
else
|
||||||
|
|
|
@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
// current release version
|
// current release version
|
||||||
#define VERSION_MAJOR "0"
|
#define VERSION_MAJOR "0"
|
||||||
#define VERSION_MINOR "9"
|
#define VERSION_MINOR "9"
|
||||||
#define VERSION_REVISION "158"
|
#define VERSION_REVISION "159"
|
||||||
#define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION
|
#define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION
|
||||||
// server info.
|
// server info.
|
||||||
#define RTMP_SIG_SRS_KEY "SRS"
|
#define RTMP_SIG_SRS_KEY "SRS"
|
||||||
|
|
|
@ -1,817 +0,0 @@
|
||||||
/*
|
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2013-2014 wenjiegit
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
this software and associated documentation files (the "Software"), to deal in
|
|
||||||
the Software without restriction, including without limitation the rights to
|
|
||||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
#include <sstream>
|
|
||||||
#include <getopt.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#include <srs_protocol_rtmp.hpp>
|
|
||||||
#include <srs_protocol_stack.hpp>
|
|
||||||
#include <srs_kernel_error.hpp>
|
|
||||||
#include <srs_protocol_amf0.hpp>
|
|
||||||
#include <srs_core_autofree.hpp>
|
|
||||||
#include <srs_kernel_stream.hpp>
|
|
||||||
#include <srs_app_socket.hpp>
|
|
||||||
#include <srs_app_config.hpp>
|
|
||||||
#include <srs_app_log.hpp>
|
|
||||||
#include <srs_app_server.hpp>
|
|
||||||
#include <srs_kernel_utility.hpp>
|
|
||||||
|
|
||||||
// kernel module.
|
|
||||||
ISrsLog* _srs_log = new SrsFastLog();
|
|
||||||
ISrsThreadContext* _srs_context = new ISrsThreadContext();
|
|
||||||
// app module.
|
|
||||||
SrsConfig* _srs_config = NULL;
|
|
||||||
SrsServer* _srs_server = NULL;
|
|
||||||
|
|
||||||
#include <st.h>
|
|
||||||
|
|
||||||
// server play control
|
|
||||||
#define SRS_BW_CHECK_START_PLAY "onSrsBandCheckStartPlayBytes"
|
|
||||||
#define SRS_BW_CHECK_STARTING_PLAY "onSrsBandCheckStartingPlayBytes"
|
|
||||||
#define SRS_BW_CHECK_STOP_PLAY "onSrsBandCheckStopPlayBytes"
|
|
||||||
#define SRS_BW_CHECK_STOPPED_PLAY "onSrsBandCheckStoppedPlayBytes"
|
|
||||||
|
|
||||||
// server publish control
|
|
||||||
#define SRS_BW_CHECK_START_PUBLISH "onSrsBandCheckStartPublishBytes"
|
|
||||||
#define SRS_BW_CHECK_STARTING_PUBLISH "onSrsBandCheckStartingPublishBytes"
|
|
||||||
#define SRS_BW_CHECK_STOP_PUBLISH "onSrsBandCheckStopPublishBytes"
|
|
||||||
#define SRS_BW_CHECK_STOPPED_PUBLISH "onSrsBandCheckStoppedPublishBytes"
|
|
||||||
|
|
||||||
// EOF control.
|
|
||||||
#define SRS_BW_CHECK_FINISHED "onSrsBandCheckFinished"
|
|
||||||
#define SRS_BW_CHECK_FLASH_FINAL "finalClientPacket"
|
|
||||||
|
|
||||||
// client only
|
|
||||||
#define SRS_BW_CHECK_PLAYING "onSrsBandCheckPlaying"
|
|
||||||
#define SRS_BW_CHECK_PUBLISHING "onSrsBandCheckPublishing"
|
|
||||||
|
|
||||||
class ISrsProtocolReaderWriter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief class of Linux version band check client
|
|
||||||
* check play and publish speed.
|
|
||||||
*/
|
|
||||||
class SrsBandCheckClient : public SrsRtmpClient
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
SrsBandCheckClient(ISrsProtocolReaderWriter* io);
|
|
||||||
~SrsBandCheckClient();
|
|
||||||
|
|
||||||
public:
|
|
||||||
/**
|
|
||||||
* @brief test play
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
int check_play();
|
|
||||||
/**
|
|
||||||
* @brief test publish
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
int check_publish();
|
|
||||||
|
|
||||||
private:
|
|
||||||
/**
|
|
||||||
* @brief just return success.
|
|
||||||
*/
|
|
||||||
int create_stream(int& stream_id);
|
|
||||||
/**
|
|
||||||
* @brief just return success.
|
|
||||||
*/
|
|
||||||
int play(std::string stream, int stream_id);
|
|
||||||
/**
|
|
||||||
* @brief just return success.
|
|
||||||
*/
|
|
||||||
int publish(std::string stream, int stream_id);
|
|
||||||
|
|
||||||
private:
|
|
||||||
int expect_start_play();
|
|
||||||
int send_starting_play();
|
|
||||||
int expect_stop_play();
|
|
||||||
int send_stopped_play();
|
|
||||||
int expect_start_pub();
|
|
||||||
int send_starting_pub();
|
|
||||||
int send_pub_data();
|
|
||||||
int expect_stop_pub();
|
|
||||||
/**
|
|
||||||
* @brief expect result.
|
|
||||||
* because the core module has no method to decode this packet
|
|
||||||
* so we must get the internal data and decode it here.
|
|
||||||
*/
|
|
||||||
int expect_finished();
|
|
||||||
int send_stopped_pub();
|
|
||||||
/**
|
|
||||||
* @brief notify server the check procedure is over.
|
|
||||||
*/
|
|
||||||
int send_final();
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief class of band check
|
|
||||||
* used to check band width with a client @param bandCheck_Client
|
|
||||||
*/
|
|
||||||
class SrsBandCheck
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
SrsBandCheck();
|
|
||||||
~SrsBandCheck();
|
|
||||||
|
|
||||||
public:
|
|
||||||
/**
|
|
||||||
* @brief band check method
|
|
||||||
*
|
|
||||||
* connect to server------>rtmp handshake------>rtmp connect------>play------>publish
|
|
||||||
* @retval ERROR_SUCCESS when success.
|
|
||||||
*/
|
|
||||||
int check(const std::string& app, const std::string& tcUrl);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief set the address and port of test server
|
|
||||||
*
|
|
||||||
* @param server server address, domain or ip
|
|
||||||
* @param server listened port ,default is 1935
|
|
||||||
*/
|
|
||||||
void set_server(const std::string& server, int port = 1935);
|
|
||||||
|
|
||||||
private:
|
|
||||||
int connect_server();
|
|
||||||
private:
|
|
||||||
st_netfd_t stfd;
|
|
||||||
ISrsProtocolReaderWriter* skt;
|
|
||||||
SrsBandCheckClient* bandCheck_Client;
|
|
||||||
std::string server_address;
|
|
||||||
int server_port;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief init st lib
|
|
||||||
*/
|
|
||||||
static int init_st();
|
|
||||||
static void print_help(char** argv);
|
|
||||||
static void print_version();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief get user option
|
|
||||||
* @internal ip Mandatory arguments
|
|
||||||
* @internal key Mandatory arguments
|
|
||||||
* @internal port default 1935
|
|
||||||
* @internal vhost default bandcheck.srs.com
|
|
||||||
*/
|
|
||||||
static int get_opt(int argc ,char* argv[]);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* global var.
|
|
||||||
*/
|
|
||||||
static struct option long_options[] =
|
|
||||||
{
|
|
||||||
{"ip", required_argument, 0, 'i'},
|
|
||||||
{"port", optional_argument, 0, 'p'},
|
|
||||||
{"key", required_argument, 0, 'k'},
|
|
||||||
{"vhost", optional_argument, 0, 'v'},
|
|
||||||
{"help", no_argument, 0, 'h'},
|
|
||||||
{"version", no_argument, 0, 'V'},
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char* short_options = "i:p::k:v::hV";
|
|
||||||
|
|
||||||
static std::string g_ip;
|
|
||||||
static int g_port = 1935;
|
|
||||||
static std::string g_key;
|
|
||||||
static std::string g_vhost = "bandcheck.srs.com";
|
|
||||||
|
|
||||||
#define BUILD_VERSION "srs band check 0.1"
|
|
||||||
|
|
||||||
// TODO: FIXME: by winlin, the bandwidth test tool has logic bug.
|
|
||||||
int main(int argc ,char* argv[])
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
if (argc <= 1) {
|
|
||||||
print_help(argv);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((ret = get_opt(argc, argv)) != ERROR_SUCCESS) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// check param
|
|
||||||
if (g_ip.empty()) {
|
|
||||||
printf("ip address should not be empty.\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (g_key.empty()) {
|
|
||||||
printf("test key should not be empty.\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((ret = init_st()) != ERROR_SUCCESS) {
|
|
||||||
srs_error("band check init failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string app = "app?key=" + g_key + "&vhost=" + g_vhost;
|
|
||||||
|
|
||||||
char tcUrl_buffer[1024] = {0};
|
|
||||||
sprintf(tcUrl_buffer, "rtmp://%s:%d/%s", g_ip.c_str(), g_port, app.c_str());
|
|
||||||
std::string tcUrl = tcUrl_buffer;
|
|
||||||
|
|
||||||
SrsBandCheck band_check;
|
|
||||||
band_check.set_server(g_ip, g_port);
|
|
||||||
if ((ret = band_check.check(app, tcUrl)) != ERROR_SUCCESS) {
|
|
||||||
srs_error("band check failed. address=%s ret=%d", "xx.com", ret);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
SrsBandCheckClient::SrsBandCheckClient(ISrsProtocolReaderWriter* io)
|
|
||||||
: SrsRtmpClient(io)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
SrsBandCheckClient::~SrsBandCheckClient()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
int SrsBandCheckClient::check_play()
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
if ((ret = expect_start_play()) != ERROR_SUCCESS) {
|
|
||||||
srs_error("expect_start_play failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((ret = send_starting_play()) != ERROR_SUCCESS) {
|
|
||||||
srs_error("send starting play failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((ret = expect_stop_play()) != ERROR_SUCCESS) {
|
|
||||||
srs_error("expect stop play failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((ret = send_stopped_play()) != ERROR_SUCCESS) {
|
|
||||||
srs_error("send stopped play failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SrsBandCheckClient::check_publish()
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
if ((ret = expect_start_pub()) != ERROR_SUCCESS) {
|
|
||||||
srs_error("expect start pub failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((ret = send_starting_pub())!= ERROR_SUCCESS) {
|
|
||||||
srs_error("send starting pub failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((ret = send_pub_data()) != ERROR_SUCCESS) {
|
|
||||||
srs_error("publish data failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((ret = send_stopped_pub()) != ERROR_SUCCESS) {
|
|
||||||
srs_error("send stopped pub failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((ret = expect_finished()) != ERROR_SUCCESS) {
|
|
||||||
srs_error("expect finished msg failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((ret = send_final()) != ERROR_SUCCESS) {
|
|
||||||
srs_error("send final msg failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SrsBandCheckClient::create_stream(int &stream_id)
|
|
||||||
{
|
|
||||||
return ERROR_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SrsBandCheckClient::play(std::string stream, int stream_id)
|
|
||||||
{
|
|
||||||
return ERROR_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SrsBandCheckClient::publish(std::string stream, int stream_id)
|
|
||||||
{
|
|
||||||
return ERROR_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SrsBandCheckClient::expect_start_play()
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
// expect connect _result
|
|
||||||
SrsMessage* msg = NULL;
|
|
||||||
SrsBandwidthPacket* pkt = NULL;
|
|
||||||
if ((ret = expect_message<SrsBandwidthPacket>(&msg, &pkt)) != ERROR_SUCCESS) {
|
|
||||||
srs_error("expect bandcheck start play message failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
SrsAutoFree(SrsMessage, msg);
|
|
||||||
SrsAutoFree(SrsBandwidthPacket, pkt);
|
|
||||||
srs_info("get bandcheck start play message");
|
|
||||||
|
|
||||||
if (pkt->command_name != SRS_BW_CHECK_START_PLAY) {
|
|
||||||
srs_error("pkt error. expect=%s, actual=%s", SRS_BW_CHECK_START_PLAY, pkt->command_name.c_str());
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SrsBandCheckClient::send_starting_play()
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
SrsBandwidthPacket* pkt = new SrsBandwidthPacket;
|
|
||||||
pkt->command_name = SRS_BW_CHECK_STARTING_PLAY;
|
|
||||||
if ((ret = send_and_free_packet(pkt, 0)) != ERROR_SUCCESS) {
|
|
||||||
srs_error("send starting play msg failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SrsBandCheckClient::expect_stop_play()
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
while (true) {
|
|
||||||
SrsMessage* msg = NULL;
|
|
||||||
SrsBandwidthPacket* pkt = NULL;
|
|
||||||
if ((ret = expect_message<SrsBandwidthPacket>(&msg, &pkt)) != ERROR_SUCCESS) {
|
|
||||||
srs_error("expect stop play message failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
SrsAutoFree(SrsMessage, msg);
|
|
||||||
SrsAutoFree(SrsBandwidthPacket, pkt);
|
|
||||||
srs_info("get bandcheck stop play message");
|
|
||||||
|
|
||||||
if (pkt->command_name == SRS_BW_CHECK_STOP_PLAY) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SrsBandCheckClient::send_stopped_play()
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
SrsBandwidthPacket* pkt = new SrsBandwidthPacket;
|
|
||||||
pkt->command_name = SRS_BW_CHECK_STOPPED_PLAY;
|
|
||||||
if ((ret = send_and_free_packet(pkt, 0)) != ERROR_SUCCESS) {
|
|
||||||
srs_error("send stopped play msg failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SrsBandCheckClient::expect_start_pub()
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
while (true) {
|
|
||||||
SrsMessage* msg = NULL;
|
|
||||||
SrsBandwidthPacket* pkt = NULL;
|
|
||||||
if ((ret = expect_message<SrsBandwidthPacket>(&msg, &pkt)) != ERROR_SUCCESS) {
|
|
||||||
srs_error("expect start pub message failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
SrsAutoFree(SrsMessage, msg);
|
|
||||||
SrsAutoFree(SrsBandwidthPacket, pkt);
|
|
||||||
srs_info("get bandcheck start pub message");
|
|
||||||
|
|
||||||
if (pkt->command_name == SRS_BW_CHECK_START_PUBLISH) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SrsBandCheckClient::send_starting_pub()
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
SrsBandwidthPacket* pkt = new SrsBandwidthPacket;
|
|
||||||
pkt->command_name = SRS_BW_CHECK_STARTING_PUBLISH;
|
|
||||||
if ((ret = send_and_free_packet(pkt, 0)) != ERROR_SUCCESS) {
|
|
||||||
srs_error("send starting play msg failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
srs_info("send starting play msg success.");
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SrsBandCheckClient::send_pub_data()
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
int data_count = 100;
|
|
||||||
while (true) {
|
|
||||||
SrsBandwidthPacket* pkt = new SrsBandwidthPacket;
|
|
||||||
pkt->command_name = SRS_BW_CHECK_PUBLISHING;
|
|
||||||
|
|
||||||
for (int i = 0; i < data_count; ++i) {
|
|
||||||
std::stringstream seq;
|
|
||||||
seq << i;
|
|
||||||
std::string play_data = "SrS band check data from client's publishing......";
|
|
||||||
pkt->data->set(seq.str(), SrsAmf0Any::str(play_data.c_str()));
|
|
||||||
}
|
|
||||||
data_count += 100;
|
|
||||||
|
|
||||||
if ((ret = send_and_free_packet(pkt, 0)) != ERROR_SUCCESS) {
|
|
||||||
srs_error("send publish message failed.ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((ret = expect_stop_pub()) == ERROR_SUCCESS) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SrsBandCheckClient::expect_stop_pub()
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
this->set_recv_timeout(1000 * 1000);
|
|
||||||
this->set_send_timeout(1000 * 1000);
|
|
||||||
|
|
||||||
SrsMessage* msg;
|
|
||||||
SrsBandwidthPacket* pkt;
|
|
||||||
if ((ret = expect_message<SrsBandwidthPacket>(&msg, &pkt)) != ERROR_SUCCESS) {
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
SrsAutoFree(SrsMessage, msg);
|
|
||||||
SrsAutoFree(SrsBandwidthPacket, pkt);
|
|
||||||
if (pkt->command_name == SRS_BW_CHECK_STOP_PUBLISH) {
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SrsBandCheckClient::expect_finished()
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
while (true) {
|
|
||||||
SrsMessage* msg = NULL;
|
|
||||||
SrsBandwidthPacket* pkt = NULL;
|
|
||||||
if ((ret = expect_message<SrsBandwidthPacket>(&msg, &pkt)) != ERROR_SUCCESS) {
|
|
||||||
srs_error("expect finished message failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
SrsAutoFree(SrsMessage, msg);
|
|
||||||
SrsAutoFree(SrsBandwidthPacket, pkt);
|
|
||||||
srs_info("get bandcheck finished message");
|
|
||||||
|
|
||||||
if (pkt->command_name == SRS_BW_CHECK_FINISHED) {
|
|
||||||
SrsStream *stream = new SrsStream;
|
|
||||||
SrsAutoFree(SrsStream, stream);
|
|
||||||
|
|
||||||
if ((ret = stream->initialize((char*)msg->payload, msg->size)) != ERROR_SUCCESS) {
|
|
||||||
srs_error("initialize stream error. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string command_name;
|
|
||||||
if ((ret = srs_amf0_read_string(stream, command_name)) != ERROR_SUCCESS) {
|
|
||||||
srs_error("amfo read string error. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
double action_id;
|
|
||||||
if ((ret = srs_amf0_read_number(stream, action_id)) != ERROR_SUCCESS) {
|
|
||||||
srs_error("amfo read number error. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((ret = srs_amf0_read_null(stream)) != ERROR_SUCCESS) {
|
|
||||||
srs_error("amfo read number error. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
SrsAmf0Object* object = SrsAmf0Any::object();
|
|
||||||
if ((ret = object->read(stream)) != ERROR_SUCCESS) {
|
|
||||||
srs_freep(object);
|
|
||||||
srs_error("amfo read object error. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int64_t start_time = 0;
|
|
||||||
int64_t end_time = 0;
|
|
||||||
|
|
||||||
SrsAmf0Any* start_time_any = object->get_property("start_time");
|
|
||||||
if (start_time_any && start_time_any->is_number()) {
|
|
||||||
start_time = start_time_any->to_number();
|
|
||||||
}
|
|
||||||
|
|
||||||
SrsAmf0Any* end_time_any = object->get_property("end_time");
|
|
||||||
if (end_time_any && end_time_any->is_number()) {
|
|
||||||
end_time = end_time_any->to_number();
|
|
||||||
}
|
|
||||||
|
|
||||||
int play_kbps = 0;
|
|
||||||
int pub_kbps = 0;
|
|
||||||
SrsAmf0Any* play_kbp_any = object->get_property("play_kbps");
|
|
||||||
if (play_kbp_any && play_kbp_any->is_number()) {
|
|
||||||
play_kbps = play_kbp_any->to_number();
|
|
||||||
}
|
|
||||||
|
|
||||||
SrsAmf0Any* pub_kbp_any = object->get_property("publish_kbps");
|
|
||||||
if (pub_kbp_any && pub_kbp_any->is_number()) {
|
|
||||||
pub_kbps = pub_kbp_any->to_number();
|
|
||||||
}
|
|
||||||
|
|
||||||
float time_elapsed;
|
|
||||||
if (end_time - start_time > 0) {
|
|
||||||
time_elapsed = (end_time - start_time) / 1000.00;
|
|
||||||
}
|
|
||||||
|
|
||||||
srs_trace("result: play %d kbps, publish %d kbps, check time %.4f S\n"
|
|
||||||
, play_kbps, pub_kbps, time_elapsed);
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SrsBandCheckClient::send_stopped_pub()
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
SrsBandwidthPacket* pkt = new SrsBandwidthPacket;
|
|
||||||
pkt->command_name = SRS_BW_CHECK_STOPPED_PUBLISH;
|
|
||||||
if ((ret = send_and_free_packet(pkt, 0)) != ERROR_SUCCESS) {
|
|
||||||
srs_error("send stopped pub msg failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
srs_info("send stopped pub msg success.");
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SrsBandCheckClient::send_final()
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
SrsBandwidthPacket* pkt = new SrsBandwidthPacket;
|
|
||||||
pkt->command_name = SRS_BW_CHECK_FLASH_FINAL;
|
|
||||||
if ((ret = send_and_free_packet(pkt, 0)) != ERROR_SUCCESS) {
|
|
||||||
srs_error("send final msg failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
srs_info("send final msg success.");
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
SrsBandCheck::SrsBandCheck()
|
|
||||||
{
|
|
||||||
skt = NULL;
|
|
||||||
bandCheck_Client = NULL;
|
|
||||||
stfd = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
SrsBandCheck::~SrsBandCheck()
|
|
||||||
{
|
|
||||||
srs_freep(bandCheck_Client);
|
|
||||||
srs_freep(skt);
|
|
||||||
srs_close_stfd(stfd);
|
|
||||||
}
|
|
||||||
|
|
||||||
int SrsBandCheck::check(const std::string &app, const std::string &tcUrl)
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
if ((ret = connect_server()) != ERROR_SUCCESS) {
|
|
||||||
srs_error("connect to server failed. ret = %d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((ret = bandCheck_Client->handshake()) != ERROR_SUCCESS) {
|
|
||||||
srs_error("handshake failed. ret = %d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((ret = bandCheck_Client->connect_app(app, tcUrl)) != ERROR_SUCCESS) {
|
|
||||||
srs_error("handshake failed. ret = %d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((ret = bandCheck_Client->check_play()) != ERROR_SUCCESS) {
|
|
||||||
srs_error("band check play failed.");
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((ret = bandCheck_Client->check_publish()) != ERROR_SUCCESS) {
|
|
||||||
srs_error("band check publish failed.");
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SrsBandCheck::set_server(const std::string &server, int port)
|
|
||||||
{
|
|
||||||
server_address = server;
|
|
||||||
server_port = port;
|
|
||||||
}
|
|
||||||
|
|
||||||
int SrsBandCheck::connect_server()
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
int sock = socket(AF_INET, SOCK_STREAM, 0);
|
|
||||||
if(sock == -1){
|
|
||||||
ret = ERROR_SOCKET_CREATE;
|
|
||||||
srs_error("create socket error. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
stfd = st_netfd_open_socket(sock);
|
|
||||||
if(stfd == NULL){
|
|
||||||
ret = ERROR_ST_OPEN_SOCKET;
|
|
||||||
srs_error("st_netfd_open_socket failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
skt = new SrsSocket(stfd);
|
|
||||||
bandCheck_Client = new SrsBandCheckClient(skt);
|
|
||||||
|
|
||||||
// connect to server.
|
|
||||||
std::string ip = srs_dns_resolve(server_address);
|
|
||||||
if (ip.empty()) {
|
|
||||||
ret = ERROR_SYSTEM_IP_INVALID;
|
|
||||||
srs_error("dns resolve server error, ip empty. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
sockaddr_in addr;
|
|
||||||
addr.sin_family = AF_INET;
|
|
||||||
addr.sin_port = htons(server_port);
|
|
||||||
addr.sin_addr.s_addr = inet_addr(ip.c_str());
|
|
||||||
|
|
||||||
if (st_connect(stfd, (const struct sockaddr*)&addr, sizeof(sockaddr_in), ST_UTIME_NO_TIMEOUT) == -1){
|
|
||||||
ret = ERROR_ST_CONNECT;
|
|
||||||
srs_error("connect to server error. ip=%s, port=%d, ret=%d", ip.c_str(), server_port, ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
srs_trace("connect to server success. server=%s, ip=%s, port=%d", server_address.c_str(), ip.c_str(), server_port);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int init_st()
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
if (st_set_eventsys(ST_EVENTSYS_ALT) == -1) {
|
|
||||||
ret = ERROR_ST_SET_EPOLL;
|
|
||||||
srs_error("st_set_eventsys use linux epoll failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(st_init() != 0){
|
|
||||||
ret = ERROR_ST_INITIALIZE;
|
|
||||||
srs_error("st_init failed. ret=%d", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
void print_help(char** argv)
|
|
||||||
{
|
|
||||||
printf(
|
|
||||||
"Usage: %s [OPTION]...\n"
|
|
||||||
"test band width from client to rtmp server.\n"
|
|
||||||
"Mandatory arguments to long options are mandatory for short options too.\n"
|
|
||||||
" -i, --ip the ip or domain that to test\n"
|
|
||||||
" -p, --port the port that server listen \n"
|
|
||||||
" -k, --key the key used to test \n"
|
|
||||||
" -v, --vhost the vhost used to test \n"
|
|
||||||
" -V, --version output version information and exit \n"
|
|
||||||
" -h, --help display this help and exit \n"
|
|
||||||
"\n"
|
|
||||||
"For example:\n"
|
|
||||||
" %s -i 127.0.0.1 -p 1935 -v bandcheck.srs.com -k 35c9b402c12a7246868752e2878f7e0e"
|
|
||||||
"\n\n"
|
|
||||||
"Exit status:\n"
|
|
||||||
"0 if OK,\n"
|
|
||||||
"other if error occured, and the detail should be printed.\n"
|
|
||||||
"\n\n"
|
|
||||||
"srs home page: <http://blog.chinaunix.net/uid/25006789.html>\n",
|
|
||||||
argv[0], argv[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
void print_version()
|
|
||||||
{
|
|
||||||
const char *version = ""
|
|
||||||
"srs_bandcheck "BUILD_VERSION"\n"
|
|
||||||
"Copyright (c) 2013-2014 wenjiegit.\n"
|
|
||||||
"License MIT\n"
|
|
||||||
"This is free software: you are free to change and redistribute it.\n"
|
|
||||||
"There is NO WARRANTY, to the extent permitted by law.\n"
|
|
||||||
"\n"
|
|
||||||
"Written by wenjie.\n";
|
|
||||||
|
|
||||||
printf("%s", version);
|
|
||||||
}
|
|
||||||
|
|
||||||
int get_opt(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
int c;
|
|
||||||
while ((c = getopt_long (argc, argv, short_options, long_options, NULL)) != -1) {
|
|
||||||
switch (c) {
|
|
||||||
case 'i':
|
|
||||||
if (optarg) {
|
|
||||||
g_ip = optarg;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'p':
|
|
||||||
if (optarg) {
|
|
||||||
g_port = atoi(optarg);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'k':
|
|
||||||
if (optarg) {
|
|
||||||
g_key = optarg;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'v':
|
|
||||||
if (optarg) {
|
|
||||||
g_vhost = optarg;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'V':
|
|
||||||
print_version();
|
|
||||||
exit(0);
|
|
||||||
break;
|
|
||||||
case 'h':
|
|
||||||
print_help(argv);
|
|
||||||
exit(0);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
printf("see --help or -h\n");
|
|
||||||
ret = -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
|
@ -436,8 +436,6 @@ int SrsRtmpClient::complex_handshake()
|
||||||
|
|
||||||
int SrsRtmpClient::connect_app(string app, string tc_url, SrsRequest* req)
|
int SrsRtmpClient::connect_app(string app, string tc_url, SrsRequest* req)
|
||||||
{
|
{
|
||||||
int ret = ERROR_SUCCESS;
|
|
||||||
|
|
||||||
std::string srs_server_ip;
|
std::string srs_server_ip;
|
||||||
std::string srs_server;
|
std::string srs_server;
|
||||||
std::string srs_primary_authors;
|
std::string srs_primary_authors;
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
file
|
file
|
||||||
main readonly separator,
|
main readonly separator,
|
||||||
..\main\srs_main_server.cpp,
|
..\main\srs_main_server.cpp,
|
||||||
..\main\srs_main_bandcheck.cpp,
|
|
||||||
auto readonly separator,
|
auto readonly separator,
|
||||||
..\..\objs\srs_auto_headers.hpp,
|
..\..\objs\srs_auto_headers.hpp,
|
||||||
libs readonly separator,
|
libs readonly separator,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue