mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
fix #264, ignore the video NALU which is actually a sequence header to make HLS happy. 1.0.12
This commit is contained in:
parent
7737042795
commit
2e43a63bf4
4 changed files with 21 additions and 1 deletions
|
@ -298,6 +298,7 @@ vhost with-hls.srs.com {
|
|||
# the error strategy. canbe:
|
||||
# ignore, when error ignore and disable hls.
|
||||
# disconnect, when error disconnect the publish connection.
|
||||
# continue, when error ignore and continue output hls.
|
||||
# @see https://github.com/winlinvip/simple-rtmp-server/issues/264
|
||||
# default: ignore
|
||||
hls_on_error ignore;
|
||||
|
|
|
@ -50,6 +50,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#define SRS_CONF_DEFAULT_HLS_WINDOW 60
|
||||
#define SRS_CONF_DEFAULT_HLS_ON_ERROR_IGNORE "ignore"
|
||||
#define SRS_CONF_DEFAULT_HLS_ON_ERROR_DISCONNECT "disconnect"
|
||||
#define SRS_CONF_DEFAULT_HLS_ON_ERROR_CONTINUE "continue"
|
||||
#define SRS_CONF_DEFAULT_HLS_ON_ERROR SRS_CONF_DEFAULT_HLS_ON_ERROR_IGNORE
|
||||
#define SRS_CONF_DEFAULT_DVR_PATH "./objs/nginx/html"
|
||||
#define SRS_CONF_DEFAULT_DVR_PLAN_SESSION "session"
|
||||
|
|
|
@ -1067,6 +1067,15 @@ int SrsSource::on_audio(SrsMessage* __audio)
|
|||
|
||||
// ignore.
|
||||
ret = ERROR_SUCCESS;
|
||||
} else if (hls_error_strategy == SRS_CONF_DEFAULT_HLS_ON_ERROR_CONTINUE) {
|
||||
// compare the sequence header with audio, continue when it's actually an sequence header.
|
||||
if (ret == ERROR_HLS_DECODE_ERROR && cache_sh_audio && cache_sh_audio->size == msg.size) {
|
||||
srs_warn("the audio is actually a sequence header, ignore this packet.");
|
||||
ret = ERROR_SUCCESS;
|
||||
} else {
|
||||
srs_warn("hls continue audio failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
} else {
|
||||
srs_warn("hls disconnect publisher for audio error. ret=%d", ret);
|
||||
return ret;
|
||||
|
@ -1184,6 +1193,15 @@ int SrsSource::on_video(SrsMessage* __video)
|
|||
|
||||
// ignore.
|
||||
ret = ERROR_SUCCESS;
|
||||
} else if (hls_error_strategy == SRS_CONF_DEFAULT_HLS_ON_ERROR_CONTINUE) {
|
||||
// compare the sequence header with video, continue when it's actually an sequence header.
|
||||
if (ret == ERROR_HLS_DECODE_ERROR && cache_sh_video && cache_sh_video->size == msg.size) {
|
||||
srs_warn("the video is actually a sequence header, ignore this packet.");
|
||||
ret = ERROR_SUCCESS;
|
||||
} else {
|
||||
srs_warn("hls continue video failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
} else {
|
||||
srs_warn("hls disconnect publisher for video error. ret=%d", ret);
|
||||
return ret;
|
||||
|
|
|
@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
// current release version
|
||||
#define VERSION_MAJOR 1
|
||||
#define VERSION_MINOR 0
|
||||
#define VERSION_REVISION 11
|
||||
#define VERSION_REVISION 12
|
||||
// server info.
|
||||
#define RTMP_SIG_SRS_KEY "SRS"
|
||||
#define RTMP_SIG_SRS_ROLE "origin/edge server"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue