1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

TS: Support disable audio or video to make mpegts.js happy. v6.0.9 (#465) (#939)

This commit is contained in:
winlin 2022-12-26 19:03:49 +08:00
parent 4b6f1b0fd6
commit d5bf0ba2da
7 changed files with 44 additions and 11 deletions

View file

@ -234,6 +234,15 @@ srs_error_t SrsTsStreamEncoder::dump_cache(SrsLiveConsumer* /*consumer*/, SrsRtm
return srs_success;
}
void SrsTsStreamEncoder::set_has_audio(bool v)
{
enc->set_has_audio(v);
}
void SrsTsStreamEncoder::set_has_video(bool v)
{
enc->set_has_video(v);
}
SrsFlvStreamEncoder::SrsFlvStreamEncoder()
{
header_written = false;
@ -636,6 +645,8 @@ srs_error_t SrsLiveStream::do_serve_http(ISrsHttpResponseWriter* w, ISrsHttpMess
w->header()->set_content_type("video/MP2T");
enc_desc = "TS";
enc = new SrsTsStreamEncoder();
((SrsTsStreamEncoder*)enc)->set_has_audio(has_audio);
((SrsTsStreamEncoder*)enc)->set_has_video(has_video);
} else {
return srs_error_new(ERROR_HTTP_LIVE_STREAM_EXT, "invalid pattern=%s", entry->pattern.c_str());
}

View file

@ -110,6 +110,9 @@ public:
public:
virtual bool has_cache();
virtual srs_error_t dump_cache(SrsLiveConsumer* consumer, SrsRtmpJitterAlgorithm jitter);
public:
void set_has_audio(bool v);
void set_has_video(bool v);
};
// Transmux RTMP with AAC stream to HTTP AAC Streaming.

View file

@ -9,6 +9,6 @@
#define VERSION_MAJOR 6
#define VERSION_MINOR 0
#define VERSION_REVISION 8
#define VERSION_REVISION 9
#endif

View file

@ -3176,6 +3176,7 @@ SrsTsTransmuxer::SrsTsTransmuxer()
tsmc = new SrsTsMessageCache();
context = new SrsTsContext();
tscw = NULL;
has_audio_ = has_video_ = true;
}
SrsTsTransmuxer::~SrsTsTransmuxer()
@ -3186,6 +3187,16 @@ SrsTsTransmuxer::~SrsTsTransmuxer()
srs_freep(context);
}
void SrsTsTransmuxer::set_has_audio(bool v)
{
has_audio_ = v;
}
void SrsTsTransmuxer::set_has_video(bool v)
{
has_video_ = v;
}
srs_error_t SrsTsTransmuxer::initialize(ISrsStreamWriter* fw)
{
srs_error_t err = srs_success;
@ -3197,11 +3208,13 @@ srs_error_t SrsTsTransmuxer::initialize(ISrsStreamWriter* fw)
srs_assert(fw);
writer = fw;
SrsAudioCodecId acodec = has_audio_ ? SrsAudioCodecIdAAC : SrsAudioCodecIdForbidden;
SrsVideoCodecId vcodec = has_video_ ? SrsVideoCodecIdAVC : SrsVideoCodecIdForbidden;
srs_freep(tscw);
// TODO: FIXME: Support config the codec.
tscw = new SrsTsContextWriter(fw, context, SrsAudioCodecIdAAC, SrsVideoCodecIdAVC);
tscw = new SrsTsContextWriter(fw, context, acodec, vcodec);
return err;
}

View file

@ -1332,6 +1332,8 @@ class SrsTsTransmuxer
{
private:
ISrsStreamWriter* writer;
bool has_audio_;
bool has_video_;
private:
SrsFormat* format;
SrsTsMessageCache* tsmc;
@ -1340,6 +1342,9 @@ private:
public:
SrsTsTransmuxer();
virtual ~SrsTsTransmuxer();
public:
void set_has_audio(bool v);
void set_has_video(bool v);
public:
// Initialize the underlayer file stream.
// @param fw the writer to use for ts encoder, user must free it.