mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
for #301, hls support h.264+mp3, ok for vlc. 2.0.107
This commit is contained in:
parent
2c42350489
commit
919a85b103
7 changed files with 24 additions and 9 deletions
|
@ -521,6 +521,7 @@ Supported operating systems and hardware:
|
||||||
|
|
||||||
### SRS 2.0 history
|
### SRS 2.0 history
|
||||||
|
|
||||||
|
* v2.0, 2015-01-25, for [#301](https://github.com/winlinvip/simple-rtmp-server/issues/301), hls support h.264+mp3, ok for vlc. 2.0.107
|
||||||
* v2.0, 2015-01-25, for [#301](https://github.com/winlinvip/simple-rtmp-server/issues/301), http ts stream support h.264+mp3. 2.0.106
|
* v2.0, 2015-01-25, for [#301](https://github.com/winlinvip/simple-rtmp-server/issues/301), http ts stream support h.264+mp3. 2.0.106
|
||||||
* v2.0, 2015-01-25, hotfix [#268](https://github.com/winlinvip/simple-rtmp-server/issues/268), refine the pcr start at 0, dts/pts plus delay. 2.0.105
|
* v2.0, 2015-01-25, hotfix [#268](https://github.com/winlinvip/simple-rtmp-server/issues/268), refine the pcr start at 0, dts/pts plus delay. 2.0.105
|
||||||
* v2.0, 2015-01-25, hotfix [#151](https://github.com/winlinvip/simple-rtmp-server/issues/151), refine pcr=dts-800ms and use dts/pts directly. 2.0.104
|
* v2.0, 2015-01-25, hotfix [#151](https://github.com/winlinvip/simple-rtmp-server/issues/151), refine pcr=dts-800ms and use dts/pts directly. 2.0.104
|
||||||
|
|
|
@ -92,6 +92,7 @@ SrsHlsMuxer::SrsHlsMuxer()
|
||||||
hls_fragment = hls_window = 0;
|
hls_fragment = hls_window = 0;
|
||||||
_sequence_no = 0;
|
_sequence_no = 0;
|
||||||
current = NULL;
|
current = NULL;
|
||||||
|
acodec = SrsCodecAudioReserved1;
|
||||||
}
|
}
|
||||||
|
|
||||||
SrsHlsMuxer::~SrsHlsMuxer()
|
SrsHlsMuxer::~SrsHlsMuxer()
|
||||||
|
@ -171,6 +172,11 @@ int SrsHlsMuxer::segment_open(int64_t segment_start_dts)
|
||||||
srs_info("open HLS muxer success. path=%s, tmp=%s",
|
srs_info("open HLS muxer success. path=%s, tmp=%s",
|
||||||
current->full_path.c_str(), tmp_file.c_str());
|
current->full_path.c_str(), tmp_file.c_str());
|
||||||
|
|
||||||
|
// set the segment muxer audio codec.
|
||||||
|
if (acodec != SrsCodecAudioReserved1) {
|
||||||
|
current->muxer->update_acodec(acodec);
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -199,11 +205,12 @@ bool SrsHlsMuxer::is_segment_absolutely_overflow()
|
||||||
return current->duration >= 2 * hls_fragment;
|
return current->duration >= 2 * hls_fragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
int SrsHlsMuxer::update_acodec(SrsCodecAudio acodec)
|
int SrsHlsMuxer::update_acodec(SrsCodecAudio ac)
|
||||||
{
|
{
|
||||||
srs_assert(current);
|
srs_assert(current);
|
||||||
srs_assert(current->muxer);
|
srs_assert(current->muxer);
|
||||||
return current->muxer->update_acodec(acodec);
|
acodec = ac;
|
||||||
|
return current->muxer->update_acodec(ac);
|
||||||
}
|
}
|
||||||
|
|
||||||
int SrsHlsMuxer::flush_audio(SrsMpegtsFrame* af, SrsSimpleBuffer* ab)
|
int SrsHlsMuxer::flush_audio(SrsMpegtsFrame* af, SrsSimpleBuffer* ab)
|
||||||
|
@ -801,7 +808,7 @@ int SrsHls::on_audio(SrsSharedPtrMessage* __audio)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ignore sequence header
|
// ignore sequence header
|
||||||
if (sample->aac_packet_type == SrsCodecAudioTypeSequenceHeader) {
|
if (acodec == SrsCodecAudioAAC && sample->aac_packet_type == SrsCodecAudioTypeSequenceHeader) {
|
||||||
return hls_cache->on_sequence_header(muxer);
|
return hls_cache->on_sequence_header(muxer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -118,6 +118,12 @@ private:
|
||||||
* current writing segment.
|
* current writing segment.
|
||||||
*/
|
*/
|
||||||
SrsHlsSegment* current;
|
SrsHlsSegment* current;
|
||||||
|
/**
|
||||||
|
* the current audio codec, when open new muxer,
|
||||||
|
* set the muxer audio codec.
|
||||||
|
* @see https://github.com/winlinvip/simple-rtmp-server/issues/301
|
||||||
|
*/
|
||||||
|
SrsCodecAudio acodec;
|
||||||
public:
|
public:
|
||||||
SrsHlsMuxer();
|
SrsHlsMuxer();
|
||||||
virtual ~SrsHlsMuxer();
|
virtual ~SrsHlsMuxer();
|
||||||
|
@ -144,7 +150,7 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual bool is_segment_absolutely_overflow();
|
virtual bool is_segment_absolutely_overflow();
|
||||||
public:
|
public:
|
||||||
virtual int update_acodec(SrsCodecAudio acodec);
|
virtual int update_acodec(SrsCodecAudio ac);
|
||||||
virtual int flush_audio(SrsMpegtsFrame* af, SrsSimpleBuffer* ab);
|
virtual int flush_audio(SrsMpegtsFrame* af, SrsSimpleBuffer* ab);
|
||||||
virtual int flush_video(SrsMpegtsFrame* af, SrsSimpleBuffer* ab, SrsMpegtsFrame* vf, SrsSimpleBuffer* vb);
|
virtual int flush_video(SrsMpegtsFrame* af, SrsSimpleBuffer* ab, SrsMpegtsFrame* vf, SrsSimpleBuffer* vb);
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -352,6 +352,7 @@ int SrsGoHttpFileServer::serve_file(ISrsGoHttpResponseWriter* w, SrsHttpMessage*
|
||||||
_mime[".zip"] = "application/zip";
|
_mime[".zip"] = "application/zip";
|
||||||
_mime[".rar"] = "application/x-rar-compressed";
|
_mime[".rar"] = "application/x-rar-compressed";
|
||||||
_mime[".xml"] = "text/xml;charset=utf-8";
|
_mime[".xml"] = "text/xml;charset=utf-8";
|
||||||
|
_mime[".html"] = "text/html;charset=utf-8";
|
||||||
_mime[".js"] = "text/javascript";
|
_mime[".js"] = "text/javascript";
|
||||||
_mime[".css"] = "text/css;charset=utf-8";
|
_mime[".css"] = "text/css;charset=utf-8";
|
||||||
_mime[".ico"] = "image/x-icon";
|
_mime[".ico"] = "image/x-icon";
|
||||||
|
|
|
@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
// current release version
|
// current release version
|
||||||
#define VERSION_MAJOR 2
|
#define VERSION_MAJOR 2
|
||||||
#define VERSION_MINOR 0
|
#define VERSION_MINOR 0
|
||||||
#define VERSION_REVISION 106
|
#define VERSION_REVISION 107
|
||||||
|
|
||||||
// server info.
|
// server info.
|
||||||
#define RTMP_SIG_SRS_KEY "SRS"
|
#define RTMP_SIG_SRS_KEY "SRS"
|
||||||
|
|
|
@ -430,14 +430,14 @@ int SrsTSMuxer::open(string _path)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int SrsTSMuxer::update_acodec(SrsCodecAudio acodec)
|
int SrsTSMuxer::update_acodec(SrsCodecAudio ac)
|
||||||
{
|
{
|
||||||
int ret = ERROR_SUCCESS;
|
int ret = ERROR_SUCCESS;
|
||||||
|
|
||||||
if (current == acodec) {
|
if (current == ac) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
current = acodec;
|
current = ac;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,7 +85,7 @@ public:
|
||||||
* @remark for audio aac codec, for example, SRS1, it's ok to write PSI when open ts.
|
* @remark for audio aac codec, for example, SRS1, it's ok to write PSI when open ts.
|
||||||
* @see https://github.com/winlinvip/simple-rtmp-server/issues/301
|
* @see https://github.com/winlinvip/simple-rtmp-server/issues/301
|
||||||
*/
|
*/
|
||||||
virtual int update_acodec(SrsCodecAudio acodec);
|
virtual int update_acodec(SrsCodecAudio ac);
|
||||||
/**
|
/**
|
||||||
* write an audio frame to ts,
|
* write an audio frame to ts,
|
||||||
* @remark write PSI first when not write yet.
|
* @remark write PSI first when not write yet.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue