private void OnMetaData(DataMessage msg) { this.metadata = msg; var info = new AtomCollection(); info.SetChanInfoType("FLV"); info.SetChanInfoStreamType("video/x-flv"); info.SetChanInfoStreamExt(".flv"); if (metadata.Arguments[0].Type==AMF.AMFValueType.ECMAArray || metadata.Arguments[0].Type==AMF.AMFValueType.Object){ var bitrate = 0.0; var val = metadata.Arguments[0]["maxBitrate"]; if (!AMF.AMFValue.IsNull(val)) { double maxBitrate; string maxBitrateStr = System.Text.RegularExpressions.Regex.Replace((string)val, @"([\d]+)k", "$1"); if (double.TryParse(maxBitrateStr, out maxBitrate)) { bitrate += maxBitrate; } } else if (!AMF.AMFValue.IsNull(val = metadata.Arguments[0]["videodatarate"])) { bitrate += (double)val; } if (!AMF.AMFValue.IsNull(val = metadata.Arguments[0]["audiodatarate"])) { bitrate += (double)val; } info.SetChanInfoBitrate((int)bitrate); } OnChannelInfoChanged(info); OnHeaderChanged(msg); OnContentChanged(msg); }
private void ClearDataFrame(DataMessage msg) { var name = (string)msg.Arguments[0]; switch (name) { case "onMetaData": metadata = null; break; } }
public void OnData(DataMessage msg) { switch (msg.PropertyName) { case "@setDataFrame": SetDataFrame(msg); break; case "@clearDataFrame": ClearDataFrame(msg); break; case "onMetaData": OnMetaData(msg); break; default: OnContentChanged(msg); break; } }
public void OnData(DataMessage msg) { this.connection.PostMessage(3, new RTMPMessage( msg.MessageType, msg.Timestamp, this.connection.StreamId, msg.Body) ); }
private Task OnData(DataMessage msg, CancellationToken cancel_token) { flvBuffer.OnData(msg); return(Task.Delay(0)); }
protected virtual Task OnData(DataMessage msg, CancellationToken cancel_token) { return(Task.Delay(0)); }
private Task OnData(DataMessage msg, CancellationToken cancel_token) { flvBuffer.OnData(msg); return Task.Delay(0); }
private void SetDataFrame(DataMessage msg) { var name = (string)msg.Arguments[0]; var data_msg = new DataAMF0Message(msg.Timestamp, 0, name, new AMF.AMFValue[] { msg.Arguments[1] }); OnData(data_msg); }
protected virtual async Task OnData(DataMessage msg, CancellationToken cancel_token) { }
void OnData(DataMessage msg) { flvBuffer.OnData(msg); }
protected virtual Task OnData(DataMessage msg, CancellationToken cancel_token) { return Task.Delay(0); }
void OnData(DataMessage msg) { flvBuffer.OnData(msg); }