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){
|
||||
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;
|
||||
switch (data[0]){
|
||||
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){
|
||||
reTrack = meta.addTrack();
|
||||
meta.setID(reTrack, getTrackID());
|
||||
if (targetParams.count("lang")){
|
||||
meta.setLang(reTrack, targetParams.at("lang"));
|
||||
}
|
||||
}
|
||||
|
||||
std::string codec = meta.getCodec(reTrack);
|
||||
|
|
|
@ -54,7 +54,7 @@ namespace FLV{
|
|||
bool DTSCAudioInit(DTSC::Meta &meta, uint32_t aTrack);
|
||||
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, 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 FileLoader(FILE *f);
|
||||
unsigned int getTrackID();
|
||||
|
|
|
@ -721,6 +721,15 @@ namespace Mist{
|
|||
}
|
||||
if (amfData.getContentP(3)){
|
||||
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;
|
||||
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));
|
||||
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())){
|
||||
uint64_t tagTime = next.timestamp;
|
||||
if (!M.getBootMsOffset()){
|
||||
|
|
Loading…
Add table
Reference in a new issue