ReplayKit

RSS for tag

Record or stream video from the screen and audio from the app and microphone using ReplayKit.

Posts under ReplayKit tag

111 Posts

Post

Replies

Boosts

Views

Activity

In RPBroadcastSampleHandler not called `processSampleBuffer`
I want to implement screen recording similar to Teams, WhatsApp... I created an Upload Broadcast Extension. If I start the extension, both audio and video will start to be recorded (without CallKit). Issue: During an ongoing call (CallKit), the extension starts, but does not start recording. Called broadcastStarted(withSetupInfo:) but not called processSampleBuffer(_:, with:). The extension stops after a short while. How do I setup ReplayKit to work together with CallKit? Is it possible that the CallKit audio setting does not allow ReplayKit recording? Is it possible to turn off audio in ReplayKit and request only video?
1
0
2.3k
Mar ’23
RPBroadcastSampleHandler method invocation programmatically
I have a container app and a broadcast upload extension. The broadcast upload extension's SampleHandler inherits RPBroadcastSampleHandler When I tap on broadcast picker view and start the broadcast - SampleHandler's broadcastStarted() is called. I tried to google and go through apple docs to find a way to invoke pauseBroadcast() and resumeBroadcast() on tap of a button in container app's interface but no success. On below URL I found out that "ReplayKit calls this method when the the broadcasting app calls its pauseBroadcast() method."https://developer.apple.com/documentation/replaykit/rpbroadcastsamplehandler/2143174-broadcastpaused. Though the pauseBroadcast is invoked automatically when I tap on the broadcastPickerView and alert comes. Is there any way to invoke pauseBroadcast() and resumeBroadcast() on tap of a button in container app's interface? I tried to call pauseBroadcast() by following but no success. let rpController = RPBroadcastController() rpController.pauseBroadcast() let handler = RPBroadcastSampleHandler() handler.broadcastPaused()
0
0
896
Mar ’23
ReplayKit error: Code=-5833 "Failed to start due to audio/video capture failure"
Getting this error Error Domain=com.apple.ReplayKit.RPRecordingErrorDomain Code=-5833 "Failed to start due to audio/video capture failure" UserInfo={NSLocalizedDescription=Failed to start due to audio/video capture failure}. This occurs when calling startCaptureWithHandler a second time after having successfully completed a screen capture session (startCaptureWithHandler and stopCaptureWithHandler both completed successfully and sample buffers were successfully delivered in between).replayd output between stopping the previous capture and the failed startCaptureWIthHandler is below:default 11:55:24.833994 -0800 replayd RPConnectionManager: stopRecordingWithHandlerdefault 11:55:24.834098 -0800 replayd RPRecordingManager: stopRecordingWithHandler:default 11:55:24.834186 -0800 replayd RPRecordingManager: stopRecordingWithStartTimeOffset:endTimeOffset:handler:default 11:55:24.834286 -0800 replayd RPRecordingSession: finishSessionWithHandlerdefault 11:55:24.834384 -0800 replayd RPRecordingSession: stopdefault 11:55:24.834927 -0800 replayd RPRecordingSession: stopAllCapturedefault 11:55:24.834995 -0800 replayd RPScreenCaptureManagerIOS: stop capture with FigCaptureController: 0x1089122c0default 11:55:24.835054 -0800 replayd RPClientProxy:updateScreenRecordingStateWithCurrentState:default 11:55:24.835193 -0800 replayd RPRecordingManager:resetStatesForSession:default 11:55:24.835253 -0800 replayd RPConnectionManager: stopRecordingWithHandler completeddefault 11:55:24.835340 -0800 replayd startLogging: Client starts logging...default 11:55:24.844330 -0800 replayd RPCaptureManager: stopDeviceCaptureSessionWithFinishHandlerdefault 11:55:24.855789 -0800 replayd <private>default 11:55:24.856105 -0800 replayd RPAppAudioCaptureManager:stopAudioCapture: Audio Queue successfully stoppeddefault 11:55:24.856157 -0800 replayd sendOneMessageWithSessionInfo: XPC connection invalidateddefault 11:55:24.874763 -0800 replayd RPAppAudioCaptureManager: Audio Queue has been disposeddefault 11:55:56.177716 -0800 replayd RPConnectionManager: startRecordingWindowLayerContextIDsdefault 11:55:56.177767 -0800 replayd RPRecordingManager:startRecordingWindowLayerContextID:windowSize:microphoneEnabled:streaming:withHandler:default 11:55:56.178733 -0800 replayd RPRecordingManager:checkRecordingRequirementsForSession:default 11:55:56.182929 -0800 replayd RPRecordingManager:showAcknowledgementAlertdefault 11:55:56.183025 -0800 replayd -[RPRecordingManager showAcknowledgementAlertForSession:isBroadcast:microphone:camera:] Recording session is exempt, not showing the acknowledgement alert.default 11:55:56.183074 -0800 replayd RPRecordingManager:checkRecordingRequirementsForSession: No Error Found!default 11:55:56.183176 -0800 replayd RPConnectionManager: startRecordingWindowLayerContextIDs completeddefault 11:55:56.183309 -0800 replayd broadcast disableddefault 11:55:56.183399 -0800 replayd RPRecordingSession: disableBroadcastdefault 11:55:56.183486 -0800 replayd starting...default 11:55:56.183661 -0800 replayd RPRecordingSession: startSessiondefault 11:55:56.184081 -0800 replayd RPMovieWriter: startWritingHandlerdefault 11:55:56.184146 -0800 replayd RPMovieWriter: setUpAssetWriterWithHandlerdefault 11:55:56.184201 -0800 replayd RPMovieWriter: Updating the AVAssetWriter path from /private/var/mobile/Library/ReplayKit/ProjectXRMobile_01-02-2020 11-55-56.mp4 to /private/var/mobile/Library/ReplayKit/ProjectXRMobile_01-02-2020 11-55-56_1.mp4 with start count of 1default 11:55:56.184378 -0800 replayd RPMovieWriter: bit rate set to 19408078default 11:55:56.192336 -0800 replayd RPRecordingSession: startWritingHandler: returneddefault 11:55:56.192394 -0800 replayd RPRecordingSession: startOrResumeCaptureSessionWithHandler:default 11:55:56.192514 -0800 replayd RPScreenCaptureManagerIOS: replay modedefault 11:55:56.192931 -0800 replayd RPScreenCaptureManagerIOS: starting capture with FigCaptureController: 0x1089122c0default 11:55:56.194286 -0800 mediaserverd AudioSessionServerImp.cpp:1254:SetAudioCategory: { "action":"set_category", "session":{"ID":"0x44e9107","PID":16625,"name":"replayd"}, "details":{"key":"AudioCategory","value":"PlayAndRecord"} }default 11:55:56.195102 -0800 mediaserverd AudioSessionServerImp.cpp:2874:AudioSessionSetProperty: { "action":"set_property", "session":{"ID":"0x44e9107","PID":16625,"name":"replayd"}, "details":{"key":"EnableBluetoothRecording","value":true} }default 11:55:56.196915 -0800 mediaserverd AudioToolboxServers.mm:516:AudioToolboxServerHandleInterruptionWithID: ================= -> RoutingBehaviorChanged process 'sid:0x44e9107, replayd(16625), 'prim'' =================default 11:55:56.197453 -0800 mediaserverd AudioToolboxServers.mm:525:AudioToolboxServerHandleInterruptionWithID: ================= <- RoutingBehaviorChanged process 'sid:0x44e9107, replayd(16625), 'prim'' =================default 11:55:56.197617 -0800 mediaserverd AudioSessionServerImp.cpp:2874:AudioSessionSetProperty: { "action":"set_property", "session":{"ID":"0x44e9107","PID":16625,"name":"replayd"}, "details":{"key":"DefaultBuiltInRoute","value":null} }default 11:55:56.197903 -0800 mediaserverd AudioSessionServerImp.cpp:2874:AudioSessionSetProperty: { "action":"set_property", "session":{"ID":"0x44e9107","PID":16625,"name":"replayd"}, "details":{"key":"InterruptionStyle","value":"Mix with others"} }default 11:55:56.198209 -0800 mediaserverd AudioToolboxServers.mm:516:AudioToolboxServerHandleInterruptionWithID: ================= -> RoutingBehaviorChanged process 'sid:0x44e9107, replayd(16625), 'prim'' =================default 11:55:56.198387 -0800 mediaserverd AudioToolboxServers.mm:525:AudioToolboxServerHandleInterruptionWithID: ================= <- RoutingBehaviorChanged process 'sid:0x44e9107, replayd(16625), 'prim'' =================default 11:55:56.198583 -0800 mediaserverd AudioToolboxServers.mm:516:AudioToolboxServerHandleInterruptionWithID: ================= -> RoutingBehaviorChanged process 'sid:0x44e9107, replayd(16625), 'prim'' =================default 11:55:56.198667 -0800 mediaserverd AudioToolboxServers.mm:525:AudioToolboxServerHandleInterruptionWithID: ================= <- RoutingBehaviorChanged process 'sid:0x44e9107, replayd(16625), 'prim'' =================default 11:55:56.198755 -0800 mediaserverd AudioSessionServerImp.cpp:2874:AudioSessionSetProperty: { "action":"set_property", "session":{"ID":"0x44e9107","PID":16625,"name":"replayd"}, "details":{"key":"WantsToPauseSpokenAudio","value":false} }default 11:55:56.199415 -0800 mediaserverd AudioSessionServerImp.cpp:2874:AudioSessionSetProperty: { "action":"set_property", "session":{"ID":"0x44e9107","PID":16625,"name":"replayd"}, "details":{"key":"AllowedRouteTypes","value":[]} }default 11:55:56.199555 -0800 mediaserverd AudioToolboxServers.mm:516:AudioToolboxServerHandleInterruptionWithID: ================= -> RoutingBehaviorChanged process 'sid:0x44e9107, replayd(16625), 'prim'' =================default 11:55:56.199660 -0800 mediaserverd AudioToolboxServers.mm:525:AudioToolboxServerHandleInterruptionWithID: ================= <- RoutingBehaviorChanged process 'sid:0x44e9107, replayd(16625), 'prim'' =================default 11:55:56.202346 -0800 replayd RPAppAudioCaptureManager: startAudioCapture: Created Audio Queue Inputdefault 11:55:56.202734 -0800 replayd RPAppAudioCaptureManager: startAudioCapture: Successfully set Audio Queue to PIDdefault 11:55:56.260242 -0800 replayd RPScreenCaptureManagerIOS: Screen sampled at w:886 h:1920default 11:55:56.309196 -0800 replayd RPScreenCaptureManagerIOS: Screen sampled at w:886 h:1920default 11:55:56.327891 -0800 replayd RPScreenCaptureManagerIOS: Screen sampled at w:886 h:1920default 11:55:56.336548 -0800 replayd RPAppAudioCaptureManager: startAudioCapture: Successfully started Audio Queue Recordingdefault 11:55:56.336597 -0800 replayd RPAppAudioCaptureManager: isRunningListenerCallback with isRunning 0default 11:55:56.350728 -0800 replayd RPScreenCaptureManagerIOS: Screen sampled at w:886 h:1920default 11:55:56.362608 -0800 replayd recorder is not running, ignoring audio datadefault 11:55:56.371407 -0800 replayd RPScreenCaptureManagerIOS: Screen sampled at w:886 h:1920default 11:55:56.376151 -0800 replayd recorder is not running, ignoring audio datadefault 11:55:56.397305 -0800 replayd recorder is not running, ignoring audio datadefault 11:55:56.400385 -0800 replayd RPScreenCaptureManagerIOS: Screen sampled at w:886 h:1920default 11:55:56.419258 -0800 replayd recorder is not running, ignoring audio datadefault 11:55:56.433945 -0800 replayd RPScreenCaptureManagerIOS: Screen sampled at w:886 h:1920default 11:55:56.461486 -0800 replayd recorder is not running, ignoring audio data
1
0
2.7k
Feb ’23
Can't save file to app documents on iPhone but works on iPad.
I have developed an application that screen records and saves the video to the document directory of the App. This works flawlessly on iPad but does not work on iPhone and I receive the following error: [RPDaemonProxy issueSandboxExtensionForClientFileWrite:]:136 Error issuing sandbox extension for client folder path /var/mobile/Containers/Data/Application/A81A2889-D05A-4659-808F-312C745A6750/Documents error is produced when the following code is run:         let videoURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("output0.mp4")         recorder.stopRecording(withOutput: videoURL, completionHandler: { [unowned self] (error) in ... I have searched for hours only to find references to Bookmarks which I don't believe apply to this situation since this has worked previously on multiple iPad devices. Thank you!
3
3
2.7k
Feb ’23
AVFoundationErrorDomain Code=-11847 even when AVAssetWriter is not backgrounded
Hello, I'm finding that AVAssetWriter status is failing in the middle of recording frames obtained using RPScreenRecorder::startCapture. The failure seems to occur about a minute and half into a recording. The error code when asked from AVAssetWriter is -11847. It appears that error code is usually thrown when the app is backgrounded but in my case the app is never backgrounded. This error happens once every 2-3 runs on my iPhone 12 Pro Max. It's also reproducible on an iPhone 11. iOS version is 15.1.1. Any clues as to why this might be occurring? Thanks in advance. Note I'm using movieFragmentInterval on an mp4 file. I couldn't tell from the documentation if its only for QuickTime files or not. I'm setting up an AVAssetWriter like so. Code simplified for readability. let assetWriter = try? AVAssetWriter(outputURL: fileURL, fileType: AVFileType.mp4)! assetWriter.movieFragmentInterval = CMTimeMakeWithSeconds(60, preferredTimescale: 1000)       let preset = AVOutputSettingsAssistant(preset: .preset1280x720) var outputSettings = preset?.videoSettings outputSettings?[AVVideoScalingModeKey] = AVVideoScalingModeResizeAspect var compressionSettings = outputSettings?[AVVideoCompressionPropertiesKey] as? [String:Any] var bitRate:Float = 4.0 compressionSettings?[AVVideoAverageBitRateKey] = NSNumber(value:720.0 * 1280.0 * bitRate) outputSettings?[AVVideoCompressionPropertiesKey] = compressionSettings       videoInput = AVAssetWriterInput(mediaType: AVMediaType.video, outputSettings: outputSettings) videoInput.expectsMediaDataInRealTime = true       assetWriter.add(videoInput)       let audioOutputSettings = preset?.audioSettings       audioInput = AVAssetWriterInput(mediaType: .audio, outputSettings: audioOutputSettings) audioInput.expectsMediaDataInRealTime = true;        assetWriter.add(audioInput) assetWriter.startWriting()
2
0
2.8k
Feb ’23
iOS11 Screen Recording API
How is it possible to record your screen outside your app? (When app is on background?)I can't find a solution for this, it seems that ReplayKit records screen only when app in foreground state.I wonder how TeamViewer implemented their screen share new feature in ios11 ...Talia
7
1
10k
Jan ’23
iOS Screen Capture without user interaction?
Hello! I've implemented an iOS app that uses ReplayKit to capture the user's screen using the ReplayKit's standard screen record button (RPSystemBroadcastPickerView) and a screenshare app extension. Is there any way of starting the screen capture either without the user's explicit interaction, or where they previously gave permission but wouldn't need to a second time? I'm expecting the answer is "no" from what I've read from a security perspective, but is there any strategy I've not seen that would not need (or at least minimise) user interaction?
0
0
1.1k
Jan ’23
How do I know that Broadcast Upload Extension is working?
My iOS app is an extension to Broadcast Upload. I would like to know that this extension app is running from my container app. In the WWDC video, it was stated that you can find out by UIScreen.main.isCaptured, but you can't know which Extensions are being captured by which. One way I thought of doing this is to add a Key like isRunning to the UserDefaults This is a way to create and update this regularly. But I don't think this is a good way to do it. Is there an API or better way to know this? Thank you.
3
0
4.3k
Jan ’23
Broadcast finishing unexpectedly
Hello, I have an app that uses Zoom's Video SDK in order to broadcast the screen, and the SDK uses ReplayKit. The broadcast has been working fine for the most part. We have the app on TestFlight and the majority of testers have been able to use the app just fine, but there is one tester having an issue with the broadcast: The broadcast seems to be killed right after it starts. And there is this message: The user that has been having this issue is running the app on an iPhone 8, running iOS 15.6. I have ran tests on another iPhone 8 and other models running the same iOS version, but could not reproduce the error, so I don't think this issue is related to iPhone model or iOS version. I have searched the error message on google, and found out that many people have had this issue in different applications, thus my thinking that this issue is related to ReplayKit. Has anyone else faced this issue recently? Could this be the OS killing the app extension due to lack of memory? Any help will be appreciated, thanks!
1
0
966
Aug ’22
RPSystemBroadcastPickerView is showing all available options
Hello, I have a tester on TestFlight that has reported an issue with the BroadcastPicker on my app. I have configured the preferredExtension property and it has been working fine for almost everyone else, but to this one tester it seems like the preferedExtension property is being ignored. Whenever he opens the BroadcastPicker, it shows all available options, and not just my app. Has anyone else faced this issue? Is there any known cause for this? Does anyone know of a possible workaround? Thanks!
0
0
998
Aug ’22
using audio buffer from ReplayKit
So currently I using blackhole program to connect the output into input device. I can see that ReplayKit is able to pickup the input and get audio buffer. however, there is no data in the buffer. if there is no data, does that mean there s no audio recorded, or the audio data is store somewhere else?
0
0
801
Aug ’22
Critical bug with Discord and iOS broadcast extension
I am the developer of StreamChamp an iOS app for streaming games to Twitch, YouTube and other platforms. We got over 30000 active users and growing. Recently our users reported a bug, they can’t hear voices of people in Discord voice-chat while streaming. Basically when someone is broadcasting viewers can hear in-game sounds, streamer voice, but can’t hear voices of people streamer talking with in the voice-chat. This problem appeared in June. We tried to fix it, but bug is not on our side. The Discord and StreamChamp users experience is struggling, we should work out the solution.
1
0
2.2k
Jul ’22
In RPBroadcastSampleHandler not called `processSampleBuffer`
I want to implement screen recording similar to Teams, WhatsApp... I created an Upload Broadcast Extension. If I start the extension, both audio and video will start to be recorded (without CallKit). Issue: During an ongoing call (CallKit), the extension starts, but does not start recording. Called broadcastStarted(withSetupInfo:) but not called processSampleBuffer(_:, with:). The extension stops after a short while. How do I setup ReplayKit to work together with CallKit? Is it possible that the CallKit audio setting does not allow ReplayKit recording? Is it possible to turn off audio in ReplayKit and request only video?
Replies
1
Boosts
0
Views
2.3k
Activity
Mar ’23
RPBroadcastSampleHandler method invocation programmatically
I have a container app and a broadcast upload extension. The broadcast upload extension's SampleHandler inherits RPBroadcastSampleHandler When I tap on broadcast picker view and start the broadcast - SampleHandler's broadcastStarted() is called. I tried to google and go through apple docs to find a way to invoke pauseBroadcast() and resumeBroadcast() on tap of a button in container app's interface but no success. On below URL I found out that "ReplayKit calls this method when the the broadcasting app calls its pauseBroadcast() method."https://developer.apple.com/documentation/replaykit/rpbroadcastsamplehandler/2143174-broadcastpaused. Though the pauseBroadcast is invoked automatically when I tap on the broadcastPickerView and alert comes. Is there any way to invoke pauseBroadcast() and resumeBroadcast() on tap of a button in container app's interface? I tried to call pauseBroadcast() by following but no success. let rpController = RPBroadcastController() rpController.pauseBroadcast() let handler = RPBroadcastSampleHandler() handler.broadcastPaused()
Replies
0
Boosts
0
Views
896
Activity
Mar ’23
ReplayKit error: Code=-5833 "Failed to start due to audio/video capture failure"
Getting this error Error Domain=com.apple.ReplayKit.RPRecordingErrorDomain Code=-5833 "Failed to start due to audio/video capture failure" UserInfo={NSLocalizedDescription=Failed to start due to audio/video capture failure}. This occurs when calling startCaptureWithHandler a second time after having successfully completed a screen capture session (startCaptureWithHandler and stopCaptureWithHandler both completed successfully and sample buffers were successfully delivered in between).replayd output between stopping the previous capture and the failed startCaptureWIthHandler is below:default 11:55:24.833994 -0800 replayd RPConnectionManager: stopRecordingWithHandlerdefault 11:55:24.834098 -0800 replayd RPRecordingManager: stopRecordingWithHandler:default 11:55:24.834186 -0800 replayd RPRecordingManager: stopRecordingWithStartTimeOffset:endTimeOffset:handler:default 11:55:24.834286 -0800 replayd RPRecordingSession: finishSessionWithHandlerdefault 11:55:24.834384 -0800 replayd RPRecordingSession: stopdefault 11:55:24.834927 -0800 replayd RPRecordingSession: stopAllCapturedefault 11:55:24.834995 -0800 replayd RPScreenCaptureManagerIOS: stop capture with FigCaptureController: 0x1089122c0default 11:55:24.835054 -0800 replayd RPClientProxy:updateScreenRecordingStateWithCurrentState:default 11:55:24.835193 -0800 replayd RPRecordingManager:resetStatesForSession:default 11:55:24.835253 -0800 replayd RPConnectionManager: stopRecordingWithHandler completeddefault 11:55:24.835340 -0800 replayd startLogging: Client starts logging...default 11:55:24.844330 -0800 replayd RPCaptureManager: stopDeviceCaptureSessionWithFinishHandlerdefault 11:55:24.855789 -0800 replayd <private>default 11:55:24.856105 -0800 replayd RPAppAudioCaptureManager:stopAudioCapture: Audio Queue successfully stoppeddefault 11:55:24.856157 -0800 replayd sendOneMessageWithSessionInfo: XPC connection invalidateddefault 11:55:24.874763 -0800 replayd RPAppAudioCaptureManager: Audio Queue has been disposeddefault 11:55:56.177716 -0800 replayd RPConnectionManager: startRecordingWindowLayerContextIDsdefault 11:55:56.177767 -0800 replayd RPRecordingManager:startRecordingWindowLayerContextID:windowSize:microphoneEnabled:streaming:withHandler:default 11:55:56.178733 -0800 replayd RPRecordingManager:checkRecordingRequirementsForSession:default 11:55:56.182929 -0800 replayd RPRecordingManager:showAcknowledgementAlertdefault 11:55:56.183025 -0800 replayd -[RPRecordingManager showAcknowledgementAlertForSession:isBroadcast:microphone:camera:] Recording session is exempt, not showing the acknowledgement alert.default 11:55:56.183074 -0800 replayd RPRecordingManager:checkRecordingRequirementsForSession: No Error Found!default 11:55:56.183176 -0800 replayd RPConnectionManager: startRecordingWindowLayerContextIDs completeddefault 11:55:56.183309 -0800 replayd broadcast disableddefault 11:55:56.183399 -0800 replayd RPRecordingSession: disableBroadcastdefault 11:55:56.183486 -0800 replayd starting...default 11:55:56.183661 -0800 replayd RPRecordingSession: startSessiondefault 11:55:56.184081 -0800 replayd RPMovieWriter: startWritingHandlerdefault 11:55:56.184146 -0800 replayd RPMovieWriter: setUpAssetWriterWithHandlerdefault 11:55:56.184201 -0800 replayd RPMovieWriter: Updating the AVAssetWriter path from /private/var/mobile/Library/ReplayKit/ProjectXRMobile_01-02-2020 11-55-56.mp4 to /private/var/mobile/Library/ReplayKit/ProjectXRMobile_01-02-2020 11-55-56_1.mp4 with start count of 1default 11:55:56.184378 -0800 replayd RPMovieWriter: bit rate set to 19408078default 11:55:56.192336 -0800 replayd RPRecordingSession: startWritingHandler: returneddefault 11:55:56.192394 -0800 replayd RPRecordingSession: startOrResumeCaptureSessionWithHandler:default 11:55:56.192514 -0800 replayd RPScreenCaptureManagerIOS: replay modedefault 11:55:56.192931 -0800 replayd RPScreenCaptureManagerIOS: starting capture with FigCaptureController: 0x1089122c0default 11:55:56.194286 -0800 mediaserverd AudioSessionServerImp.cpp:1254:SetAudioCategory: { "action":"set_category", "session":{"ID":"0x44e9107","PID":16625,"name":"replayd"}, "details":{"key":"AudioCategory","value":"PlayAndRecord"} }default 11:55:56.195102 -0800 mediaserverd AudioSessionServerImp.cpp:2874:AudioSessionSetProperty: { "action":"set_property", "session":{"ID":"0x44e9107","PID":16625,"name":"replayd"}, "details":{"key":"EnableBluetoothRecording","value":true} }default 11:55:56.196915 -0800 mediaserverd AudioToolboxServers.mm:516:AudioToolboxServerHandleInterruptionWithID: ================= -> RoutingBehaviorChanged process 'sid:0x44e9107, replayd(16625), 'prim'' =================default 11:55:56.197453 -0800 mediaserverd AudioToolboxServers.mm:525:AudioToolboxServerHandleInterruptionWithID: ================= <- RoutingBehaviorChanged process 'sid:0x44e9107, replayd(16625), 'prim'' =================default 11:55:56.197617 -0800 mediaserverd AudioSessionServerImp.cpp:2874:AudioSessionSetProperty: { "action":"set_property", "session":{"ID":"0x44e9107","PID":16625,"name":"replayd"}, "details":{"key":"DefaultBuiltInRoute","value":null} }default 11:55:56.197903 -0800 mediaserverd AudioSessionServerImp.cpp:2874:AudioSessionSetProperty: { "action":"set_property", "session":{"ID":"0x44e9107","PID":16625,"name":"replayd"}, "details":{"key":"InterruptionStyle","value":"Mix with others"} }default 11:55:56.198209 -0800 mediaserverd AudioToolboxServers.mm:516:AudioToolboxServerHandleInterruptionWithID: ================= -> RoutingBehaviorChanged process 'sid:0x44e9107, replayd(16625), 'prim'' =================default 11:55:56.198387 -0800 mediaserverd AudioToolboxServers.mm:525:AudioToolboxServerHandleInterruptionWithID: ================= <- RoutingBehaviorChanged process 'sid:0x44e9107, replayd(16625), 'prim'' =================default 11:55:56.198583 -0800 mediaserverd AudioToolboxServers.mm:516:AudioToolboxServerHandleInterruptionWithID: ================= -> RoutingBehaviorChanged process 'sid:0x44e9107, replayd(16625), 'prim'' =================default 11:55:56.198667 -0800 mediaserverd AudioToolboxServers.mm:525:AudioToolboxServerHandleInterruptionWithID: ================= <- RoutingBehaviorChanged process 'sid:0x44e9107, replayd(16625), 'prim'' =================default 11:55:56.198755 -0800 mediaserverd AudioSessionServerImp.cpp:2874:AudioSessionSetProperty: { "action":"set_property", "session":{"ID":"0x44e9107","PID":16625,"name":"replayd"}, "details":{"key":"WantsToPauseSpokenAudio","value":false} }default 11:55:56.199415 -0800 mediaserverd AudioSessionServerImp.cpp:2874:AudioSessionSetProperty: { "action":"set_property", "session":{"ID":"0x44e9107","PID":16625,"name":"replayd"}, "details":{"key":"AllowedRouteTypes","value":[]} }default 11:55:56.199555 -0800 mediaserverd AudioToolboxServers.mm:516:AudioToolboxServerHandleInterruptionWithID: ================= -> RoutingBehaviorChanged process 'sid:0x44e9107, replayd(16625), 'prim'' =================default 11:55:56.199660 -0800 mediaserverd AudioToolboxServers.mm:525:AudioToolboxServerHandleInterruptionWithID: ================= <- RoutingBehaviorChanged process 'sid:0x44e9107, replayd(16625), 'prim'' =================default 11:55:56.202346 -0800 replayd RPAppAudioCaptureManager: startAudioCapture: Created Audio Queue Inputdefault 11:55:56.202734 -0800 replayd RPAppAudioCaptureManager: startAudioCapture: Successfully set Audio Queue to PIDdefault 11:55:56.260242 -0800 replayd RPScreenCaptureManagerIOS: Screen sampled at w:886 h:1920default 11:55:56.309196 -0800 replayd RPScreenCaptureManagerIOS: Screen sampled at w:886 h:1920default 11:55:56.327891 -0800 replayd RPScreenCaptureManagerIOS: Screen sampled at w:886 h:1920default 11:55:56.336548 -0800 replayd RPAppAudioCaptureManager: startAudioCapture: Successfully started Audio Queue Recordingdefault 11:55:56.336597 -0800 replayd RPAppAudioCaptureManager: isRunningListenerCallback with isRunning 0default 11:55:56.350728 -0800 replayd RPScreenCaptureManagerIOS: Screen sampled at w:886 h:1920default 11:55:56.362608 -0800 replayd recorder is not running, ignoring audio datadefault 11:55:56.371407 -0800 replayd RPScreenCaptureManagerIOS: Screen sampled at w:886 h:1920default 11:55:56.376151 -0800 replayd recorder is not running, ignoring audio datadefault 11:55:56.397305 -0800 replayd recorder is not running, ignoring audio datadefault 11:55:56.400385 -0800 replayd RPScreenCaptureManagerIOS: Screen sampled at w:886 h:1920default 11:55:56.419258 -0800 replayd recorder is not running, ignoring audio datadefault 11:55:56.433945 -0800 replayd RPScreenCaptureManagerIOS: Screen sampled at w:886 h:1920default 11:55:56.461486 -0800 replayd recorder is not running, ignoring audio data
Replies
1
Boosts
0
Views
2.7k
Activity
Feb ’23
Can't save file to app documents on iPhone but works on iPad.
I have developed an application that screen records and saves the video to the document directory of the App. This works flawlessly on iPad but does not work on iPhone and I receive the following error: [RPDaemonProxy issueSandboxExtensionForClientFileWrite:]:136 Error issuing sandbox extension for client folder path /var/mobile/Containers/Data/Application/A81A2889-D05A-4659-808F-312C745A6750/Documents error is produced when the following code is run:         let videoURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("output0.mp4")         recorder.stopRecording(withOutput: videoURL, completionHandler: { [unowned self] (error) in ... I have searched for hours only to find references to Bookmarks which I don't believe apply to this situation since this has worked previously on multiple iPad devices. Thank you!
Replies
3
Boosts
3
Views
2.7k
Activity
Feb ’23
iOs Screen Mirroring
hi team: is there any API approach for the developer to bring up the screen mirroring picker view? thank you!
Replies
0
Boosts
0
Views
1k
Activity
Feb ’23
RPScreenRecorder only record the content of rootViewController
Hi, I use [RPScreenRecorder startCaptureWithHandler:completionHandler:] to record the content of view, that the view controller is presented by the rootViewController of a UINavigationController. It works normally most of the time. But sometimes, it only record the content of the rootViewController. Can you please tell me how to fix it? Thank you!
Replies
0
Boosts
0
Views
928
Activity
Feb ’23
AVFoundationErrorDomain Code=-11847 even when AVAssetWriter is not backgrounded
Hello, I'm finding that AVAssetWriter status is failing in the middle of recording frames obtained using RPScreenRecorder::startCapture. The failure seems to occur about a minute and half into a recording. The error code when asked from AVAssetWriter is -11847. It appears that error code is usually thrown when the app is backgrounded but in my case the app is never backgrounded. This error happens once every 2-3 runs on my iPhone 12 Pro Max. It's also reproducible on an iPhone 11. iOS version is 15.1.1. Any clues as to why this might be occurring? Thanks in advance. Note I'm using movieFragmentInterval on an mp4 file. I couldn't tell from the documentation if its only for QuickTime files or not. I'm setting up an AVAssetWriter like so. Code simplified for readability. let assetWriter = try? AVAssetWriter(outputURL: fileURL, fileType: AVFileType.mp4)! assetWriter.movieFragmentInterval = CMTimeMakeWithSeconds(60, preferredTimescale: 1000)       let preset = AVOutputSettingsAssistant(preset: .preset1280x720) var outputSettings = preset?.videoSettings outputSettings?[AVVideoScalingModeKey] = AVVideoScalingModeResizeAspect var compressionSettings = outputSettings?[AVVideoCompressionPropertiesKey] as? [String:Any] var bitRate:Float = 4.0 compressionSettings?[AVVideoAverageBitRateKey] = NSNumber(value:720.0 * 1280.0 * bitRate) outputSettings?[AVVideoCompressionPropertiesKey] = compressionSettings       videoInput = AVAssetWriterInput(mediaType: AVMediaType.video, outputSettings: outputSettings) videoInput.expectsMediaDataInRealTime = true       assetWriter.add(videoInput)       let audioOutputSettings = preset?.audioSettings       audioInput = AVAssetWriterInput(mediaType: .audio, outputSettings: audioOutputSettings) audioInput.expectsMediaDataInRealTime = true;        assetWriter.add(audioInput) assetWriter.startWriting()
Replies
2
Boosts
0
Views
2.8k
Activity
Feb ’23
iOS11 Screen Recording API
How is it possible to record your screen outside your app? (When app is on background?)I can't find a solution for this, it seems that ReplayKit records screen only when app in foreground state.I wonder how TeamViewer implemented their screen share new feature in ios11 ...Talia
Replies
7
Boosts
1
Views
10k
Activity
Jan ’23
iOS Screen Capture without user interaction?
Hello! I've implemented an iOS app that uses ReplayKit to capture the user's screen using the ReplayKit's standard screen record button (RPSystemBroadcastPickerView) and a screenshare app extension. Is there any way of starting the screen capture either without the user's explicit interaction, or where they previously gave permission but wouldn't need to a second time? I'm expecting the answer is "no" from what I've read from a security perspective, but is there any strategy I've not seen that would not need (or at least minimise) user interaction?
Replies
0
Boosts
0
Views
1.1k
Activity
Jan ’23
How do I know that Broadcast Upload Extension is working?
My iOS app is an extension to Broadcast Upload. I would like to know that this extension app is running from my container app. In the WWDC video, it was stated that you can find out by UIScreen.main.isCaptured, but you can't know which Extensions are being captured by which. One way I thought of doing this is to add a Key like isRunning to the UserDefaults This is a way to create and update this regularly. But I don't think this is a good way to do it. Is there an API or better way to know this? Thank you.
Replies
3
Boosts
0
Views
4.3k
Activity
Jan ’23
Disable iPhone Screen Recording
Hello. If you play a film in my app, with an iPhone, you can use "Screen Recording" and record the film. and your phone saves it in your phone. Is there anyway to disable the "Screen Recording" when someone is watching the film inside my app? Thanks so much for your time.
Replies
1
Boosts
0
Views
1.3k
Activity
Nov ’22
ReplayKit: How to fix AX Lookup problem : errorCode:1100 error:Permission denied
[AXRuntimeCommon] AX Lookup problem - errorCode:1100 error:Permission denied portName:'com.apple.iphone.axserver' PID: xcode: 11.6 beta iOS: 13.5.1
Replies
4
Boosts
0
Views
3k
Activity
Sep ’22
Broadcast finishing unexpectedly
Hello, I have an app that uses Zoom's Video SDK in order to broadcast the screen, and the SDK uses ReplayKit. The broadcast has been working fine for the most part. We have the app on TestFlight and the majority of testers have been able to use the app just fine, but there is one tester having an issue with the broadcast: The broadcast seems to be killed right after it starts. And there is this message: The user that has been having this issue is running the app on an iPhone 8, running iOS 15.6. I have ran tests on another iPhone 8 and other models running the same iOS version, but could not reproduce the error, so I don't think this issue is related to iPhone model or iOS version. I have searched the error message on google, and found out that many people have had this issue in different applications, thus my thinking that this issue is related to ReplayKit. Has anyone else faced this issue recently? Could this be the OS killing the app extension due to lack of memory? Any help will be appreciated, thanks!
Replies
1
Boosts
0
Views
966
Activity
Aug ’22
RPSystemBroadcastPickerView is showing all available options
Hello, I have a tester on TestFlight that has reported an issue with the BroadcastPicker on my app. I have configured the preferredExtension property and it has been working fine for almost everyone else, but to this one tester it seems like the preferedExtension property is being ignored. Whenever he opens the BroadcastPicker, it shows all available options, and not just my app. Has anyone else faced this issue? Is there any known cause for this? Does anyone know of a possible workaround? Thanks!
Replies
0
Boosts
0
Views
998
Activity
Aug ’22
how do you download this on macos?
cant find a download source for this
Replies
1
Boosts
0
Views
662
Activity
Aug ’22
using audio buffer from ReplayKit
So currently I using blackhole program to connect the output into input device. I can see that ReplayKit is able to pickup the input and get audio buffer. however, there is no data in the buffer. if there is no data, does that mean there s no audio recorded, or the audio data is store somewhere else?
Replies
0
Boosts
0
Views
801
Activity
Aug ’22
Critical bug with Discord and iOS broadcast extension
I am the developer of StreamChamp an iOS app for streaming games to Twitch, YouTube and other platforms. We got over 30000 active users and growing. Recently our users reported a bug, they can’t hear voices of people in Discord voice-chat while streaming. Basically when someone is broadcasting viewers can hear in-game sounds, streamer voice, but can’t hear voices of people streamer talking with in the voice-chat. This problem appeared in June. We tried to fix it, but bug is not on our side. The Discord and StreamChamp users experience is struggling, we should work out the solution.
Replies
1
Boosts
0
Views
2.2k
Activity
Jul ’22
How to get the status of the App switcher during screen sharing with ReplayKit
I would like to execute a certain process only when an iPhone screen sharer is using the App switcher during screen sharing. Is there a way to get the status of the App switcher during screen sharing with ReplayKit? And if so, what iOS API or method should I use?
Replies
0
Boosts
0
Views
835
Activity
Jul ’22
How to get the name of app in use while screen sharing with ReplayKit
I would like to know if there is a way in iOS to get information on what app is on screen while screen sharing with ReplayKit. Does the iOS SDK provide a function to retrieve the name of the app on screen while screen sharing with ReplayKit? If yes, what class and method provide the function?
Replies
0
Boosts
0
Views
652
Activity
Jul ’22
10172794
linkText
Replies
0
Boosts
0
Views
777
Activity
Jul ’22