RTMP header sends now use the current media timestamp instead of a hardcoded 0.

This commit is contained in:
Thulinma 2021-01-13 21:06:21 +01:00
parent 0d956dca26
commit 7124f6070b

View file

@ -573,21 +573,31 @@ namespace Mist{
selectedTracks.insert(it->first); selectedTracks.insert(it->first);
} }
tag.DTSCMetaInit(meta, selectedTracks); tag.DTSCMetaInit(meta, selectedTracks);
if (tag.len){myConn.SendNow(RTMPStream::SendMedia(tag));} if (tag.len){
tag.tagTime(currentTime());
myConn.SendNow(RTMPStream::SendMedia(tag));
}
for (std::set<size_t>::iterator it = selectedTracks.begin(); it != selectedTracks.end(); it++){ for (std::set<size_t>::iterator it = selectedTracks.begin(); it != selectedTracks.end(); it++){
std::string type = M.getType(*it); std::string type = M.getType(*it);
if (type == "video"){ if (type == "video"){
if (tag.DTSCVideoInit(meta, *it)){myConn.SendNow(RTMPStream::SendMedia(tag));} if (tag.DTSCVideoInit(meta, *it)){
tag.tagTime(currentTime());
myConn.SendNow(RTMPStream::SendMedia(tag));
}
} }
if (type == "audio"){ if (type == "audio"){
if (tag.DTSCAudioInit(meta.getCodec(*it), meta.getRate(*it), meta.getSize(*it), meta.getChannels(*it), meta.getInit(*it))){myConn.SendNow(RTMPStream::SendMedia(tag));} if (tag.DTSCAudioInit(meta.getCodec(*it), meta.getRate(*it), meta.getSize(*it), meta.getChannels(*it), meta.getInit(*it))){
tag.tagTime(currentTime());
myConn.SendNow(RTMPStream::SendMedia(tag));
}
} }
} }
//Insert silent init data if audio set to silent //Insert silent init data if audio set to silent
hasSilence = (targetParams.count("audio") && targetParams["audio"] == "silent"); hasSilence = (targetParams.count("audio") && targetParams["audio"] == "silent");
if (hasSilence && tag.DTSCAudioInit("AAC", 44100, 32, 2, std::string("\022\020V\345\000", 5))){ if (hasSilence && tag.DTSCAudioInit("AAC", 44100, 32, 2, std::string("\022\020V\345\000", 5))){
INFO_MSG("Inserting silence track init data"); INFO_MSG("Inserting silence track init data");
tag.tagTime(currentTime());
myConn.SendNow(RTMPStream::SendMedia(tag)); myConn.SendNow(RTMPStream::SendMedia(tag));
} }
sentHeader = true; sentHeader = true;