         listenTo(container, eventName: InternalEvent.didChangePlayback.rawValue) { [weak self] (_: EventUserInfo) in self?.bindEvents() }
     }
     
-    private var dvrEnabled: Bool {
-        guard let playback = core?.activePlayback as? AVFoundationPlayback else { return false }
-        guard let player = playback.player else { return false }
-        return playback.playbackType == .live && CMTimeGetSeconds(player.currentTime()) >= minDvrSize
+    func triggerDvrEvent() {
+        guard let duration = duration else { return }
+        let userInfo = ["dvrEnabled": dvrEnabled,
+                        "duration": duration] as [String : Any]
+        playback?.trigger(InternalEvent.detectDVR.rawValue, userInfo: userInfo)
+    }
+}
+
+//MARK: DVR
+extension DVRPlugin {
+    var minDvrSize: Double {
+        return 60
     }
     
-    func triggerDvrEvent() {
-        guard let playback = core?.activePlayback else { return }
-        playback.trigger(InternalEvent.detectDVR.rawValue, userInfo: ["enabled": dvrEnabled])
+    var duration: Double? {
+        guard let currentTime = playback?.player?.currentTime() else { return nil }
+        return CMTimeGetSeconds(currentTime)
+    }
+    
+    private var dvrEnabled: Bool {
+        guard let player = playback?.player else { return false }
+        return playback?.playbackType == .live && CMTimeGetSeconds(player.currentTime()) >= minDvrSize
     }
 }

        super.init(context: context)
        bindEvents()
    }
}


//MARK: Events Binding
extension DVRPlugin {
    fileprivate func bindEvents() {
        stopListening()
        
        bindCoreEvents()

    
    open override var pluginName: String {
        return "dvr"
    }
    
    public required init?(coder _: NSCoder) {
