正在显示
3 个修改的文件
包含
52 行增加
和
6 行删除
| @@ -250,7 +250,7 @@ Compare SRS with other media server. | @@ -250,7 +250,7 @@ Compare SRS with other media server. | ||
| 250 | | RTMP Edge | Stable | X | X | Stable | X | | 250 | | RTMP Edge | Stable | X | X | Stable | X | |
| 251 | | RTMP Backup | Stable | X | X | X | X | | 251 | | RTMP Backup | Stable | X | X | X | X | |
| 252 | | VHOST | Stable | X | X | Stable | Stable | | 252 | | VHOST | Stable | X | X | Stable | Stable | |
| 253 | -| Reload | Stable | Stable | X | X | X | | 253 | +| Reload | Stable | X | X | X | X | |
| 254 | | Forward | Stable | X | X | X | X | | 254 | | Forward | Stable | X | X | X | X | |
| 255 | | ATC | Stable | X | X | X | X | | 255 | | ATC | Stable | X | X | X | X | |
| 256 | 256 | ||
| @@ -312,6 +312,7 @@ Remark: | @@ -312,6 +312,7 @@ Remark: | ||
| 312 | 1. HLS aonly: The HLS audio only streaming delivery. | 312 | 1. HLS aonly: The HLS audio only streaming delivery. |
| 313 | 1. BW check: The bandwidth check. | 313 | 1. BW check: The bandwidth check. |
| 314 | 1. Security: To allow or deny stream publish or play. | 314 | 1. Security: To allow or deny stream publish or play. |
| 315 | +1. Reload: Nginx supports reload, but not nginx-rtmp. | ||
| 315 | 316 | ||
| 316 | ## Releases | 317 | ## Releases |
| 317 | 318 |
| @@ -292,6 +292,7 @@ SrsHlsMuxer::SrsHlsMuxer() | @@ -292,6 +292,7 @@ SrsHlsMuxer::SrsHlsMuxer() | ||
| 292 | 292 | ||
| 293 | SrsHlsMuxer::~SrsHlsMuxer() | 293 | SrsHlsMuxer::~SrsHlsMuxer() |
| 294 | { | 294 | { |
| 295 | + | ||
| 295 | std::vector<SrsHlsSegment*>::iterator it; | 296 | std::vector<SrsHlsSegment*>::iterator it; |
| 296 | for (it = segments.begin(); it != segments.end(); ++it) { | 297 | for (it = segments.begin(); it != segments.end(); ++it) { |
| 297 | SrsHlsSegment* segment = *it; | 298 | SrsHlsSegment* segment = *it; |
| @@ -305,6 +306,40 @@ SrsHlsMuxer::~SrsHlsMuxer() | @@ -305,6 +306,40 @@ SrsHlsMuxer::~SrsHlsMuxer() | ||
| 305 | srs_freep(context); | 306 | srs_freep(context); |
| 306 | } | 307 | } |
| 307 | 308 | ||
| 309 | +void SrsHlsMuxer::dispose() | ||
| 310 | +{ | ||
| 311 | + if (!should_write_file) { | ||
| 312 | + return; | ||
| 313 | + } | ||
| 314 | + | ||
| 315 | + std::vector<SrsHlsSegment*>::iterator it; | ||
| 316 | + for (it = segments.begin(); it != segments.end(); ++it) { | ||
| 317 | + SrsHlsSegment* segment = *it; | ||
| 318 | + if (unlink(segment->full_path.c_str()) < 0) { | ||
| 319 | + srs_warn("dispose unlink path failed, file=%s.", segment->full_path.c_str()); | ||
| 320 | + } | ||
| 321 | + } | ||
| 322 | + | ||
| 323 | + if (current) { | ||
| 324 | + std::string path = current->full_path + ".tmp"; | ||
| 325 | + if (unlink(path.c_str()) < 0) { | ||
| 326 | + srs_warn("dispose unlink path failed, file=%s", path.c_str()); | ||
| 327 | + } | ||
| 328 | + } | ||
| 329 | + | ||
| 330 | + if (unlink(m3u8.c_str()) < 0) { | ||
| 331 | + srs_warn("dispose unlink path failed. file=%s", m3u8.c_str()); | ||
| 332 | + } | ||
| 333 | + srs_trace("gracefully dispose hls %s", req? req->get_stream_url().c_str() : ""); | ||
| 334 | +} | ||
| 335 | + | ||
| 336 | +int SrsHlsMuxer::cycle() | ||
| 337 | +{ | ||
| 338 | + int ret = ERROR_SUCCESS; | ||
| 339 | + // TODO: FIXME: implements it. | ||
| 340 | + return ret; | ||
| 341 | +} | ||
| 342 | + | ||
| 308 | int SrsHlsMuxer::sequence_no() | 343 | int SrsHlsMuxer::sequence_no() |
| 309 | { | 344 | { |
| 310 | return _sequence_no; | 345 | return _sequence_no; |
| @@ -720,6 +755,9 @@ int SrsHlsMuxer::segment_close(string log_desc) | @@ -720,6 +755,9 @@ int SrsHlsMuxer::segment_close(string log_desc) | ||
| 720 | std::string tmp_file = current->full_path + ".tmp"; | 755 | std::string tmp_file = current->full_path + ".tmp"; |
| 721 | if (should_write_file) { | 756 | if (should_write_file) { |
| 722 | unlink(tmp_file.c_str()); | 757 | unlink(tmp_file.c_str()); |
| 758 | + if (unlink(tmp_file.c_str()) < 0) { | ||
| 759 | + srs_warn("drop unlink path failed, file=%s.", tmp_file.c_str()); | ||
| 760 | + } | ||
| 723 | } | 761 | } |
| 724 | 762 | ||
| 725 | srs_freep(current); | 763 | srs_freep(current); |
| @@ -754,7 +792,9 @@ int SrsHlsMuxer::segment_close(string log_desc) | @@ -754,7 +792,9 @@ int SrsHlsMuxer::segment_close(string log_desc) | ||
| 754 | SrsHlsSegment* segment = segment_to_remove[i]; | 792 | SrsHlsSegment* segment = segment_to_remove[i]; |
| 755 | 793 | ||
| 756 | if (hls_cleanup) { | 794 | if (hls_cleanup) { |
| 757 | - unlink(segment->full_path.c_str()); | 795 | + if (unlink(segment->full_path.c_str()) < 0) { |
| 796 | + srs_warn("cleanup unlink path failed, file=%s.", segment->full_path.c_str()); | ||
| 797 | + } | ||
| 758 | } | 798 | } |
| 759 | 799 | ||
| 760 | srs_freep(segment); | 800 | srs_freep(segment); |
| @@ -1111,15 +1151,17 @@ SrsHls::~SrsHls() | @@ -1111,15 +1151,17 @@ SrsHls::~SrsHls() | ||
| 1111 | 1151 | ||
| 1112 | void SrsHls::dispose() | 1152 | void SrsHls::dispose() |
| 1113 | { | 1153 | { |
| 1154 | + if (hls_enabled) { | ||
| 1155 | + on_unpublish(); | ||
| 1156 | + } | ||
| 1157 | + | ||
| 1158 | + muxer->dispose(); | ||
| 1114 | } | 1159 | } |
| 1115 | 1160 | ||
| 1116 | int SrsHls::cycle() | 1161 | int SrsHls::cycle() |
| 1117 | { | 1162 | { |
| 1118 | - int ret = ERROR_SUCCESS; | ||
| 1119 | - | ||
| 1120 | srs_info("hls cycle for source %d", source->source_id()); | 1163 | srs_info("hls cycle for source %d", source->source_id()); |
| 1121 | - | ||
| 1122 | - return ret; | 1164 | + return muxer->cycle(); |
| 1123 | } | 1165 | } |
| 1124 | 1166 | ||
| 1125 | int SrsHls::initialize(SrsSource* s, ISrsHlsHandler* h) | 1167 | int SrsHls::initialize(SrsSource* s, ISrsHlsHandler* h) |
| @@ -260,6 +260,9 @@ public: | @@ -260,6 +260,9 @@ public: | ||
| 260 | SrsHlsMuxer(); | 260 | SrsHlsMuxer(); |
| 261 | virtual ~SrsHlsMuxer(); | 261 | virtual ~SrsHlsMuxer(); |
| 262 | public: | 262 | public: |
| 263 | + virtual void dispose(); | ||
| 264 | + virtual int cycle(); | ||
| 265 | +public: | ||
| 263 | virtual int sequence_no(); | 266 | virtual int sequence_no(); |
| 264 | virtual std::string ts_url(); | 267 | virtual std::string ts_url(); |
| 265 | virtual double duration(); | 268 | virtual double duration(); |
-
请 注册 或 登录 后发表评论