diff --git a/trunk/src/app/srs_app_dash.cpp b/trunk/src/app/srs_app_dash.cpp index 3accea0b0d..e4c4ac11a8 100644 --- a/trunk/src/app/srs_app_dash.cpp +++ b/trunk/src/app/srs_app_dash.cpp @@ -540,7 +540,11 @@ srs_error_t SrsDash::on_audio(SrsSharedPtrMessage* shared_audio, SrsFormat* form if (!enabled) { return err; } - + + if (!format->acodec) { + return err; + } + if ((err = controller->on_audio(shared_audio, format)) != srs_success) { return srs_error_wrap(err, "Consume audio failed"); } @@ -555,7 +559,11 @@ srs_error_t SrsDash::on_video(SrsSharedPtrMessage* shared_video, SrsFormat* form if (!enabled) { return err; } - + + if (!format->vcodec) { + return err; + } + if ((err = controller->on_video(shared_video, format)) != srs_success) { return srs_error_wrap(err, "Consume video failed"); } diff --git a/trunk/src/app/srs_app_source.cpp b/trunk/src/app/srs_app_source.cpp index 414d4e099f..d3d26e7b64 100755 --- a/trunk/src/app/srs_app_source.cpp +++ b/trunk/src/app/srs_app_source.cpp @@ -931,6 +931,12 @@ srs_error_t SrsOriginHub::on_audio(SrsSharedPtrMessage* shared_audio) if ((err = format->on_audio(msg)) != srs_success) { return srs_error_wrap(err, "format consume audio"); } + + // Ignore if no format->acodec, it means the codec is not parsed, or unsupport/unknown codec + // such as G.711 codec + if (!format->acodec) { + return err; + } // cache the sequence header if aac // donot cache the sequence header to gop_cache, return here. diff --git a/trunk/src/kernel/srs_kernel_ts.cpp b/trunk/src/kernel/srs_kernel_ts.cpp index 4b80c71019..9d63cc4147 100644 --- a/trunk/src/kernel/srs_kernel_ts.cpp +++ b/trunk/src/kernel/srs_kernel_ts.cpp @@ -3064,7 +3064,11 @@ srs_error_t SrsTsTransmuxer::write_audio(int64_t timestamp, char* data, int size if ((err = format->on_audio(timestamp, data, size)) != srs_success) { return srs_error_wrap(err, "ts: format on audio"); } - + + if (!format->acodec) { + return err; + } + // ts support audio codec: aac/mp3 srs_assert(format->acodec && format->audio); if (format->acodec->id != SrsAudioCodecIdAAC && format->acodec->id != SrsAudioCodecIdMP3) { @@ -3100,7 +3104,11 @@ srs_error_t SrsTsTransmuxer::write_video(int64_t timestamp, char* data, int size if ((err = format->on_video(timestamp, data, size)) != srs_success) { return srs_error_wrap(err, "ts: on video"); } - + + if (!format->vcodec) { + return err; + } + // ignore info frame, // @see https://github.com/ossrs/srs/issues/288#issuecomment-69863909 srs_assert(format->video && format->vcodec);