Skip to content

Commit

Permalink
Merge pull request #1339 from shogo4405/feature/rtmp-playback-metada
Browse files Browse the repository at this point in the history
Handling RTMPDataMessage.
  • Loading branch information
shogo4405 authored Nov 23, 2023
2 parents 9072439 + 91eda0d commit d612881
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 2 deletions.
9 changes: 9 additions & 0 deletions Sources/RTMP/RTMPMessage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -427,6 +427,15 @@ final class RTMPDataMessage: RTMPMessage {
return
}
stream.info.byteCount.mutate { $0 += Int64(payload.count) }
switch handlerName {
case "onMetaData":
stream.metadata = arguments[0] as? [String: Any?] ?? [:]
case "|RtmpSampleAccess":
stream.audioSampleAccess = arguments[0] as? Bool ?? true
stream.videoSampleAccess = arguments[1] as? Bool ?? true
default:
break
}
}
}

Expand Down
15 changes: 13 additions & 2 deletions Sources/RTMP/RTMPStream.swift
Original file line number Diff line number Diff line change
Expand Up @@ -155,10 +155,16 @@ open class RTMPStream: NetStream {
}

static let defaultID: UInt32 = 0
/// The NetStreamInfo object whose properties contain data.
/// The RTMPStream metadata.
public internal(set) var metadata: [String: Any?] = [:]
/// The RTMPStreamInfo object whose properties contain data.
public internal(set) var info = RTMPStreamInfo()
/// The object encoding (AMF). Framework supports AMF0 only.
public private(set) var objectEncoding: RTMPObjectEncoding = RTMPConnection.defaultObjectEncoding
/// The boolean value that indicates audio samples allow access or not.
public internal(set) var audioSampleAccess = true
/// The boolean value that indicates video samples allow access or not.
public internal(set) var videoSampleAccess = true
/// Incoming audio plays on the stream or not.
public var receiveAudio = true {
didSet {
Expand Down Expand Up @@ -428,6 +434,9 @@ open class RTMPStream: NetStream {
case .open:
currentFPS = 0
frameCount = 0
audioSampleAccess = true
videoSampleAccess = true
metadata.removeAll()
info.clear()
delegate?.streamDidOpen(self)
for message in messages {
Expand Down Expand Up @@ -457,7 +466,9 @@ open class RTMPStream: NetStream {
dataTimeStamps.removeAll()
FCPublish()
case .publishing:
send(handlerName: "@setDataFrame", arguments: "onMetaData", makeMetaData())
let metadata = makeMetaData()
send(handlerName: "@setDataFrame", arguments: "onMetaData", metadata)
self.metadata = metadata
default:
break
}
Expand Down

0 comments on commit d612881

Please sign in to comment.