mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
for bug #293, add mp3 id3 spec
This commit is contained in:
parent
b04888a35d
commit
99bf397487
9 changed files with 78 additions and 10 deletions
|
@ -45,6 +45,7 @@ using namespace std;
|
|||
#include <srs_app_source.hpp>
|
||||
#include <srs_protocol_msg_array.hpp>
|
||||
#include <srs_kernel_aac.hpp>
|
||||
#include <srs_kernel_mp3.hpp>
|
||||
|
||||
SrsVodStream::SrsVodStream(string root_dir)
|
||||
: SrsGoHttpFileServer(root_dir)
|
||||
|
@ -226,6 +227,44 @@ int SrsAacStreamEncoder::write_metadata(int64_t /*timestamp*/, char* /*data*/, i
|
|||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
SrsMp3StreamEncoder::SrsMp3StreamEncoder()
|
||||
{
|
||||
enc = new SrsMp3Encoder();
|
||||
}
|
||||
|
||||
SrsMp3StreamEncoder::~SrsMp3StreamEncoder()
|
||||
{
|
||||
srs_freep(enc);
|
||||
}
|
||||
|
||||
int SrsMp3StreamEncoder::initialize(SrsFileWriter* w)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
if ((ret = enc->initialize(w)) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int SrsMp3StreamEncoder::write_audio(int64_t timestamp, char* data, int size)
|
||||
{
|
||||
return enc->write_audio(timestamp, data, size);
|
||||
}
|
||||
|
||||
int SrsMp3StreamEncoder::write_video(int64_t /*timestamp*/, char* /*data*/, int /*size*/)
|
||||
{
|
||||
// mp3 ignore any flv video.
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
int SrsMp3StreamEncoder::write_metadata(int64_t /*timestamp*/, char* /*data*/, int /*size*/)
|
||||
{
|
||||
// mp3 ignore any flv metadata.
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
SrsStreamWriter::SrsStreamWriter(ISrsGoHttpResponseWriter* w)
|
||||
{
|
||||
writer = w;
|
||||
|
@ -279,12 +318,15 @@ int SrsLiveStream::serve_http(ISrsGoHttpResponseWriter* w, SrsHttpMessage* r)
|
|||
|
||||
bool serve_flv_streaming = false;
|
||||
bool serve_aac_streaming = false;
|
||||
bool serve_mp3_streaming = false;
|
||||
|
||||
srs_assert(entry);
|
||||
if (srs_string_ends_with(entry->pattern, ".flv")) {
|
||||
serve_flv_streaming = true;
|
||||
} else if (srs_string_ends_with(entry->pattern, ".aac")) {
|
||||
serve_aac_streaming = true;
|
||||
} else if (srs_string_ends_with(entry->pattern, ".mp3")) {
|
||||
serve_mp3_streaming = true;
|
||||
} else {
|
||||
ret = ERROR_HTTP_LIVE_STREAM_EXT;
|
||||
srs_error("http: unsupported pattern %s", entry->pattern.c_str());
|
||||
|
@ -322,6 +364,9 @@ int SrsLiveStream::serve_http(ISrsGoHttpResponseWriter* w, SrsHttpMessage* r)
|
|||
if (serve_aac_streaming) {
|
||||
enc = new SrsAacStreamEncoder();
|
||||
}
|
||||
if (serve_mp3_streaming) {
|
||||
enc = new SrsMp3StreamEncoder();
|
||||
}
|
||||
SrsAutoFree(ISrsStreamEncoder, enc);
|
||||
|
||||
if ((ret = enc->initialize(&writer)) != ERROR_SUCCESS) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue