diff --git a/src/Rtp/TSDecoder.cpp b/src/Rtp/TSDecoder.cpp index 2f347d5d..1c3d9404 100644 --- a/src/Rtp/TSDecoder.cpp +++ b/src/Rtp/TSDecoder.cpp @@ -86,7 +86,13 @@ ssize_t TSDecoder::input(const uint8_t *data, size_t bytes) { if (TSSegment::isTSPacket((char *)data, bytes)) { return ts_demuxer_input(_demuxer_ctx, (uint8_t *) data, bytes); } - _ts_segment.input((char*)data,bytes); + try { + _ts_segment.input((char *) data, bytes); + } catch (...) { + //ts解析失败,清空缓存数据 + _ts_segment.reset(); + throw; + } return bytes; }