音频流中可以包含多个音频、视频track
@startuml rtc
enum kind {
+ video
+ audio
}
enum MediaStreamTrackState {
+ live
+ ended
}
enum MediaTrackCapabilities {
}
enum MediaTrackSettings {
}
enum MediaTrackConstraintSet {
}
enum MediaTrackConstraints extends MediaTrackConstraintSet {
advaced
}
enum MediaStreamConstraints {
video
audio
}
kind *-- MediaStreamTrack
MediaTrackConstraints *-- MediaStreamTrack
MediaTrackSettings *-- MediaStreamTrack
MediaTrackCapabilities *-- MediaStreamTrack
MediaStreamTrackState *-- MediaStreamTrack
class MediaStreamTrack extends EventTarget {
.. 基础属性 ..
+ readonly attribute DOMString kind
+ readonly attribute DOMString id
+ readonly attribute DOMString label
.. 静音属性 ..
+ readonly attribute boolean muted
+ attribute boolean enabled
.. 事件属性 ..
+ attribute EventHandler onmute
+ attribute EventHandler onunmute
+ attribute EventHandler onended
.. 状态属性 ..
+ readonly attribute MediaStreamTrackState readyState
-- 音轨管理 --
+ MediaStreamTrack clone()
+ void stop()
+ MediaTrackCapabilities getCapabilities()
+ MediaTrackConstraints getConstraints()
+ MediaTrackSettings getSettings()
+ Promise<void> applyConstraints(optional MediaTrackConstraints constraints = {})
}
class CanvasCaptureMediaStreamTrack extends MediaStreamTrack {
+ readonly attribute HTMLCanvasElement canvas
+ void requestFrame()
}
class MediaStream {
.. 属性 ..
+ readonly attribute DOMString id
+ readonly attribute boolean active
+ attribute EventHandler onaddtrack
+ attribute EventHandler onremovetrack
-- 构造函数 --
+ constructor()
+ constructor(MediaStream stream)
+ constructor(sequence<MediaStreamTrack> tracks)
-- 音轨管理 --
+ sequence<MediaStreamTrack> getAudioTracks()
+ sequence<MediaStreamTrack> getVideoTracks()
+ sequence<MediaStreamTrack> getTracks()
+ void addTrack(MediaStreamTrack track)
+ void removeTrack(MediaStreamTrack track)
-- 其他管理 --
+ MediaStream clone()
}
MediaStreamConstraints *-- MediaStream
EventTarget <|--- MediaStream
MediaStreamTrack *-- MediaStream
enum RecordingState {
incative
RecordingState
paused
}
enum BitrateMode {
cbr
vbr
}
class MediaRecorder {
.. 基础属性 ..
+ readonly attribute DOMString mimeType
+ readonly attribute RecordingState state
+ readonly attribute MediaStream stream
+ readonly attribute number videoBitsPerSecond
+ readonly attribute number audioBitsPerSecond
+ readonly attribute BitrateMode audioBitrateMode
.. 事件属性 ..
+ attribute EventHandler start
+ attribute EventHandler pause
+ attribute EventHandler resume
+ attribute EventHandler stop
+ attribute EventHandler dataavalidata
+ attribute EventHandler error
-- 方法管理 --
+ static isTypeSupported(String mimeType)
+ requestData()
+ start(MilliSecond timeslice)
+ paused()
+ resume()
}
RecordingState *-- MediaRecorder
BitrateMode *-- MediaRecorder
MediaStream *-- MediaRecorder
@enduml
@startuml meida-audio
class AudioNode extends EventTarget {
+ channelCount
+ channelCountMode
+ channelInterpretation
+ context
+ numberOfInputs
+ numberOfOutputs
.. 方法 ..
+ connect()
+ disconnect()
}
class MediaElementAudioSourceNode extends AudioNode{
+ mediaElement
}
class MediaStreamAudioDestinationNode extends AudioNode{
+ MediaStream stream
}
class AudioWorkletNode extends AudioNode{
.. 构造函数 ..
AudioWorkletNode(BaseAudioContext, name)
.. 基础属性 ..
+ parameters
+ port
.. 事件属性 ..
+ attribute EventHandler onprocessorerror
}
class BaseAudioContext extends EventTarget {
+ readonly AudioWorklet audioWorklet
+ currentTime
+ destination
+ listener
+ sampleRate
+ state
.. 滤波器 ..
+ createXXXXXFilter()
.. arraybuffer 转化为 ..
decodeAudioData()
createBufferSource()
.. 不推荐的 ..
+ --createScriptProcessor-- ()
}
class AudioContext extends BaseAudioContext {
+ readonly baseLatency
+ readonly outputLatency
-- 从Stream中创建 音频流 --
+ MediaElementAudioSourceNode createMediaElementSource()
+ MediaElementAudioSourceNode createMediaStreamSource()
+ MediaElementAudioSourceNode createMediaStreamTrackSource()
-- 获取处理后的音频流 --
+ MediaStreamAudioDestinationNode createMediaStreamDestination()
-- 音频流状态操作 --
+ close()
+ resume()
+ suspend()
}
class Worklet {
+ Promise addModule()
}
class AudioWorklet extends Worklet {
}
AudioWorklet o-- BaseAudioContext
MediaElementAudioSourceNode o-- AudioContext
MediaStreamAudioDestinationNode o-- AudioContext
BaseAudioContext o- AudioWorkletNode::BaseAudioContext
@enduml