Allow setting RTMP language
This commit is contained in:
parent
a8c7bc5d27
commit
a3e0d1ac85
3 changed files with 17 additions and 4 deletions
|
@ -818,9 +818,10 @@ unsigned int FLV::Tag::getDataLen(){
|
||||||
|
|
||||||
void FLV::Tag::toMeta(DTSC::Meta &meta, AMF::Object &amf_storage){
|
void FLV::Tag::toMeta(DTSC::Meta &meta, AMF::Object &amf_storage){
|
||||||
size_t reTrack = INVALID_TRACK_ID;
|
size_t reTrack = INVALID_TRACK_ID;
|
||||||
toMeta(meta, amf_storage, reTrack);
|
std::map<std::string, std::string> targetParams;
|
||||||
|
toMeta(meta, amf_storage, reTrack, targetParams);
|
||||||
}
|
}
|
||||||
void FLV::Tag::toMeta(DTSC::Meta &meta, AMF::Object &amf_storage, size_t &reTrack){
|
void FLV::Tag::toMeta(DTSC::Meta &meta, AMF::Object &amf_storage, size_t &reTrack, const std::map<std::string, std::string> &targetParams){
|
||||||
std::string trackType;
|
std::string trackType;
|
||||||
switch (data[0]){
|
switch (data[0]){
|
||||||
case 0x09: trackType = "video"; break; // video
|
case 0x09: trackType = "video"; break; // video
|
||||||
|
@ -849,6 +850,9 @@ void FLV::Tag::toMeta(DTSC::Meta &meta, AMF::Object &amf_storage, size_t &reTrac
|
||||||
if (reTrack == INVALID_TRACK_ID){
|
if (reTrack == INVALID_TRACK_ID){
|
||||||
reTrack = meta.addTrack();
|
reTrack = meta.addTrack();
|
||||||
meta.setID(reTrack, getTrackID());
|
meta.setID(reTrack, getTrackID());
|
||||||
|
if (targetParams.count("lang")){
|
||||||
|
meta.setLang(reTrack, targetParams.at("lang"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string codec = meta.getCodec(reTrack);
|
std::string codec = meta.getCodec(reTrack);
|
||||||
|
|
|
@ -54,7 +54,7 @@ namespace FLV{
|
||||||
bool DTSCAudioInit(DTSC::Meta &meta, uint32_t aTrack);
|
bool DTSCAudioInit(DTSC::Meta &meta, uint32_t aTrack);
|
||||||
bool DTSCMetaInit(const DTSC::Meta &M, std::set<long unsigned int> &selTracks);
|
bool DTSCMetaInit(const DTSC::Meta &M, std::set<long unsigned int> &selTracks);
|
||||||
void toMeta(DTSC::Meta &meta, AMF::Object &amf_storage);
|
void toMeta(DTSC::Meta &meta, AMF::Object &amf_storage);
|
||||||
void toMeta(DTSC::Meta &meta, AMF::Object &amf_storage, size_t &reTrack);
|
void toMeta(DTSC::Meta &meta, AMF::Object &amf_storage, size_t &reTrack, const std::map<std::string, std::string> &targetParams);
|
||||||
bool MemLoader(char *D, unsigned int S, unsigned int &P);
|
bool MemLoader(char *D, unsigned int S, unsigned int &P);
|
||||||
bool FileLoader(FILE *f);
|
bool FileLoader(FILE *f);
|
||||||
unsigned int getTrackID();
|
unsigned int getTrackID();
|
||||||
|
|
|
@ -721,6 +721,15 @@ namespace Mist{
|
||||||
}
|
}
|
||||||
if (amfData.getContentP(3)){
|
if (amfData.getContentP(3)){
|
||||||
streamName = Encodings::URL::decode(amfData.getContentP(3)->StrValue());
|
streamName = Encodings::URL::decode(amfData.getContentP(3)->StrValue());
|
||||||
|
|
||||||
|
// handle variables
|
||||||
|
if (streamName.find('?') != std::string::npos){
|
||||||
|
std::string tmpVars = streamName.substr(streamName.find('?') + 1);
|
||||||
|
streamName = streamName.substr(0, streamName.find('?'));
|
||||||
|
Util::Config::streamName = streamName;
|
||||||
|
HTTP::parseVars(tmpVars, targetParams);
|
||||||
|
}
|
||||||
|
|
||||||
Util::Config::streamName = streamName;
|
Util::Config::streamName = streamName;
|
||||||
reqUrl += "/" + streamName; // LTS
|
reqUrl += "/" + streamName; // LTS
|
||||||
|
|
||||||
|
@ -1248,7 +1257,7 @@ namespace Mist{
|
||||||
|
|
||||||
size_t reTrack = next.cs_id * 3 + (F.data[0] == 0x09 ? 1 : (F.data[0] == 0x08 ? 2 : 3));
|
size_t reTrack = next.cs_id * 3 + (F.data[0] == 0x09 ? 1 : (F.data[0] == 0x08 ? 2 : 3));
|
||||||
if (!reTrackToID.count(reTrack)){reTrackToID[reTrack] = INVALID_TRACK_ID;}
|
if (!reTrackToID.count(reTrack)){reTrackToID[reTrack] = INVALID_TRACK_ID;}
|
||||||
F.toMeta(meta, *amf_storage, reTrackToID[reTrack]);
|
F.toMeta(meta, *amf_storage, reTrackToID[reTrack], targetParams);
|
||||||
if (F.getDataLen() && !(F.needsInitData() && F.isInitData())){
|
if (F.getDataLen() && !(F.needsInitData() && F.isInitData())){
|
||||||
uint64_t tagTime = next.timestamp;
|
uint64_t tagTime = next.timestamp;
|
||||||
if (!M.getBootMsOffset()){
|
if (!M.getBootMsOffset()){
|
||||||
|
|
Loading…
Add table
Reference in a new issue