正在显示
1 个修改的文件
包含
19 行增加
和
28 行删除
| @@ -48,9 +48,6 @@ using namespace std; | @@ -48,9 +48,6 @@ using namespace std; | ||
| 48 | #include <srs_rtmp_amf0.hpp> | 48 | #include <srs_rtmp_amf0.hpp> |
| 49 | #include <srs_raw_avc.hpp> | 49 | #include <srs_raw_avc.hpp> |
| 50 | 50 | ||
| 51 | -// the retry timeout in ms. | ||
| 52 | -#define SRS_INGEST_HLS_ERROR_RETRY_MS 3000 | ||
| 53 | - | ||
| 54 | // pre-declare | 51 | // pre-declare |
| 55 | int proxy_hls2rtmp(std::string hls, std::string rtmp); | 52 | int proxy_hls2rtmp(std::string hls, std::string rtmp); |
| 56 | 53 | ||
| @@ -217,7 +214,7 @@ private: | @@ -217,7 +214,7 @@ private: | ||
| 217 | /** | 214 | /** |
| 218 | * fetch all ts body. | 215 | * fetch all ts body. |
| 219 | */ | 216 | */ |
| 220 | - virtual void fetch_all_ts(bool fresh_m3u8); | 217 | + virtual int fetch_all_ts(bool fresh_m3u8); |
| 221 | /** | 218 | /** |
| 222 | * remove all ts which is dirty. | 219 | * remove all ts which is dirty. |
| 223 | */ | 220 | */ |
| @@ -245,7 +242,10 @@ int SrsIngestSrsInput::connect() | @@ -245,7 +242,10 @@ int SrsIngestSrsInput::connect() | ||
| 245 | } | 242 | } |
| 246 | 243 | ||
| 247 | // fetch all ts. | 244 | // fetch all ts. |
| 248 | - fetch_all_ts(fresh_m3u8); | 245 | + if ((ret = fetch_all_ts(fresh_m3u8)) != ERROR_SUCCESS) { |
| 246 | + srs_error("fetch all ts failed. ret=%d", ret); | ||
| 247 | + return ret; | ||
| 248 | + } | ||
| 249 | 249 | ||
| 250 | // remove all dirty ts. | 250 | // remove all dirty ts. |
| 251 | remove_dirty(); | 251 | remove_dirty(); |
| @@ -304,14 +304,8 @@ int SrsIngestSrsInput::parseTs(ISrsTsHandler* handler, char* body, int nb_body) | @@ -304,14 +304,8 @@ int SrsIngestSrsInput::parseTs(ISrsTsHandler* handler, char* body, int nb_body) | ||
| 304 | 304 | ||
| 305 | // process each ts packet | 305 | // process each ts packet |
| 306 | if ((ret = context->decode(stream, handler)) != ERROR_SUCCESS) { | 306 | if ((ret = context->decode(stream, handler)) != ERROR_SUCCESS) { |
| 307 | - // when peer closed, must interrupt parse and reconnect. | ||
| 308 | - if (srs_is_client_gracefully_close(ret)) { | ||
| 309 | - srs_warn("interrupt parse for peer closed. ret=%d", ret); | ||
| 310 | - return ret; | ||
| 311 | - } | ||
| 312 | - | ||
| 313 | - srs_warn("mpegts: ignore parse ts packet failed. ret=%d", ret); | ||
| 314 | - continue; | 307 | + srs_error("mpegts: ignore parse ts packet failed. ret=%d", ret); |
| 308 | + return ret; | ||
| 315 | } | 309 | } |
| 316 | srs_info("mpegts: parse ts packet completed"); | 310 | srs_info("mpegts: parse ts packet completed"); |
| 317 | } | 311 | } |
| @@ -536,7 +530,7 @@ void SrsIngestSrsInput::dirty_all_ts() | @@ -536,7 +530,7 @@ void SrsIngestSrsInput::dirty_all_ts() | ||
| 536 | } | 530 | } |
| 537 | } | 531 | } |
| 538 | 532 | ||
| 539 | -void SrsIngestSrsInput::fetch_all_ts(bool fresh_m3u8) | 533 | +int SrsIngestSrsInput::fetch_all_ts(bool fresh_m3u8) |
| 540 | { | 534 | { |
| 541 | int ret = ERROR_SUCCESS; | 535 | int ret = ERROR_SUCCESS; |
| 542 | 536 | ||
| @@ -555,9 +549,9 @@ void SrsIngestSrsInput::fetch_all_ts(bool fresh_m3u8) | @@ -555,9 +549,9 @@ void SrsIngestSrsInput::fetch_all_ts(bool fresh_m3u8) | ||
| 555 | } | 549 | } |
| 556 | 550 | ||
| 557 | if ((ret = tp->fetch(in_hls->get_url())) != ERROR_SUCCESS) { | 551 | if ((ret = tp->fetch(in_hls->get_url())) != ERROR_SUCCESS) { |
| 558 | - srs_warn("ignore ts %s for error. ret=%d", tp->url.c_str(), ret); | 552 | + srs_error("fetch ts %s for error. ret=%d", tp->url.c_str(), ret); |
| 559 | tp->skip = true; | 553 | tp->skip = true; |
| 560 | - continue; | 554 | + return ret; |
| 561 | } | 555 | } |
| 562 | 556 | ||
| 563 | // only wait for a duration of last piece. | 557 | // only wait for a duration of last piece. |
| @@ -565,6 +559,8 @@ void SrsIngestSrsInput::fetch_all_ts(bool fresh_m3u8) | @@ -565,6 +559,8 @@ void SrsIngestSrsInput::fetch_all_ts(bool fresh_m3u8) | ||
| 565 | next_connect_time = srs_update_system_time_ms() + (int)tp->duration * 1000; | 559 | next_connect_time = srs_update_system_time_ms() + (int)tp->duration * 1000; |
| 566 | } | 560 | } |
| 567 | } | 561 | } |
| 562 | + | ||
| 563 | + return ret; | ||
| 568 | } | 564 | } |
| 569 | 565 | ||
| 570 | 566 | ||
| @@ -779,10 +775,6 @@ int SrsIngestSrsOutput::on_ts_message(SrsTsMessage* msg) | @@ -779,10 +775,6 @@ int SrsIngestSrsOutput::on_ts_message(SrsTsMessage* msg) | ||
| 779 | // we must use queue to cache the msg, then parse it if possible. | 775 | // we must use queue to cache the msg, then parse it if possible. |
| 780 | queue.insert(std::make_pair(msg->dts, msg->detach())); | 776 | queue.insert(std::make_pair(msg->dts, msg->detach())); |
| 781 | if ((ret = parse_message_queue()) != ERROR_SUCCESS) { | 777 | if ((ret = parse_message_queue()) != ERROR_SUCCESS) { |
| 782 | - // when peer closed, close the output and reconnect. | ||
| 783 | - if (srs_is_client_gracefully_close(ret)) { | ||
| 784 | - close(); | ||
| 785 | - } | ||
| 786 | return ret; | 778 | return ret; |
| 787 | } | 779 | } |
| 788 | 780 | ||
| @@ -1204,6 +1196,7 @@ int SrsIngestSrsOutput::rtmp_write_packet(char type, u_int32_t timestamp, char* | @@ -1204,6 +1196,7 @@ int SrsIngestSrsOutput::rtmp_write_packet(char type, u_int32_t timestamp, char* | ||
| 1204 | 1196 | ||
| 1205 | // send out encoded msg. | 1197 | // send out encoded msg. |
| 1206 | if ((ret = client->send_and_free_message(msg, stream_id)) != ERROR_SUCCESS) { | 1198 | if ((ret = client->send_and_free_message(msg, stream_id)) != ERROR_SUCCESS) { |
| 1199 | + srs_error("send RTMP type=%d, dts=%d, size=%d failed. ret=%d", type, timestamp, size, ret); | ||
| 1207 | return ret; | 1200 | return ret; |
| 1208 | } | 1201 | } |
| 1209 | 1202 | ||
| @@ -1355,22 +1348,22 @@ public: | @@ -1355,22 +1348,22 @@ public: | ||
| 1355 | int ret = ERROR_SUCCESS; | 1348 | int ret = ERROR_SUCCESS; |
| 1356 | 1349 | ||
| 1357 | if ((ret = ic->connect()) != ERROR_SUCCESS) { | 1350 | if ((ret = ic->connect()) != ERROR_SUCCESS) { |
| 1358 | - srs_warn("connect oc failed. ret=%d", ret); | 1351 | + srs_error("connect oc failed. ret=%d", ret); |
| 1359 | return ret; | 1352 | return ret; |
| 1360 | } | 1353 | } |
| 1361 | 1354 | ||
| 1362 | if ((ret = oc->connect()) != ERROR_SUCCESS) { | 1355 | if ((ret = oc->connect()) != ERROR_SUCCESS) { |
| 1363 | - srs_warn("connect ic failed. ret=%d", ret); | 1356 | + srs_error("connect ic failed. ret=%d", ret); |
| 1364 | return ret; | 1357 | return ret; |
| 1365 | } | 1358 | } |
| 1366 | 1359 | ||
| 1367 | if ((ret = ic->parse(oc, oc)) != ERROR_SUCCESS) { | 1360 | if ((ret = ic->parse(oc, oc)) != ERROR_SUCCESS) { |
| 1368 | - srs_warn("proxy ts to rtmp failed. ret=%d", ret); | 1361 | + srs_error("proxy ts to rtmp failed. ret=%d", ret); |
| 1369 | return ret; | 1362 | return ret; |
| 1370 | } | 1363 | } |
| 1371 | 1364 | ||
| 1372 | if ((ret = oc->flush_message_queue()) != ERROR_SUCCESS) { | 1365 | if ((ret = oc->flush_message_queue()) != ERROR_SUCCESS) { |
| 1373 | - srs_warn("flush oc message failed. ret=%d", ret); | 1366 | + srs_error("flush oc message failed. ret=%d", ret); |
| 1374 | return ret; | 1367 | return ret; |
| 1375 | } | 1368 | } |
| 1376 | 1369 | ||
| @@ -1401,11 +1394,9 @@ int proxy_hls2rtmp(string hls, string rtmp) | @@ -1401,11 +1394,9 @@ int proxy_hls2rtmp(string hls, string rtmp) | ||
| 1401 | SrsIngestSrsContext context(&hls_uri, &rtmp_uri); | 1394 | SrsIngestSrsContext context(&hls_uri, &rtmp_uri); |
| 1402 | for (;;) { | 1395 | for (;;) { |
| 1403 | if ((ret = context.proxy()) == ERROR_SUCCESS) { | 1396 | if ((ret = context.proxy()) == ERROR_SUCCESS) { |
| 1404 | - continue; | 1397 | + srs_error("proxy hls to rtmp failed. ret=%d", ret); |
| 1398 | + return ret; | ||
| 1405 | } | 1399 | } |
| 1406 | - | ||
| 1407 | - srs_warn("proxy hls to rtmp failed. ret=%d", ret); | ||
| 1408 | - st_usleep(SRS_INGEST_HLS_ERROR_RETRY_MS * 1000); | ||
| 1409 | } | 1400 | } |
| 1410 | 1401 | ||
| 1411 | return ret; | 1402 | return ret; |
-
请 注册 或 登录 后发表评论