正在显示
3 个修改的文件
包含
25 行增加
和
14 行删除
@@ -506,13 +506,13 @@ int SrsHlsMuxer::_refresh_m3u8(string m3u8_file) | @@ -506,13 +506,13 @@ int SrsHlsMuxer::_refresh_m3u8(string m3u8_file) | ||
506 | // #EXTM3U\n#EXT-X-VERSION:3\n | 506 | // #EXTM3U\n#EXT-X-VERSION:3\n |
507 | char header[] = { | 507 | char header[] = { |
508 | // #EXTM3U\n | 508 | // #EXTM3U\n |
509 | - 0x23, 0x45, 0x58, 0x54, 0x4d, 0x33, 0x55, 0xa, | 509 | + 0x23, 0x45, 0x58, 0x54, 0x4d, 0x33, 0x55, SRS_CONSTS_LF, |
510 | // #EXT-X-VERSION:3\n | 510 | // #EXT-X-VERSION:3\n |
511 | 0x23, 0x45, 0x58, 0x54, 0x2d, 0x58, 0x2d, 0x56, 0x45, 0x52, | 511 | 0x23, 0x45, 0x58, 0x54, 0x2d, 0x58, 0x2d, 0x56, 0x45, 0x52, |
512 | - 0x53, 0x49, 0x4f, 0x4e, 0x3a, 0x33, 0xa, | ||
513 | - // #EXT-X-ALLOW-CACHE:NO | 512 | + 0x53, 0x49, 0x4f, 0x4e, 0x3a, 0x33, SRS_CONSTS_LF, |
513 | + // #EXT-X-ALLOW-CACHE:NO\n | ||
514 | 0x23, 0x45, 0x58, 0x54, 0x2d, 0x58, 0x2d, 0x41, 0x4c, 0x4c, | 514 | 0x23, 0x45, 0x58, 0x54, 0x2d, 0x58, 0x2d, 0x41, 0x4c, 0x4c, |
515 | - 0x4f, 0x57, 0x2d, 0x43, 0x41, 0x43, 0x48, 0x45, 0x3a, 0x4e, 0x4f, 0x0a | 515 | + 0x4f, 0x57, 0x2d, 0x43, 0x41, 0x43, 0x48, 0x45, 0x3a, 0x4e, 0x4f, SRS_CONSTS_LF |
516 | }; | 516 | }; |
517 | if ((ret = writer.write(header, sizeof(header), NULL)) != ERROR_SUCCESS) { | 517 | if ((ret = writer.write(header, sizeof(header), NULL)) != ERROR_SUCCESS) { |
518 | srs_error("write m3u8 header failed. ret=%d", ret); | 518 | srs_error("write m3u8 header failed. ret=%d", ret); |
@@ -523,7 +523,7 @@ int SrsHlsMuxer::_refresh_m3u8(string m3u8_file) | @@ -523,7 +523,7 @@ int SrsHlsMuxer::_refresh_m3u8(string m3u8_file) | ||
523 | // #EXT-X-MEDIA-SEQUENCE:4294967295\n | 523 | // #EXT-X-MEDIA-SEQUENCE:4294967295\n |
524 | SrsHlsSegment* first = *segments.begin(); | 524 | SrsHlsSegment* first = *segments.begin(); |
525 | char sequence[34] = {}; | 525 | char sequence[34] = {}; |
526 | - int len = snprintf(sequence, sizeof(sequence), "#EXT-X-MEDIA-SEQUENCE:%d\n", first->sequence_no); | 526 | + int len = snprintf(sequence, sizeof(sequence), "#EXT-X-MEDIA-SEQUENCE:%d%c", first->sequence_no, SRS_CONSTS_LF); |
527 | if ((ret = writer.write(sequence, len, NULL)) != ERROR_SUCCESS) { | 527 | if ((ret = writer.write(sequence, len, NULL)) != ERROR_SUCCESS) { |
528 | srs_error("write m3u8 sequence failed. ret=%d", ret); | 528 | srs_error("write m3u8 sequence failed. ret=%d", ret); |
529 | return ret; | 529 | return ret; |
@@ -540,7 +540,7 @@ int SrsHlsMuxer::_refresh_m3u8(string m3u8_file) | @@ -540,7 +540,7 @@ int SrsHlsMuxer::_refresh_m3u8(string m3u8_file) | ||
540 | // TODO: maybe need to take an around value | 540 | // TODO: maybe need to take an around value |
541 | target_duration += 1; | 541 | target_duration += 1; |
542 | char duration[34]; // 23+10+1 | 542 | char duration[34]; // 23+10+1 |
543 | - len = snprintf(duration, sizeof(duration), "#EXT-X-TARGETDURATION:%d\n", target_duration); | 543 | + len = snprintf(duration, sizeof(duration), "#EXT-X-TARGETDURATION:%d%c", target_duration, SRS_CONSTS_LF); |
544 | if ((ret = writer.write(duration, len, NULL)) != ERROR_SUCCESS) { | 544 | if ((ret = writer.write(duration, len, NULL)) != ERROR_SUCCESS) { |
545 | srs_error("write m3u8 duration failed. ret=%d", ret); | 545 | srs_error("write m3u8 duration failed. ret=%d", ret); |
546 | return ret; | 546 | return ret; |
@@ -554,7 +554,7 @@ int SrsHlsMuxer::_refresh_m3u8(string m3u8_file) | @@ -554,7 +554,7 @@ int SrsHlsMuxer::_refresh_m3u8(string m3u8_file) | ||
554 | if (segment->is_sequence_header) { | 554 | if (segment->is_sequence_header) { |
555 | // #EXT-X-DISCONTINUITY\n | 555 | // #EXT-X-DISCONTINUITY\n |
556 | char ext_discon[22]; // 21+1 | 556 | char ext_discon[22]; // 21+1 |
557 | - len = snprintf(ext_discon, sizeof(ext_discon), "#EXT-X-DISCONTINUITY\n"); | 557 | + len = snprintf(ext_discon, sizeof(ext_discon), "#EXT-X-DISCONTINUITY%c", SRS_CONSTS_LF); |
558 | if ((ret = writer.write(ext_discon, len, NULL)) != ERROR_SUCCESS) { | 558 | if ((ret = writer.write(ext_discon, len, NULL)) != ERROR_SUCCESS) { |
559 | srs_error("write m3u8 segment discontinuity failed. ret=%d", ret); | 559 | srs_error("write m3u8 segment discontinuity failed. ret=%d", ret); |
560 | return ret; | 560 | return ret; |
@@ -564,16 +564,16 @@ int SrsHlsMuxer::_refresh_m3u8(string m3u8_file) | @@ -564,16 +564,16 @@ int SrsHlsMuxer::_refresh_m3u8(string m3u8_file) | ||
564 | 564 | ||
565 | // "#EXTINF:4294967295.208,\n" | 565 | // "#EXTINF:4294967295.208,\n" |
566 | char ext_info[25]; // 14+10+1 | 566 | char ext_info[25]; // 14+10+1 |
567 | - len = snprintf(ext_info, sizeof(ext_info), "#EXTINF:%.3f,\n", segment->duration); | 567 | + len = snprintf(ext_info, sizeof(ext_info), "#EXTINF:%.3f,%c", segment->duration, SRS_CONSTS_LF); |
568 | if ((ret = writer.write(ext_info, len, NULL)) != ERROR_SUCCESS) { | 568 | if ((ret = writer.write(ext_info, len, NULL)) != ERROR_SUCCESS) { |
569 | srs_error("write m3u8 segment info failed. ret=%d", ret); | 569 | srs_error("write m3u8 segment info failed. ret=%d", ret); |
570 | return ret; | 570 | return ret; |
571 | } | 571 | } |
572 | srs_verbose("write m3u8 segment info success."); | 572 | srs_verbose("write m3u8 segment info success."); |
573 | 573 | ||
574 | - // file name | 574 | + // {file name}\n |
575 | std::string filename = segment->uri; | 575 | std::string filename = segment->uri; |
576 | - filename += "\n"; | 576 | + filename += SRS_CONSTS_LF; |
577 | if ((ret = writer.write((char*)filename.c_str(), (int)filename.length(), NULL)) != ERROR_SUCCESS) { | 577 | if ((ret = writer.write((char*)filename.c_str(), (int)filename.length(), NULL)) != ERROR_SUCCESS) { |
578 | srs_error("write m3u8 segment uri failed. ret=%d", ret); | 578 | srs_error("write m3u8 segment uri failed. ret=%d", ret); |
579 | return ret; | 579 | return ret; |
@@ -51,13 +51,13 @@ class ISrsGoHttpResponseWriter; | @@ -51,13 +51,13 @@ class ISrsGoHttpResponseWriter; | ||
51 | 51 | ||
52 | // http specification | 52 | // http specification |
53 | // CR = <US-ASCII CR, carriage return (13)> | 53 | // CR = <US-ASCII CR, carriage return (13)> |
54 | -#define __SRS_CR "\r" // 0x0D | 54 | +#define __SRS_CR SRS_CONSTS_CR // 0x0D |
55 | // LF = <US-ASCII LF, linefeed (10)> | 55 | // LF = <US-ASCII LF, linefeed (10)> |
56 | -#define __SRS_LF "\n" // 0x0A | 56 | +#define __SRS_LF SRS_CONSTS_LF // 0x0A |
57 | // SP = <US-ASCII SP, space (32)> | 57 | // SP = <US-ASCII SP, space (32)> |
58 | -#define __SRS_SP " " // 0x20 | 58 | +#define __SRS_SP ' ' // 0x20 |
59 | // HT = <US-ASCII HT, horizontal-tab (9)> | 59 | // HT = <US-ASCII HT, horizontal-tab (9)> |
60 | -#define __SRS_HT "\x09" // 0x09 | 60 | +#define __SRS_HT '\x09' // 0x09 |
61 | 61 | ||
62 | // HTTP/1.1 defines the sequence CR LF as the end-of-line marker for all | 62 | // HTTP/1.1 defines the sequence CR LF as the end-of-line marker for all |
63 | // protocol elements except the entity-body (see appendix 19.3 for | 63 | // protocol elements except the entity-body (see appendix 19.3 for |
@@ -202,6 +202,17 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -202,6 +202,17 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
202 | #define SRS_CONSTS_RTMP_ON_METADATA "onMetaData" | 202 | #define SRS_CONSTS_RTMP_ON_METADATA "onMetaData" |
203 | 203 | ||
204 | /////////////////////////////////////////////////////////// | 204 | /////////////////////////////////////////////////////////// |
205 | +// HTTP/HLS consts values | ||
206 | +/////////////////////////////////////////////////////////// | ||
207 | +// @see hls-m3u8-draft-pantos-http-live-streaming-12.pdf, page 4 | ||
208 | +// Lines are terminated by either a single LF character or a CR | ||
209 | +// character followed by an LF character. | ||
210 | +// CR = <US-ASCII CR, carriage return (13)> | ||
211 | +#define SRS_CONSTS_CR '\r' // 0x0D | ||
212 | +// LF = <US-ASCII LF, linefeed (10)> | ||
213 | +#define SRS_CONSTS_LF '\n' // 0x0A | ||
214 | + | ||
215 | +/////////////////////////////////////////////////////////// | ||
205 | // HTTP consts values | 216 | // HTTP consts values |
206 | /////////////////////////////////////////////////////////// | 217 | /////////////////////////////////////////////////////////// |
207 | // linux path seprator | 218 | // linux path seprator |
-
请 注册 或 登录 后发表评论