正在显示
9 个修改的文件
包含
68 行增加
和
62 行删除
| @@ -35,7 +35,7 @@ git clone https://git.oschina.net/winlinvip/srs.oschina.git | @@ -35,7 +35,7 @@ git clone https://git.oschina.net/winlinvip/srs.oschina.git | ||
| 35 | 公用机器(LiveShow): [https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_LiveShow](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_LiveShow) <br/> | 35 | 公用机器(LiveShow): [https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_LiveShow](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_LiveShow) <br/> |
| 36 | 捐款(Donation): [GitHub](http://winlinvip.github.io/srs.release/donation/index.html) | 36 | 捐款(Donation): [GitHub](http://winlinvip.github.io/srs.release/donation/index.html) |
| 37 | 或 [阿里云镜像](http://www.ossrs.net/srs.release/donation/index.html) ,查看 | 37 | 或 [阿里云镜像](http://www.ossrs.net/srs.release/donation/index.html) ,查看 |
| 38 | -[捐献墙(Donations)](https://github.com/winlinvip/simple-rtmp-server/blob/master/DONATIONS.txt)<br/> | 38 | +[捐献墙(Donations)](https://github.com/winlinvip/simple-rtmp-server/blob/develop/DONATIONS.txt)<br/> |
| 39 | 39 | ||
| 40 | ## About | 40 | ## About |
| 41 | 41 | ||
| @@ -216,6 +216,16 @@ the GIT usage( | @@ -216,6 +216,16 @@ the GIT usage( | ||
| 216 | git clone https://git.oschina.net/winlinvip/srs.oschina.git | 216 | git clone https://git.oschina.net/winlinvip/srs.oschina.git |
| 217 | ``` | 217 | ``` |
| 218 | 218 | ||
| 219 | +Gitlab: [https://gitlab.com/winlinvip/srs-gitlab](https://gitlab.com/winlinvip/srs-gitlab) , | ||
| 220 | +the GIT usage( | ||
| 221 | +[CN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_CN_Git), | ||
| 222 | +[EN](https://github.com/winlinvip/simple-rtmp-server/wiki/v1_EN_Git) | ||
| 223 | +) | ||
| 224 | + | ||
| 225 | +```bash | ||
| 226 | +git clone https://gitlab.com/winlinvip/srs-gitlab.git | ||
| 227 | +``` | ||
| 228 | + | ||
| 219 | ## Usage | 229 | ## Usage |
| 220 | 230 | ||
| 221 | <strong>Step 1:</strong> get SRS | 231 | <strong>Step 1:</strong> get SRS |
| @@ -306,13 +316,13 @@ Donation:<br/> | @@ -306,13 +316,13 @@ Donation:<br/> | ||
| 306 | [http://www.ossrs.net/srs.release/donation/index.html](http://www.ossrs.net/srs.release/donation/index.html) | 316 | [http://www.ossrs.net/srs.release/donation/index.html](http://www.ossrs.net/srs.release/donation/index.html) |
| 307 | 317 | ||
| 308 | Donations:<br/> | 318 | Donations:<br/> |
| 309 | -[https://github.com/winlinvip/simple-rtmp-server/blob/master/DONATIONS.txt] | ||
| 310 | -(https://github.com/winlinvip/simple-rtmp-server/blob/master/DONATIONS.txt) | 319 | +[https://github.com/winlinvip/simple-rtmp-server/blob/develop/DONATIONS.txt] |
| 320 | +(https://github.com/winlinvip/simple-rtmp-server/blob/develop/DONATIONS.txt) | ||
| 311 | 321 | ||
| 312 | ## System Requirements | 322 | ## System Requirements |
| 313 | Supported operating systems and hardware: | 323 | Supported operating systems and hardware: |
| 314 | * All Linux , both 32 and 64 bits | 324 | * All Linux , both 32 and 64 bits |
| 315 | -* All hardware. | 325 | +* All hardware with x86/x86_64/arm/mips cpu. |
| 316 | 326 | ||
| 317 | ## Summary | 327 | ## Summary |
| 318 | 1. 简洁稳定:Simple, also stable enough. | 328 | 1. 简洁稳定:Simple, also stable enough. |
| @@ -373,6 +383,14 @@ Supported operating systems and hardware: | @@ -373,6 +383,14 @@ Supported operating systems and hardware: | ||
| 373 | * 2013-10-17, Created.<br/> | 383 | * 2013-10-17, Created.<br/> |
| 374 | 384 | ||
| 375 | ## History | 385 | ## History |
| 386 | +* <strong>v1.0, 2015-01-15, [1.0r1 release(1.0.20)](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0r1) released. 59472 lines.</strong> | ||
| 387 | +* v1.0, 2015-01-08, hotfix [#281](https://github.com/winlinvip/simple-rtmp-server/issues/281), fix hls bug ignore type-9 send aud. 1.0.20 | ||
| 388 | +* v1.0, 2015-01-03, hotfix to remove the pageUrl for http callback. 1.0.19 | ||
| 389 | +* v1.0, 2015-01-02, hotfix [#207](https://github.com/winlinvip/simple-rtmp-server/issues/207), trim the last 0 of log. 1.0.18 | ||
| 390 | +* v1.0, 2015-01-02, hotfix [#216](https://github.com/winlinvip/simple-rtmp-server/issues/216), http-callback post in application/json content-type. 1.0.17 | ||
| 391 | +* v1.0, 2015-01-01, hotfix [#270](https://github.com/winlinvip/simple-rtmp-server/issues/270), memory leak for http client post. 1.0.16 | ||
| 392 | +* v1.0, 2014-12-29, hotfix [#267](https://github.com/winlinvip/simple-rtmp-server/issues/267), the forward dest ep should use server. 1.0.15 | ||
| 393 | +* v1.0, 2014-12-29, hotfix [#268](https://github.com/winlinvip/simple-rtmp-server/issues/268), the hls pcr is negative when startup. 1.0.14 | ||
| 376 | * v1.0, 2014-12-26, use master as main stable branch with hotfixes. 1.0.13 | 394 | * v1.0, 2014-12-26, use master as main stable branch with hotfixes. 1.0.13 |
| 377 | * v1.0, 2014-12-22, hotfix [#264](https://github.com/winlinvip/simple-rtmp-server/issues/264), ignore NALU when sequence header to make HLS happy. 1.0.12 | 395 | * v1.0, 2014-12-22, hotfix [#264](https://github.com/winlinvip/simple-rtmp-server/issues/264), ignore NALU when sequence header to make HLS happy. 1.0.12 |
| 378 | * v1.0, 2014-12-20, hotfix [#264](https://github.com/winlinvip/simple-rtmp-server/issues/264), support disconnect publish connect when hls error. 1.0.11 | 396 | * v1.0, 2014-12-20, hotfix [#264](https://github.com/winlinvip/simple-rtmp-server/issues/264), support disconnect publish connect when hls error. 1.0.11 |
| @@ -723,41 +741,6 @@ Schema#2: SRS RTMP Edge server pull stream from origin (or upstream SRS | @@ -723,41 +741,6 @@ Schema#2: SRS RTMP Edge server pull stream from origin (or upstream SRS | ||
| 723 | RTMP Edge server), then delivery to Client. | 741 | RTMP Edge server), then delivery to Client. |
| 724 | </pre> | 742 | </pre> |
| 725 | 743 | ||
| 726 | -### (plan) SRS Multiple processes Architecture(design by wenjie) | ||
| 727 | - | ||
| 728 | -<pre> | ||
| 729 | - +---------------+ +--------+ | ||
| 730 | - | upnode server | + client + | ||
| 731 | - +-------+-------+ +---+----+ | ||
| 732 | - -------------+------------network-------+--------- | ||
| 733 | - | | | ||
| 734 | - +--------+ +----+-----------+ +----+----------+ | ||
| 735 | - | master +--fork->-+ back source(1) +-->-pull-+ stream 1-N(2) + | ||
| 736 | - +---+----+ +----------------+ +-------+-------+ | ||
| 737 | - | | | ||
| 738 | - +-------------------------------------fork--->-----+ | ||
| 739 | - | +-------------+ | ||
| 740 | - +-------------------fork-->-+ http/vod(3) | | ||
| 741 | - +-------------+ | ||
| 742 | -Remark: | ||
| 743 | -(1) back source process: create by master process, get stream from | ||
| 744 | - upnode server if edge, create stream if origin, serve the stream | ||
| 745 | - process. | ||
| 746 | -(2) stream process: create by master process, get stream from back | ||
| 747 | - source process, serve the client. | ||
| 748 | -(3) the embeded mininum http server, also provides vod service. for | ||
| 749 | - http server, it provides http api, hls(live/vod) delivery. for | ||
| 750 | - vod server, it slice the file to hls(m3u8/ts). | ||
| 751 | -Remark: | ||
| 752 | -(a) This multiple processes architecture is design by wenjie, it's a | ||
| 753 | - very simple and powerful multiple process architecture, for the | ||
| 754 | - master no need to pass between stream process. | ||
| 755 | -(b) The CLI architecture is similar to this, instead, cli process | ||
| 756 | - will collect informations from all stream process, master process | ||
| 757 | - only send signals to child processes. | ||
| 758 | -(c) Maybe multiple thread is ok? By winlin. | ||
| 759 | -</pre> | ||
| 760 | - | ||
| 761 | ### Bandwidth Test Workflow | 744 | ### Bandwidth Test Workflow |
| 762 | 745 | ||
| 763 | <pre> | 746 | <pre> |
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | 2 | ||
| 3 | cat <<END >>/dev/null | 3 | cat <<END >>/dev/null |
| 4 | touch git-ensure-commit && | 4 | touch git-ensure-commit && |
| 5 | -echo "cd `pwd` && git checkout master &&" >git-ensure-commit && | 5 | +echo "cd `pwd` && git checkout develop &&" >git-ensure-commit && |
| 6 | echo "bash `pwd`/git.commit.sh" >>git-ensure-commit && | 6 | echo "bash `pwd`/git.commit.sh" >>git-ensure-commit && |
| 7 | chmod +x git-ensure-commit && | 7 | chmod +x git-ensure-commit && |
| 8 | sudo rm -f /bin/git-ensure-commit && | 8 | sudo rm -f /bin/git-ensure-commit && |
| @@ -23,7 +23,7 @@ work_dir=`(cd ${work_dir}/.. && pwd)` | @@ -23,7 +23,7 @@ work_dir=`(cd ${work_dir}/.. && pwd)` | ||
| 23 | product_dir=$work_dir | 23 | product_dir=$work_dir |
| 24 | 24 | ||
| 25 | # allow start script from any dir | 25 | # allow start script from any dir |
| 26 | -cd $work_dir && git checkout master | 26 | +cd $work_dir && git checkout develop |
| 27 | 27 | ||
| 28 | . ${product_dir}/scripts/_log.sh | 28 | . ${product_dir}/scripts/_log.sh |
| 29 | ret=$?; if [[ $ret -ne 0 ]]; then exit $ret; fi | 29 | ret=$?; if [[ $ret -ne 0 ]]; then exit $ret; fi |
| @@ -44,6 +44,7 @@ function remote_check() | @@ -44,6 +44,7 @@ function remote_check() | ||
| 44 | remote_check origin git@github.com:winlinvip/simple-rtmp-server.git | 44 | remote_check origin git@github.com:winlinvip/simple-rtmp-server.git |
| 45 | remote_check srs.csdn git@code.csdn.net:winlinvip/srs-csdn.git | 45 | remote_check srs.csdn git@code.csdn.net:winlinvip/srs-csdn.git |
| 46 | remote_check srs.oschina git@git.oschina.net:winlinvip/srs.oschina.git | 46 | remote_check srs.oschina git@git.oschina.net:winlinvip/srs.oschina.git |
| 47 | +remote_check srs.gitlab git@gitlab.com:winlinvip/srs-gitlab.git | ||
| 47 | ok_msg "remote check ok" | 48 | ok_msg "remote check ok" |
| 48 | 49 | ||
| 49 | function sync_push() | 50 | function sync_push() |
| @@ -64,10 +65,12 @@ function sync_push() | @@ -64,10 +65,12 @@ function sync_push() | ||
| 64 | sync_push --all origin | 65 | sync_push --all origin |
| 65 | sync_push --all srs.csdn | 66 | sync_push --all srs.csdn |
| 66 | sync_push --all srs.oschina | 67 | sync_push --all srs.oschina |
| 68 | +sync_push --all srs.gitlab | ||
| 67 | ok_msg "push refs ok" | 69 | ok_msg "push refs ok" |
| 68 | 70 | ||
| 69 | sync_push --tags srs.csdn | 71 | sync_push --tags srs.csdn |
| 70 | sync_push --tags srs.oschina | 72 | sync_push --tags srs.oschina |
| 73 | +sync_push --tags srs.gitlab | ||
| 71 | ok_msg "push tags ok" | 74 | ok_msg "push tags ok" |
| 72 | 75 | ||
| 73 | exit 0 | 76 | exit 0 |
| @@ -337,6 +337,13 @@ int SrsAvcAacCodec::video_avc_demux(char* data, int size, SrsCodecSample* sample | @@ -337,6 +337,13 @@ int SrsAvcAacCodec::video_avc_demux(char* data, int size, SrsCodecSample* sample | ||
| 337 | 337 | ||
| 338 | sample->frame_type = (SrsCodecVideoAVCFrame)frame_type; | 338 | sample->frame_type = (SrsCodecVideoAVCFrame)frame_type; |
| 339 | 339 | ||
| 340 | + // ignore info frame without error, | ||
| 341 | + // @see https://github.com/winlinvip/simple-rtmp-server/issues/288#issuecomment-69863909 | ||
| 342 | + if (sample->frame_type == SrsCodecVideoAVCFrameVideoInfoFrame) { | ||
| 343 | + srs_warn("hls igone the info frame, ret=%d", ret); | ||
| 344 | + return ret; | ||
| 345 | + } | ||
| 346 | + | ||
| 340 | // only support h.264/avc | 347 | // only support h.264/avc |
| 341 | if (codec_id != SrsCodecVideoAVC) { | 348 | if (codec_id != SrsCodecVideoAVC) { |
| 342 | ret = ERROR_HLS_DECODE_ERROR; | 349 | ret = ERROR_HLS_DECODE_ERROR; |
| @@ -119,7 +119,7 @@ int SrsForwarder::on_publish() | @@ -119,7 +119,7 @@ int SrsForwarder::on_publish() | ||
| 119 | if (_ep_forward == SRS_CONSTS_LOCALHOST) { | 119 | if (_ep_forward == SRS_CONSTS_LOCALHOST) { |
| 120 | dest_ep += req->host; | 120 | dest_ep += req->host; |
| 121 | } else { | 121 | } else { |
| 122 | - dest_ep += _ep_forward; | 122 | + dest_ep += server; |
| 123 | } | 123 | } |
| 124 | dest_ep += ":"; | 124 | dest_ep += ":"; |
| 125 | dest_ep += port; | 125 | dest_ep += port; |
| @@ -368,11 +368,16 @@ private: | @@ -368,11 +368,16 @@ private: | ||
| 368 | } | 368 | } |
| 369 | static char* write_pcr(char* p, int64_t pcr) | 369 | static char* write_pcr(char* p, int64_t pcr) |
| 370 | { | 370 | { |
| 371 | - *p++ = (char) (pcr >> 25); | ||
| 372 | - *p++ = (char) (pcr >> 17); | ||
| 373 | - *p++ = (char) (pcr >> 9); | ||
| 374 | - *p++ = (char) (pcr >> 1); | ||
| 375 | - *p++ = (char) (pcr << 7 | 0x7e); | 371 | + // the pcr=dts-delay |
| 372 | + // and the pcr maybe negative | ||
| 373 | + // @see https://github.com/winlinvip/simple-rtmp-server/issues/268 | ||
| 374 | + int64_t v = srs_max(0, pcr); | ||
| 375 | + | ||
| 376 | + *p++ = (char) (v >> 25); | ||
| 377 | + *p++ = (char) (v >> 17); | ||
| 378 | + *p++ = (char) (v >> 9); | ||
| 379 | + *p++ = (char) (v >> 1); | ||
| 380 | + *p++ = (char) (v << 7 | 0x7e); | ||
| 376 | *p++ = 0; | 381 | *p++ = 0; |
| 377 | 382 | ||
| 378 | return p; | 383 | return p; |
| @@ -1271,9 +1276,13 @@ int SrsHlsCache::cache_video(SrsAvcAacCodec* codec, SrsCodecSample* sample) | @@ -1271,9 +1276,13 @@ int SrsHlsCache::cache_video(SrsAvcAacCodec* codec, SrsCodecSample* sample) | ||
| 1271 | // 6: Supplemental enhancement information (SEI) sei_rbsp( ), page 61 | 1276 | // 6: Supplemental enhancement information (SEI) sei_rbsp( ), page 61 |
| 1272 | // @see: ngx_rtmp_hls_append_aud | 1277 | // @see: ngx_rtmp_hls_append_aud |
| 1273 | if (!aud_sent) { | 1278 | if (!aud_sent) { |
| 1274 | - if (nal_unit_type == 9) { | 1279 | + // @remark, when got type 9, we donot send aud_nal, but it will make |
| 1280 | + // ios unhappy, so we remove it. | ||
| 1281 | + // @see https://github.com/winlinvip/simple-rtmp-server/issues/281 | ||
| 1282 | + /*if (nal_unit_type == 9) { | ||
| 1275 | aud_sent = true; | 1283 | aud_sent = true; |
| 1276 | - } | 1284 | + }*/ |
| 1285 | + | ||
| 1277 | if (nal_unit_type == 1 || nal_unit_type == 5 || nal_unit_type == 6) { | 1286 | if (nal_unit_type == 1 || nal_unit_type == 5 || nal_unit_type == 6) { |
| 1278 | // for type 6, append a aud with type 9. | 1287 | // for type 6, append a aud with type 9. |
| 1279 | vb->append((const char*)aud_nal, sizeof(aud_nal)); | 1288 | vb->append((const char*)aud_nal, sizeof(aud_nal)); |
| @@ -1486,6 +1495,12 @@ int SrsHls::on_video(SrsSharedPtrMessage* video) | @@ -1486,6 +1495,12 @@ int SrsHls::on_video(SrsSharedPtrMessage* video) | ||
| 1486 | return ret; | 1495 | return ret; |
| 1487 | } | 1496 | } |
| 1488 | 1497 | ||
| 1498 | + // ignore info frame, | ||
| 1499 | + // @see https://github.com/winlinvip/simple-rtmp-server/issues/288#issuecomment-69863909 | ||
| 1500 | + if (sample->frame_type == SrsCodecVideoAVCFrameVideoInfoFrame) { | ||
| 1501 | + return ret; | ||
| 1502 | + } | ||
| 1503 | + | ||
| 1489 | if (codec->video_codec_id != SrsCodecVideoAVC) { | 1504 | if (codec->video_codec_id != SrsCodecVideoAVC) { |
| 1490 | return ret; | 1505 | return ret; |
| 1491 | } | 1506 | } |
| @@ -81,7 +81,7 @@ int SrsHttpClient::post(SrsHttpUri* uri, string req, string& res) | @@ -81,7 +81,7 @@ int SrsHttpClient::post(SrsHttpUri* uri, string req, string& res) | ||
| 81 | << "Connection: Keep-Alive" << __SRS_CRLF | 81 | << "Connection: Keep-Alive" << __SRS_CRLF |
| 82 | << "Content-Length: " << std::dec << req.length() << __SRS_CRLF | 82 | << "Content-Length: " << std::dec << req.length() << __SRS_CRLF |
| 83 | << "User-Agent: " << RTMP_SIG_SRS_NAME << RTMP_SIG_SRS_VERSION << __SRS_CRLF | 83 | << "User-Agent: " << RTMP_SIG_SRS_NAME << RTMP_SIG_SRS_VERSION << __SRS_CRLF |
| 84 | - << "Content-Type: text/html" << __SRS_CRLF | 84 | + << "Content-Type: application/json" << __SRS_CRLF |
| 85 | << __SRS_CRLF | 85 | << __SRS_CRLF |
| 86 | << req; | 86 | << req; |
| 87 | 87 | ||
| @@ -111,6 +111,8 @@ int SrsHttpClient::post(SrsHttpUri* uri, string req, string& res) | @@ -111,6 +111,8 @@ int SrsHttpClient::post(SrsHttpUri* uri, string req, string& res) | ||
| 111 | } | 111 | } |
| 112 | srs_info("parse http post response success."); | 112 | srs_info("parse http post response success."); |
| 113 | 113 | ||
| 114 | + srs_freep(msg); | ||
| 115 | + | ||
| 114 | return ret; | 116 | return ret; |
| 115 | } | 117 | } |
| 116 | 118 |
| @@ -112,8 +112,7 @@ void SrsHttpHooks::on_close(string url, int client_id, string ip, SrsRequest* re | @@ -112,8 +112,7 @@ void SrsHttpHooks::on_close(string url, int client_id, string ip, SrsRequest* re | ||
| 112 | << __SRS_JFIELD_ORG("client_id", client_id) << __SRS_JFIELD_CONT | 112 | << __SRS_JFIELD_ORG("client_id", client_id) << __SRS_JFIELD_CONT |
| 113 | << __SRS_JFIELD_STR("ip", ip) << __SRS_JFIELD_CONT | 113 | << __SRS_JFIELD_STR("ip", ip) << __SRS_JFIELD_CONT |
| 114 | << __SRS_JFIELD_STR("vhost", req->vhost) << __SRS_JFIELD_CONT | 114 | << __SRS_JFIELD_STR("vhost", req->vhost) << __SRS_JFIELD_CONT |
| 115 | - << __SRS_JFIELD_STR("app", req->app) << __SRS_JFIELD_CONT | ||
| 116 | - << __SRS_JFIELD_STR("pageUrl", req->pageUrl) | 115 | + << __SRS_JFIELD_STR("app", req->app) |
| 117 | << __SRS_JOBJECT_END; | 116 | << __SRS_JOBJECT_END; |
| 118 | std::string data = ss.str(); | 117 | std::string data = ss.str(); |
| 119 | std::string res; | 118 | std::string res; |
| @@ -158,7 +157,6 @@ int SrsHttpHooks::on_publish(string url, int client_id, string ip, SrsRequest* r | @@ -158,7 +157,6 @@ int SrsHttpHooks::on_publish(string url, int client_id, string ip, SrsRequest* r | ||
| 158 | << __SRS_JFIELD_STR("ip", ip) << __SRS_JFIELD_CONT | 157 | << __SRS_JFIELD_STR("ip", ip) << __SRS_JFIELD_CONT |
| 159 | << __SRS_JFIELD_STR("vhost", req->vhost) << __SRS_JFIELD_CONT | 158 | << __SRS_JFIELD_STR("vhost", req->vhost) << __SRS_JFIELD_CONT |
| 160 | << __SRS_JFIELD_STR("app", req->app) << __SRS_JFIELD_CONT | 159 | << __SRS_JFIELD_STR("app", req->app) << __SRS_JFIELD_CONT |
| 161 | - << __SRS_JFIELD_STR("pageUrl", req->pageUrl) << __SRS_JFIELD_CONT | ||
| 162 | << __SRS_JFIELD_STR("stream", req->stream) | 160 | << __SRS_JFIELD_STR("stream", req->stream) |
| 163 | << __SRS_JOBJECT_END; | 161 | << __SRS_JOBJECT_END; |
| 164 | std::string data = ss.str(); | 162 | std::string data = ss.str(); |
| @@ -204,7 +202,6 @@ void SrsHttpHooks::on_unpublish(string url, int client_id, string ip, SrsRequest | @@ -204,7 +202,6 @@ void SrsHttpHooks::on_unpublish(string url, int client_id, string ip, SrsRequest | ||
| 204 | << __SRS_JFIELD_STR("ip", ip) << __SRS_JFIELD_CONT | 202 | << __SRS_JFIELD_STR("ip", ip) << __SRS_JFIELD_CONT |
| 205 | << __SRS_JFIELD_STR("vhost", req->vhost) << __SRS_JFIELD_CONT | 203 | << __SRS_JFIELD_STR("vhost", req->vhost) << __SRS_JFIELD_CONT |
| 206 | << __SRS_JFIELD_STR("app", req->app) << __SRS_JFIELD_CONT | 204 | << __SRS_JFIELD_STR("app", req->app) << __SRS_JFIELD_CONT |
| 207 | - << __SRS_JFIELD_STR("pageUrl", req->pageUrl) << __SRS_JFIELD_CONT | ||
| 208 | << __SRS_JFIELD_STR("stream", req->stream) | 205 | << __SRS_JFIELD_STR("stream", req->stream) |
| 209 | << __SRS_JOBJECT_END; | 206 | << __SRS_JOBJECT_END; |
| 210 | std::string data = ss.str(); | 207 | std::string data = ss.str(); |
| @@ -250,7 +247,6 @@ int SrsHttpHooks::on_play(string url, int client_id, string ip, SrsRequest* req) | @@ -250,7 +247,6 @@ int SrsHttpHooks::on_play(string url, int client_id, string ip, SrsRequest* req) | ||
| 250 | << __SRS_JFIELD_STR("ip", ip) << __SRS_JFIELD_CONT | 247 | << __SRS_JFIELD_STR("ip", ip) << __SRS_JFIELD_CONT |
| 251 | << __SRS_JFIELD_STR("vhost", req->vhost) << __SRS_JFIELD_CONT | 248 | << __SRS_JFIELD_STR("vhost", req->vhost) << __SRS_JFIELD_CONT |
| 252 | << __SRS_JFIELD_STR("app", req->app) << __SRS_JFIELD_CONT | 249 | << __SRS_JFIELD_STR("app", req->app) << __SRS_JFIELD_CONT |
| 253 | - << __SRS_JFIELD_STR("pageUrl", req->pageUrl) << __SRS_JFIELD_CONT | ||
| 254 | << __SRS_JFIELD_STR("stream", req->stream) | 250 | << __SRS_JFIELD_STR("stream", req->stream) |
| 255 | << __SRS_JOBJECT_END; | 251 | << __SRS_JOBJECT_END; |
| 256 | std::string data = ss.str(); | 252 | std::string data = ss.str(); |
| @@ -296,7 +292,6 @@ void SrsHttpHooks::on_stop(string url, int client_id, string ip, SrsRequest* req | @@ -296,7 +292,6 @@ void SrsHttpHooks::on_stop(string url, int client_id, string ip, SrsRequest* req | ||
| 296 | << __SRS_JFIELD_STR("ip", ip) << __SRS_JFIELD_CONT | 292 | << __SRS_JFIELD_STR("ip", ip) << __SRS_JFIELD_CONT |
| 297 | << __SRS_JFIELD_STR("vhost", req->vhost) << __SRS_JFIELD_CONT | 293 | << __SRS_JFIELD_STR("vhost", req->vhost) << __SRS_JFIELD_CONT |
| 298 | << __SRS_JFIELD_STR("app", req->app) << __SRS_JFIELD_CONT | 294 | << __SRS_JFIELD_STR("app", req->app) << __SRS_JFIELD_CONT |
| 299 | - << __SRS_JFIELD_STR("pageUrl", req->pageUrl) << __SRS_JFIELD_CONT | ||
| 300 | << __SRS_JFIELD_STR("stream", req->stream) | 295 | << __SRS_JFIELD_STR("stream", req->stream) |
| 301 | << __SRS_JOBJECT_END; | 296 | << __SRS_JOBJECT_END; |
| 302 | std::string data = ss.str(); | 297 | std::string data = ss.str(); |
| @@ -31,7 +31,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -31,7 +31,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 31 | // current release version | 31 | // current release version |
| 32 | #define VERSION_MAJOR 1 | 32 | #define VERSION_MAJOR 1 |
| 33 | #define VERSION_MINOR 0 | 33 | #define VERSION_MINOR 0 |
| 34 | -#define VERSION_REVISION 13 | 34 | +#define VERSION_REVISION 21 |
| 35 | + | ||
| 35 | // server info. | 36 | // server info. |
| 36 | #define RTMP_SIG_SRS_KEY "SRS" | 37 | #define RTMP_SIG_SRS_KEY "SRS" |
| 37 | #define RTMP_SIG_SRS_ROLE "origin/edge server" | 38 | #define RTMP_SIG_SRS_ROLE "origin/edge server" |
| @@ -1207,12 +1207,12 @@ VOID TEST(KernelStreamTest, StreamRead8Bytes) | @@ -1207,12 +1207,12 @@ VOID TEST(KernelStreamTest, StreamRead8Bytes) | ||
| 1207 | data[18] = 0x13; | 1207 | data[18] = 0x13; |
| 1208 | data[19] = 0x14; | 1208 | data[19] = 0x14; |
| 1209 | 1209 | ||
| 1210 | - EXPECT_EQ(0x0102030405060708, s.read_8bytes()); | ||
| 1211 | - EXPECT_EQ(0x090a0b0c0d0e0f10, s.read_8bytes()); | 1210 | + EXPECT_EQ(0x0102030405060708LL, s.read_8bytes()); |
| 1211 | + EXPECT_EQ(0x090a0b0c0d0e0f10LL, s.read_8bytes()); | ||
| 1212 | 1212 | ||
| 1213 | s.skip(-1 * s.pos()); | 1213 | s.skip(-1 * s.pos()); |
| 1214 | s.skip(5); | 1214 | s.skip(5); |
| 1215 | - EXPECT_EQ(0x060708090a0b0c0d, s.read_8bytes()); | 1215 | + EXPECT_EQ(0x060708090a0b0c0dLL, s.read_8bytes()); |
| 1216 | } | 1216 | } |
| 1217 | 1217 | ||
| 1218 | /** | 1218 | /** |
| @@ -1365,8 +1365,8 @@ VOID TEST(KernelStreamTest, StreamWrite8Bytes) | @@ -1365,8 +1365,8 @@ VOID TEST(KernelStreamTest, StreamWrite8Bytes) | ||
| 1365 | 1365 | ||
| 1366 | EXPECT_TRUE(ERROR_SUCCESS == s.initialize(data, 1024)); | 1366 | EXPECT_TRUE(ERROR_SUCCESS == s.initialize(data, 1024)); |
| 1367 | 1367 | ||
| 1368 | - s.write_8bytes(0x1011121314151617); | ||
| 1369 | - s.write_8bytes(0x1819202122232425); | 1368 | + s.write_8bytes(0x1011121314151617LL); |
| 1369 | + s.write_8bytes(0x1819202122232425LL); | ||
| 1370 | 1370 | ||
| 1371 | s.skip(-1 * s.pos()); | 1371 | s.skip(-1 * s.pos()); |
| 1372 | EXPECT_EQ(0x10, s.read_1bytes()); | 1372 | EXPECT_EQ(0x10, s.read_1bytes()); |
-
请 注册 或 登录 后发表评论