正在显示
1 个修改的文件
包含
12 行增加
和
28 行删除
| @@ -245,6 +245,10 @@ int SrsMp3StreamEncoder::initialize(SrsFileWriter* w) | @@ -245,6 +245,10 @@ int SrsMp3StreamEncoder::initialize(SrsFileWriter* w) | ||
| 245 | return ret; | 245 | return ret; |
| 246 | } | 246 | } |
| 247 | 247 | ||
| 248 | + if ((ret = enc->write_header()) != ERROR_SUCCESS) { | ||
| 249 | + return ret; | ||
| 250 | + } | ||
| 251 | + | ||
| 248 | return ret; | 252 | return ret; |
| 249 | } | 253 | } |
| 250 | 254 | ||
| @@ -316,22 +320,24 @@ int SrsLiveStream::serve_http(ISrsGoHttpResponseWriter* w, SrsHttpMessage* r) | @@ -316,22 +320,24 @@ int SrsLiveStream::serve_http(ISrsGoHttpResponseWriter* w, SrsHttpMessage* r) | ||
| 316 | { | 320 | { |
| 317 | int ret = ERROR_SUCCESS; | 321 | int ret = ERROR_SUCCESS; |
| 318 | 322 | ||
| 319 | - bool serve_flv_streaming = false; | ||
| 320 | - bool serve_aac_streaming = false; | ||
| 321 | - bool serve_mp3_streaming = false; | 323 | + ISrsStreamEncoder* enc = NULL; |
| 322 | 324 | ||
| 323 | srs_assert(entry); | 325 | srs_assert(entry); |
| 324 | if (srs_string_ends_with(entry->pattern, ".flv")) { | 326 | if (srs_string_ends_with(entry->pattern, ".flv")) { |
| 325 | - serve_flv_streaming = true; | 327 | + w->header()->set_content_type("video/x-flv"); |
| 328 | + enc = new SrsFlvStreamEncoder(); | ||
| 326 | } else if (srs_string_ends_with(entry->pattern, ".aac")) { | 329 | } else if (srs_string_ends_with(entry->pattern, ".aac")) { |
| 327 | - serve_aac_streaming = true; | 330 | + w->header()->set_content_type("audio/x-aac"); |
| 331 | + enc = new SrsAacStreamEncoder(); | ||
| 328 | } else if (srs_string_ends_with(entry->pattern, ".mp3")) { | 332 | } else if (srs_string_ends_with(entry->pattern, ".mp3")) { |
| 329 | - serve_mp3_streaming = true; | 333 | + w->header()->set_content_type("audio/mpeg"); |
| 334 | + enc = new SrsMp3StreamEncoder(); | ||
| 330 | } else { | 335 | } else { |
| 331 | ret = ERROR_HTTP_LIVE_STREAM_EXT; | 336 | ret = ERROR_HTTP_LIVE_STREAM_EXT; |
| 332 | srs_error("http: unsupported pattern %s", entry->pattern.c_str()); | 337 | srs_error("http: unsupported pattern %s", entry->pattern.c_str()); |
| 333 | return ret; | 338 | return ret; |
| 334 | } | 339 | } |
| 340 | + SrsAutoFree(ISrsStreamEncoder, enc); | ||
| 335 | 341 | ||
| 336 | // create consumer of souce. | 342 | // create consumer of souce. |
| 337 | SrsConsumer* consumer = NULL; | 343 | SrsConsumer* consumer = NULL; |
| @@ -344,31 +350,9 @@ int SrsLiveStream::serve_http(ISrsGoHttpResponseWriter* w, SrsHttpMessage* r) | @@ -344,31 +350,9 @@ int SrsLiveStream::serve_http(ISrsGoHttpResponseWriter* w, SrsHttpMessage* r) | ||
| 344 | 350 | ||
| 345 | SrsMessageArray msgs(SRS_PERF_MW_MSGS); | 351 | SrsMessageArray msgs(SRS_PERF_MW_MSGS); |
| 346 | // TODO: FIMXE: add pithy print. | 352 | // TODO: FIMXE: add pithy print. |
| 347 | - | ||
| 348 | - // write http header for streaming. | ||
| 349 | - // use chunked encoding, for we donot specifes the content length. | ||
| 350 | - if (serve_flv_streaming) { | ||
| 351 | - w->header()->set_content_type("video/x-flv"); | ||
| 352 | - } | ||
| 353 | - if (serve_aac_streaming) { | ||
| 354 | - w->header()->set_content_type("audio/x-aac"); | ||
| 355 | - } | ||
| 356 | 353 | ||
| 357 | // the memory writer. | 354 | // the memory writer. |
| 358 | SrsStreamWriter writer(w); | 355 | SrsStreamWriter writer(w); |
| 359 | - | ||
| 360 | - ISrsStreamEncoder* enc = NULL; | ||
| 361 | - if (serve_flv_streaming) { | ||
| 362 | - enc = new SrsFlvStreamEncoder(); | ||
| 363 | - } | ||
| 364 | - if (serve_aac_streaming) { | ||
| 365 | - enc = new SrsAacStreamEncoder(); | ||
| 366 | - } | ||
| 367 | - if (serve_mp3_streaming) { | ||
| 368 | - enc = new SrsMp3StreamEncoder(); | ||
| 369 | - } | ||
| 370 | - SrsAutoFree(ISrsStreamEncoder, enc); | ||
| 371 | - | ||
| 372 | if ((ret = enc->initialize(&writer)) != ERROR_SUCCESS) { | 356 | if ((ret = enc->initialize(&writer)) != ERROR_SUCCESS) { |
| 373 | return ret; | 357 | return ret; |
| 374 | } | 358 | } |
-
请 注册 或 登录 后发表评论