正在显示
1 个修改的文件
包含
19 行增加
和
22 行删除
| @@ -1548,6 +1548,24 @@ int SrsSource::on_audio(SrsCommonMessage* shared_audio) | @@ -1548,6 +1548,24 @@ int SrsSource::on_audio(SrsCommonMessage* shared_audio) | ||
| 1548 | return ret; | 1548 | return ret; |
| 1549 | } | 1549 | } |
| 1550 | 1550 | ||
| 1551 | +bool srs_hls_can_continue(int ret, SrsSharedPtrMessage* sh, SrsSharedPtrMessage* msg) | ||
| 1552 | +{ | ||
| 1553 | + // only continue for decode error. | ||
| 1554 | + if (ret != ERROR_HLS_DECODE_ERROR) { | ||
| 1555 | + return false; | ||
| 1556 | + } | ||
| 1557 | + | ||
| 1558 | + // when video size equals to sequence header, | ||
| 1559 | + // the video actually maybe a sequence header, | ||
| 1560 | + // continue to make ffmpeg happy. | ||
| 1561 | + if (sh && sh->size == msg->size) { | ||
| 1562 | + srs_warn("the msg is actually a sequence header, ignore this packet."); | ||
| 1563 | + return true; | ||
| 1564 | + } | ||
| 1565 | + | ||
| 1566 | + return false; | ||
| 1567 | +} | ||
| 1568 | + | ||
| 1551 | int SrsSource::on_audio_imp(SrsSharedPtrMessage* msg) | 1569 | int SrsSource::on_audio_imp(SrsSharedPtrMessage* msg) |
| 1552 | { | 1570 | { |
| 1553 | int ret = ERROR_SUCCESS; | 1571 | int ret = ERROR_SUCCESS; |
| @@ -1608,9 +1626,7 @@ int SrsSource::on_audio_imp(SrsSharedPtrMessage* msg) | @@ -1608,9 +1626,7 @@ int SrsSource::on_audio_imp(SrsSharedPtrMessage* msg) | ||
| 1608 | // ignore. | 1626 | // ignore. |
| 1609 | ret = ERROR_SUCCESS; | 1627 | ret = ERROR_SUCCESS; |
| 1610 | } else if (srs_config_hls_is_on_error_continue(hls_error_strategy)) { | 1628 | } else if (srs_config_hls_is_on_error_continue(hls_error_strategy)) { |
| 1611 | - // compare the sequence header with audio, continue when it's actually an sequence header. | ||
| 1612 | - if (ret == ERROR_HLS_DECODE_ERROR && cache_sh_audio && cache_sh_audio->size == msg->size) { | ||
| 1613 | - srs_warn("the audio is actually a sequence header, ignore this packet."); | 1629 | + if (srs_hls_can_continue(ret, cache_sh_audio, msg)) { |
| 1614 | ret = ERROR_SUCCESS; | 1630 | ret = ERROR_SUCCESS; |
| 1615 | } else { | 1631 | } else { |
| 1616 | srs_warn("hls continue audio failed. ret=%d", ret); | 1632 | srs_warn("hls continue audio failed. ret=%d", ret); |
| @@ -1763,23 +1779,6 @@ int SrsSource::on_video(SrsCommonMessage* shared_video) | @@ -1763,23 +1779,6 @@ int SrsSource::on_video(SrsCommonMessage* shared_video) | ||
| 1763 | return ret; | 1779 | return ret; |
| 1764 | } | 1780 | } |
| 1765 | 1781 | ||
| 1766 | -bool srs_hls_can_continue(int ret, SrsSharedPtrMessage* sh, SrsSharedPtrMessage* video) | ||
| 1767 | -{ | ||
| 1768 | - // only continue for decode error. | ||
| 1769 | - if (ret != ERROR_HLS_DECODE_ERROR) { | ||
| 1770 | - return false; | ||
| 1771 | - } | ||
| 1772 | - | ||
| 1773 | - // when video size equals to sequence header, | ||
| 1774 | - // the video actually maybe a sequence header, | ||
| 1775 | - // continue to make ffmpeg happy. | ||
| 1776 | - if (sh && sh->size == video->size) { | ||
| 1777 | - return true; | ||
| 1778 | - } | ||
| 1779 | - | ||
| 1780 | - return false; | ||
| 1781 | -} | ||
| 1782 | - | ||
| 1783 | int SrsSource::on_video_imp(SrsSharedPtrMessage* msg) | 1782 | int SrsSource::on_video_imp(SrsSharedPtrMessage* msg) |
| 1784 | { | 1783 | { |
| 1785 | int ret = ERROR_SUCCESS; | 1784 | int ret = ERROR_SUCCESS; |
| @@ -1843,9 +1842,7 @@ int SrsSource::on_video_imp(SrsSharedPtrMessage* msg) | @@ -1843,9 +1842,7 @@ int SrsSource::on_video_imp(SrsSharedPtrMessage* msg) | ||
| 1843 | // ignore. | 1842 | // ignore. |
| 1844 | ret = ERROR_SUCCESS; | 1843 | ret = ERROR_SUCCESS; |
| 1845 | } else if (srs_config_hls_is_on_error_continue(hls_error_strategy)) { | 1844 | } else if (srs_config_hls_is_on_error_continue(hls_error_strategy)) { |
| 1846 | - // compare the sequence header with video, continue when it's actually an sequence header. | ||
| 1847 | if (srs_hls_can_continue(ret, cache_sh_video, msg)) { | 1845 | if (srs_hls_can_continue(ret, cache_sh_video, msg)) { |
| 1848 | - srs_warn("the video is actually a sequence header, ignore this packet."); | ||
| 1849 | ret = ERROR_SUCCESS; | 1846 | ret = ERROR_SUCCESS; |
| 1850 | } else { | 1847 | } else { |
| 1851 | srs_warn("hls continue video failed. ret=%d", ret); | 1848 | srs_warn("hls continue video failed. ret=%d", ret); |
-
请 注册 或 登录 后发表评论