正在显示
7 个修改的文件
包含
24 行增加
和
9 行删除
@@ -521,6 +521,7 @@ Supported operating systems and hardware: | @@ -521,6 +521,7 @@ Supported operating systems and hardware: | ||
521 | 521 | ||
522 | ### SRS 2.0 history | 522 | ### SRS 2.0 history |
523 | 523 | ||
524 | +* 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 | ||
524 | * 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 | 525 | * 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 |
525 | * 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 | 526 | * 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 |
526 | * 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 | 527 | * 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() | @@ -92,6 +92,7 @@ SrsHlsMuxer::SrsHlsMuxer() | ||
92 | hls_fragment = hls_window = 0; | 92 | hls_fragment = hls_window = 0; |
93 | _sequence_no = 0; | 93 | _sequence_no = 0; |
94 | current = NULL; | 94 | current = NULL; |
95 | + acodec = SrsCodecAudioReserved1; | ||
95 | } | 96 | } |
96 | 97 | ||
97 | SrsHlsMuxer::~SrsHlsMuxer() | 98 | SrsHlsMuxer::~SrsHlsMuxer() |
@@ -170,6 +171,11 @@ int SrsHlsMuxer::segment_open(int64_t segment_start_dts) | @@ -170,6 +171,11 @@ int SrsHlsMuxer::segment_open(int64_t segment_start_dts) | ||
170 | } | 171 | } |
171 | srs_info("open HLS muxer success. path=%s, tmp=%s", | 172 | srs_info("open HLS muxer success. path=%s, tmp=%s", |
172 | current->full_path.c_str(), tmp_file.c_str()); | 173 | current->full_path.c_str(), tmp_file.c_str()); |
174 | + | ||
175 | + // set the segment muxer audio codec. | ||
176 | + if (acodec != SrsCodecAudioReserved1) { | ||
177 | + current->muxer->update_acodec(acodec); | ||
178 | + } | ||
173 | 179 | ||
174 | return ret; | 180 | return ret; |
175 | } | 181 | } |
@@ -199,11 +205,12 @@ bool SrsHlsMuxer::is_segment_absolutely_overflow() | @@ -199,11 +205,12 @@ bool SrsHlsMuxer::is_segment_absolutely_overflow() | ||
199 | return current->duration >= 2 * hls_fragment; | 205 | return current->duration >= 2 * hls_fragment; |
200 | } | 206 | } |
201 | 207 | ||
202 | -int SrsHlsMuxer::update_acodec(SrsCodecAudio acodec) | 208 | +int SrsHlsMuxer::update_acodec(SrsCodecAudio ac) |
203 | { | 209 | { |
204 | srs_assert(current); | 210 | srs_assert(current); |
205 | srs_assert(current->muxer); | 211 | srs_assert(current->muxer); |
206 | - return current->muxer->update_acodec(acodec); | 212 | + acodec = ac; |
213 | + return current->muxer->update_acodec(ac); | ||
207 | } | 214 | } |
208 | 215 | ||
209 | int SrsHlsMuxer::flush_audio(SrsMpegtsFrame* af, SrsSimpleBuffer* ab) | 216 | int SrsHlsMuxer::flush_audio(SrsMpegtsFrame* af, SrsSimpleBuffer* ab) |
@@ -801,7 +808,7 @@ int SrsHls::on_audio(SrsSharedPtrMessage* __audio) | @@ -801,7 +808,7 @@ int SrsHls::on_audio(SrsSharedPtrMessage* __audio) | ||
801 | } | 808 | } |
802 | 809 | ||
803 | // ignore sequence header | 810 | // ignore sequence header |
804 | - if (sample->aac_packet_type == SrsCodecAudioTypeSequenceHeader) { | 811 | + if (acodec == SrsCodecAudioAAC && sample->aac_packet_type == SrsCodecAudioTypeSequenceHeader) { |
805 | return hls_cache->on_sequence_header(muxer); | 812 | return hls_cache->on_sequence_header(muxer); |
806 | } | 813 | } |
807 | 814 |
@@ -118,6 +118,12 @@ private: | @@ -118,6 +118,12 @@ private: | ||
118 | * current writing segment. | 118 | * current writing segment. |
119 | */ | 119 | */ |
120 | SrsHlsSegment* current; | 120 | SrsHlsSegment* current; |
121 | + /** | ||
122 | + * the current audio codec, when open new muxer, | ||
123 | + * set the muxer audio codec. | ||
124 | + * @see https://github.com/winlinvip/simple-rtmp-server/issues/301 | ||
125 | + */ | ||
126 | + SrsCodecAudio acodec; | ||
121 | public: | 127 | public: |
122 | SrsHlsMuxer(); | 128 | SrsHlsMuxer(); |
123 | virtual ~SrsHlsMuxer(); | 129 | virtual ~SrsHlsMuxer(); |
@@ -144,7 +150,7 @@ public: | @@ -144,7 +150,7 @@ public: | ||
144 | */ | 150 | */ |
145 | virtual bool is_segment_absolutely_overflow(); | 151 | virtual bool is_segment_absolutely_overflow(); |
146 | public: | 152 | public: |
147 | - virtual int update_acodec(SrsCodecAudio acodec); | 153 | + virtual int update_acodec(SrsCodecAudio ac); |
148 | virtual int flush_audio(SrsMpegtsFrame* af, SrsSimpleBuffer* ab); | 154 | virtual int flush_audio(SrsMpegtsFrame* af, SrsSimpleBuffer* ab); |
149 | virtual int flush_video(SrsMpegtsFrame* af, SrsSimpleBuffer* ab, SrsMpegtsFrame* vf, SrsSimpleBuffer* vb); | 155 | virtual int flush_video(SrsMpegtsFrame* af, SrsSimpleBuffer* ab, SrsMpegtsFrame* vf, SrsSimpleBuffer* vb); |
150 | /** | 156 | /** |
@@ -352,6 +352,7 @@ int SrsGoHttpFileServer::serve_file(ISrsGoHttpResponseWriter* w, SrsHttpMessage* | @@ -352,6 +352,7 @@ int SrsGoHttpFileServer::serve_file(ISrsGoHttpResponseWriter* w, SrsHttpMessage* | ||
352 | _mime[".zip"] = "application/zip"; | 352 | _mime[".zip"] = "application/zip"; |
353 | _mime[".rar"] = "application/x-rar-compressed"; | 353 | _mime[".rar"] = "application/x-rar-compressed"; |
354 | _mime[".xml"] = "text/xml;charset=utf-8"; | 354 | _mime[".xml"] = "text/xml;charset=utf-8"; |
355 | + _mime[".html"] = "text/html;charset=utf-8"; | ||
355 | _mime[".js"] = "text/javascript"; | 356 | _mime[".js"] = "text/javascript"; |
356 | _mime[".css"] = "text/css;charset=utf-8"; | 357 | _mime[".css"] = "text/css;charset=utf-8"; |
357 | _mime[".ico"] = "image/x-icon"; | 358 | _mime[".ico"] = "image/x-icon"; |
@@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
31 | // current release version | 31 | // current release version |
32 | #define VERSION_MAJOR 2 | 32 | #define VERSION_MAJOR 2 |
33 | #define VERSION_MINOR 0 | 33 | #define VERSION_MINOR 0 |
34 | -#define VERSION_REVISION 106 | 34 | +#define VERSION_REVISION 107 |
35 | 35 | ||
36 | // server info. | 36 | // server info. |
37 | #define RTMP_SIG_SRS_KEY "SRS" | 37 | #define RTMP_SIG_SRS_KEY "SRS" |
@@ -430,14 +430,14 @@ int SrsTSMuxer::open(string _path) | @@ -430,14 +430,14 @@ int SrsTSMuxer::open(string _path) | ||
430 | return ret; | 430 | return ret; |
431 | } | 431 | } |
432 | 432 | ||
433 | -int SrsTSMuxer::update_acodec(SrsCodecAudio acodec) | 433 | +int SrsTSMuxer::update_acodec(SrsCodecAudio ac) |
434 | { | 434 | { |
435 | int ret = ERROR_SUCCESS; | 435 | int ret = ERROR_SUCCESS; |
436 | 436 | ||
437 | - if (current == acodec) { | 437 | + if (current == ac) { |
438 | return ret; | 438 | return ret; |
439 | } | 439 | } |
440 | - current = acodec; | 440 | + current = ac; |
441 | 441 | ||
442 | return ret; | 442 | return ret; |
443 | } | 443 | } |
@@ -85,7 +85,7 @@ public: | @@ -85,7 +85,7 @@ public: | ||
85 | * @remark for audio aac codec, for example, SRS1, it's ok to write PSI when open ts. | 85 | * @remark for audio aac codec, for example, SRS1, it's ok to write PSI when open ts. |
86 | * @see https://github.com/winlinvip/simple-rtmp-server/issues/301 | 86 | * @see https://github.com/winlinvip/simple-rtmp-server/issues/301 |
87 | */ | 87 | */ |
88 | - virtual int update_acodec(SrsCodecAudio acodec); | 88 | + virtual int update_acodec(SrsCodecAudio ac); |
89 | /** | 89 | /** |
90 | * write an audio frame to ts, | 90 | * write an audio frame to ts, |
91 | * @remark write PSI first when not write yet. | 91 | * @remark write PSI first when not write yet. |
-
请 注册 或 登录 后发表评论