Explore the integration of media technologies within your app. Discuss working with audio, video, camera, and other media functionalities.

All subtopics
Posts under Media Technologies topic

Post

Replies

Boosts

Views

Activity

AVQueuePlayer unexpectedly performs network requests during offline HLS playback after several queued episode transitions
Hello, We are investigating an issue with offline HLS playback using AVQueuePlayer and would like to know whether anyone else has experienced similar behavior. Issue We download HLS content using AVAssetDownloadURLSession and play it offline using AVQueuePlayer. For some titles (but not all), after several consecutive episode transitions, the player unexpectedly attempts a network request while the next episode is already queued and the current episode has approximately 60 seconds remaining. If the device is offline, playback fails with: NSURLErrorDomain Code = -1009 and the next episode never starts. Characteristics The issue only affects certain titles. It is fully reproducible for affected titles. For example, if it occurs between Episodes 5 and 6 after starting playback from Episode 1, it always occurs at the same point when replaying from Episode 1. If playback starts directly from Episode 5, the issue does not occur. The issue only occurs when using AVQueuePlayer. Replacing the current item (removeAllItems() + replaceCurrentItem(with:)) avoids the issue, although this is unfortunately not a viable workaround because it breaks our Picture in Picture episode transition behavior. We compared the downloaded packages (boot.xml, Master Playlist, and Stream configuration) between affected and unaffected titles, but so far have not identified any meaningful structural differences that explain the behavior. Questions Has anyone experienced similar behavior with: offline HLS (.movpkg) AVQueuePlayer unexpected network requests during queued playback NSURLErrorDomain Code=-1009 even though the content is downloaded for offline playback If anyone has seen a similar issue or has any information, observations, or suggestions for further investigation, I would greatly appreciate hearing from you. For reference, I have already submitted this issue through Feedback Assistant. Feedback ID: FB23487817 Thank you in advance for any information.
1
0
23
3h
AVAudioEngine input tap intermittently delivers all-zero buffers — valid format, no error thrown
We have a long-form audio recording app built on AVAudioEngine. We install a tap on inputNode, accumulate the PCM buffers, and encode them to AAC in ~60-second chunks. Setup is essentially: let session = AVAudioSession.sharedInstance() try session.setCategory(.playAndRecord, mode: .default, options: [.defaultToSpeaker, .allowBluetooth, .allowBluetoothA2DP]) try session.setActive(true) let engine = AVAudioEngine() let input = engine.inputNode let format = input.inputFormat(forBus: 0) // valid, e.g. 48 kHz, 1 ch input.installTap(onBus: 0, bufferSize: 1024, format: format) { buffer, _ in // In the failure case, buffer.floatChannelData is entirely 0.0 // (accumulate + encode to AAC) } engine.prepare() try engine.start() Intermittently — and so far only reported from the field, never reproduced in normal testing — a recording comes out completely silent. When we decode the resulting AAC and inspect the raw PCM, every sample is exactly 0.0. The signature is very specific: The engine is running and the tap keeps firing for the full duration (normal number of buffers / full-length chunks). inputFormat is valid (sampleRate ≠ 0, e.g. 48 kHz). No error is thrown anywhere — setCategory, setActive, start(), and the tap callback all succeed. The PCM is literally all zeros (not low-level noise / room tone — exact 0.0). Two separate silent recordings decode to byte-identical AAC, confirming pure digital silence rather than corruption. So as far as our error handling, format checks, and tap-liveness are concerned, everything looks healthy — yet the microphone is delivering pure silence. One way we can reproduce it: recording while the iPhone is being driven via macOS iPhone Mirroring (the iPhone stays locked, the mic is effectively unavailable from the device, but our session still activates with a valid format and the tap fires zero-filled buffers for the whole recording — with no error at any point). What we've ruled out: microphone permission is granted; it's not truncation or short capture (full-length, full frame count); it's not our encoding step (the input buffers themselves are zero); it's not a quiet/obstructed mic (that would be low noise, not exact 0.0). Questions: What other device states or scenarios can cause a running AVAudioEngine input tap to deliver all-zero buffers with a valid format and no error? (e.g. another process/system feature holding the mic, Continuity Camera/Mic, CallKit/PushToTalk session ownership, etc.) Since this surfaces with no error and a valid format, what is the recommended way to detect it at runtime? Is monitoring the input level / PCM energy the only signal, or is there a supported API to know the input isn't actually live? What's the recommended recovery once detected — is a full session deactivate/reactivate re-handshake sufficient, or is recreating the engine required?
1
0
16
4h
AUv3 extension icon cannot be resolved on one iPad across all host applications
I am developing an iOS/iPadOS application containing an AUv3 Audio Unit extension. The standalone application icon displays correctly on the affected iPad. However, the AUv3 extension icon is not displayed correctly by any tested host on that device: AUM displays a red-X placeholder icon. Cubasis displays a small generic Swift-style placeholder icon. apeMatrix displays a generic AUv3 placeholder icon. The same TestFlight build displays the correct AUv3 icon on another iPad, and the icon also displays correctly on my iPhone. This therefore appears to be device-specific AUv3 extension icon registration or resolution failure rather than missing icon artwork in the submitted application. Troubleshooting already performed: Deleted and reinstalled the application. Deleted and reinstalled host applications. Restarted the iPad. Installed both local development and TestFlight builds. Confirmed the AUv3 extension contains its compiled asset catalog and icon metadata. Renamed the primary icon set from AppIcon to AppIconV2 and verified that both generated bundles used AppIconV2. Temporarily changed the AudioComponent subtype from Vped to Vpe2 and verified the generated extension plist contained Vpe2. Installed the newly identified component successfully. The AUv3 icon still failed in every tested host. The unchanged TestFlight build displays correctly on another iPad. Expected result: The AUv3 extension icon should display consistently in host applications, as it does on the comparison iPad and iPhone. Actual result: Every host on the affected iPad receives or displays a fallback placeholder instead of the AUv3 extension icon. TLDR - The key questions: Is there is a supported way to rebuild or clear the iPadOS AUv3 extension registration database without erasing the device? Is there any useful information available on Audio Unit extension registration, LaunchServices/icon-services database, or related iPadOS component-icon resolution on an affected device? Thanks.
1
0
203
20h
Channel Mapping with AUHAL
Hi, our Mac app uses AUHAL for audio output. The data we’re playing has channels laid out in the WAVE default ordering (this is the same order as Core Audio’s AudioChannelBitmap). Playing this data usually results in the correct channel playing through the correct speaker, but there are cases where it does not: Outputting audio over HDMI usually results in the Center and LFE channels being swapped Or “Configure Speakers” in Audio MIDI Setup.app can be used to change the speaker<->channel mapping (i.e. even swapping L/R on a 2ch stereo setup), but this does not affect our app’s audio I’ve found that getting kAudioUnitProperty_AudioChannelLayout on an output unit returns the speaker<->channel mapping as set up in Audio MIDI Setup (i.e. it shows that Center/LFE swap, or if L/R are swapped). My question: is it possible to have Core Audio do the channel remapping between the WAVE default ordering, and the speaker<->channel mapping as returned by kAudioUnitProperty_AudioChannelLayout? I have tried setting kAudioUnitProperty_AudioChannelLayout on the input unit, and didn’t see a change. I’ve also tried to set kAudioOutputUnitProperty_ChannelMap on the output unit but cannot get it to work. Or do I need to remap the channels myself before giving samples to Core Audio?
6
0
332
3d
AVAudioSession microphone recording changes Bluetooth audio route in vehicle
Title AVAudioSession microphone recording changes Bluetooth audio route in vehicle Hi everyone, I’m developing an iOS app called HearSave to help drivers safely remember and save songs they hear while driving. The app performs a very simple task: the user presses a button, the app records a short audio sample for music recognition, then immediately stops recording. I’m trying to understand whether the behaviour I’m seeing is an expected limitation of iOS audio routing or whether there is a better AVAudioSession configuration. Test setup iPhone connected to a vehicle via Bluetooth. Vehicle playing DAB radio. App requests microphone access and starts recording. Recording lasts approximately 7 seconds. Behaviour observed As soon as recording begins: The vehicle changes into a voice-call style audio route. DAB audio becomes muted. The vehicle’s volume control changes to voice volume. When recording finishes, the radio does not automatically recover until the user manually changes the audio source away from DAB and back again. I’ve experimented with several Expo Audio / AVAudioSession configurations, including releasing the audio session immediately after recording and adjusting audio session options, but the behaviour remains the same. My questions Is this expected behaviour when an iOS app starts microphone recording while connected to a vehicle over Bluetooth? Is there an AVAudioSession configuration that allows brief microphone capture without causing the vehicle to switch audio routes? Is it possible to explicitly use the iPhone’s built-in microphone while remaining connected to the vehicle via Bluetooth? If this behaviour is unavoidable over Bluetooth, is this also expected behaviour for native CarPlay apps, or are different audio routing capabilities available to CarPlay applications? Any guidance or documentation would be greatly appreciated. Thank you.
0
0
89
3d
Best practice for rapid sequential Live Photo captures with AVCapturePhotoOutput?
Hi everyone, I’m working on a camera app as a learning project and have reached a point where I’m trying to better understand the intended architecture for Live Photo capture using AVCapturePhotoOutput. The app currently supports: Live Photos Depth data Location metadata Multiple lens presets on a virtual multi-camera device Everything is working well, but I’m now thinking about capture throughput and rapid shutter presses. Right now, my implementation is fairly conservative. I wait for a Live Photo capture to finish processing and importing before allowing another capture. This is reliable, but it doesn’t feel particularly camera-like when compared to Apple’s Camera app. One observation from field testing caught my attention: I took a Live Photo, immediately switched lenses, then took another Live Photo. When I viewed the first Live Photo later, the movie portion included the lens-switching actions that occurred after I pressed the shutter. That made me realize that I may be thinking about the capture lifecycle incorrectly. My questions are: When using AVCapturePhotoOutput with Live Photos enabled, what is the earliest point at which a capture can be considered “safely secured”? Is it expected that apps wait for PhotoKit import to complete before accepting another Live Photo capture request? If supporting rapid sequential shutter presses, is the recommended approach to queue capture requests and process them one at a time? Are there any best practices around lens changes or camera reconfiguration while a Live Photo is still being captured or processed? I’m not looking for details about the implementation of Apple’s Camera app. I’m mainly trying to understand the recommended approach when working with the public AVFoundation APIs. I’d appreciate any guidance, documentation references, or examples from developers who have worked through similar problems. Thanks!
1
0
195
3d
H.264 MP4 video playback is choppy on iOS 27 Beta 1/2
Environment Device: iPhone (reproducible on multiple devices) OS: iOS 27 Beta 1, Beta 2 Video Format: MP4 (H.264 Main Profile) Playback Method: Apple basic player (HTML5 Video / AVPlayer) Issue We are experiencing video stuttering during playback of a specific MP4 file on iOS 27 Beta 1 and Beta 2. The video plays smoothly on previous iOS versions, but on iOS 27 Beta, playback becomes choppy with noticeable frame drops. Steps to Reproduce Prepare a device running iOS 27 Beta 1 or Beta 2. Open the video URL. https://pdst.mimacstudy.com/daesungmimacfree/CDN/MIMAC/PUBLIC/IPS/2026/P260529018_H.mp4 Start playback. Expected Result The video should play smoothly without visible frame drops. Actual Result The video stutters during playback and appears to drop frames intermittently. Additional Information The issue is consistently reproducible. The affected file is encoded as H.264 Main Profile in an MP4 container. No obvious AVPlayer or system error logs are generated during playback. Has anyone observed similar behavior on iOS 27 Beta, or is there any known change in H.264 decoding behavior that could explain this issue?
2
1
245
6d
CNAssetSpatialAudioInfo / Audio Mix rejects ProRes spatial captures (LPCM FOA) — only HEVC (APAC) is eligible. Intended? And how can Audio Mix coexist with ProRes recording?
On iOS/macOS 26, CNAssetSpatialAudioInfo(asset:) and CNAssetSpatialAudioInfo.assetContainsSpatialAudio(asset:) accept a spatial capture only when its spatial track is APAC-encoded which AVCaptureMovieFileOutput produces when the video codec is HEVC. An otherwise-identical ProRes capture, whose spatial track is LPCM (4-channel First-Order Ambisonics, kAudioChannelLayoutTag_HOA_ACN_SN3D | 4), is rejected with CNCinematicErrorDomain code 3 (CNCinematicErrorCodeIncomplete) "no eligible audio tracks in asset". This reproduces with Apple's own SpatialAudioCLI sample run on Apple's own stock iPhone captures, so it appears to be a property of the format/API rather than my code. I'd like to confirm whether this is intended, and find a supported way to obtain Audio-Mix-eligible spatial audio while still recording ProRes video (we use Apple Log/ProRes for color grading). Respectively, is wiring a manual AVAssetWriter setup the only way to manage spatial audio and ProRes video? Eligibility appears to require an APAC-encoded, exactly-4-channel FOA track. Because AVCaptureMovieFileOutput only writes APAC audio for HEVC (ProRes forces LPCM), ProRes spatial captures are never eligible — including Apple's own ProRes stock captures, which SpatialAudioCLI also rejects. Key finding: eligibility seems baked into the native APAC bitstream Starting from an eligible HEVC/APAC file, I used AVAssetReader/AVAssetWriter to re-encode only the FOA track (APAC → LPCM → APAC), leaving the AAC stereo track, the HEVC video, and the timed-metadata track untouched. The structurally-identical output is then rejected (code 3). Preserving the cinematic-audio metadata track is not sufficient. Re-encoding the APAC itself loses eligibility. This suggests the mix metadata that gates eligibility is carried inside the APAC bitstream and is produced only at capture time. Questions Is it intended that ProRes (LPCM FOA) spatial captures are not Audio-Mix-eligible via CNAssetSpatialAudioInfo, while HEVC (APAC FOA) captures are? Is this documented? Where exactly is the eligibility metadata stored — in the APAC bitstream, or in the cinematic-audio timed-metadata track (Re-encoding the APAC while preserving that metadata track still loses eligibility)? Is there any supported way to make an existing LPCM/ProRes FOA capture eligible after the fact (a transcode/encode path that produces the required APAC), or is native capture the only source? Any guidance, or a pointer to documentation, would be greatly appreciated. Thank you. Environment iPhone 16 Pro Max, iOS 26.x; macOS 26.2; Xcode 26.2.
1
0
194
6d
AirPlay mirroring freezes after switching away from full-screen video in Photos
Hello Apple team, This issue is reproducible with AirPlay mirroring from an iPhone. When a video is played full screen in the Photos app and the user then switches to another app or enters the multitasking flow, the mirrored video output freezes completely on the receiving device. The AirPlay session appears to remain connected, but the receiver keeps displaying the last video frame and the mirrored stream does not recover automatically. Stopping and restarting AirPlay mirroring is required to recover. Environment: Sender: iPhone, iOS [26.5] Receiver: AirPlay receiver device/app The same behavior can also be reproduced when mirroring from iPhone to a Mac Source app: Photos Content: local video played in full screen Steps to reproduce: Start AirPlay mirroring from an iPhone to an AirPlay receiver. Open the Photos app on the iPhone. Play a local video in full screen. While the video is playing, switch to another app or enter the multitasking flow. Observe the mirrored output on the receiver side. Video Recording: https://drive.google.com/file/d/1X9Mj9EB4IYZXjDdCaqrXfgg1PpbhZoUN/view?usp=sharing Expected behavior: AirPlay mirroring should continue smoothly after the app switch, or recover automatically when the source video/app state changes. Actual behavior: The mirrored video freezes completely. The AirPlay connection remains active, but no new video frames are rendered on the receiver side. The stream does not recover until AirPlay mirroring is stopped and restarted. Could Apple confirm whether this is a known AirPlay mirroring issue? Is there any recommended workaround, receiver-side handling, or additional diagnostic information that should be collected for this case?
2
0
220
6d
Logic Pro 12 crashes when AudioUnit takes too long to load
Note: This issue has also been reported using feedback assistant: FB23098465 We observed that with Logic Pro version 12, the Logic Pro application process crashes systematically if an audio unit takes more than 20~30 seconds to initialize. The audio unit is loaded from AUHostingServiceXPC process, which does not crash, only the Logic Pro process crashes. As a plugin developper we are trying to do our best to reduce the Audio Unit initialization duration in order to avoid this crash, but we do think that Logic should not crash in this scenario. The Feedback Assistant report contains detailed information including: the Logic Pro process crashlog A basic test plugin that triggers the crash to help you reproduce the issue detailed analysis of the issue, system profile, ... Since we did not get any answer on feeedback assistant so far, any feedback will be very much appreciated :) Thank you for your help
0
0
103
1w
Does Android MusicKit work offline?
On the MusicKit page it says This library prompts the user to sign in to Apple Music and, if Apple Music isn’t installed on the device, helps the user download it before returning to your app. Does this mean it plays the music through the Apple Music app so it will work offline if the songs have been downloaded in the Apple Music app? I would test this myself, but it's insane that I have to pay $142 AUD for a developer account just to see if it works! Absolutely insane. Hopefully someone else can test it for me.
0
0
84
1w
HomePod OS 27
Hello everyone, I am trying to get my HomePod minis on the OS 27. But it is only showing that I have a public beta of 26.5. Does anyone know how to get OS 27 to show up as an option under Betas in Home App? I am a paid member of the developer program. Any information would be great!
0
1
175
1w
Slow MusicKit library performance in Golden Gate beta 1
Hello friends! Happy WWDC. Thanks very much for all your work on MusicKit this year! I figure I’ll start things off with a bug report (sorry!). I filed a Feedback earlier today that music library operations in MusicKit are significantly slower in macOS Golden Gate beta 1 than in Tahoe. For example, a .with([.tracks]) operation on an Album takes 4-5 seconds rather than the 95ms it did in Tahoe. Sample project, traces, and sysdiagnoses in FB23037115.
2
1
205
1w
Using isCinematicVideoCaptureEnabled on videoDeviceInput for Depth Data Preview
In WWDC26 video "Camera and Photo Technologies Group Lab", @14:17, Brad Ford mentions that we can use isCinematicVideoCaptureEnabled on videoDeviceInput to display depth blur on camera preview, even on a photo camera app. However, when I turn it on for depth mode, the API tells me that it is not supported with the current camera, which is Dual or Dual Wide cameras I use for depth. Since there are no other resources on this, I would love to get some guidance on how to do this. I just want to display depth blur on camera preview, that is it.
1
0
127
1w
Metadata in Video stripped by Share Sheet / Airdrop
I have an application which records video along with some custom metadata and a chapter track. The resultant video is stored in the Camera Roll. When sharing the video via the Share Sheet or AirDrop, the metadata track is stripped entirely (the chapter markers are preserved) Sharing via AirDrop with the "All Photos Data" option does include the metadata track, as does copying from the device with Image Capture but this is a bad user experience as the user must remember to explicitly select this option, and the filename is lost when sending this way. I have also tried various other approaches (such as encoding my metadata in a subtitle track, which I didn't expect to be stripped as it's an accessibility concern) but it's also removed. Essentially I am looking for a definitive list of things that are not stripped or if there's a way to encode a track in some way to indicate it should be preserved. The metadata is added via AVTimedMetadataGroup containing one AVMutableMetadataItem which has its value as a JSON string. I took a different approach with the Chapter Marker track (mainly because I did it first in a completely different way and didn't rework it when I added the other track). I post-process these after the video is recorded, and add them with addMutableTrack and then addTrackAssociation(to: chapterTrack, type: .chapterList) but I don't think that's the reason the chapter track persists where the custom metadata does not as other tests with video files from other sources containing subtitles etc also had their subtitle data stripped. tl;dr I record videos with metadata that I want to be able to share via Share Sheet and AirDrop, what am I doing wrong?
2
0
838
1w
ImmersiveMediaRemotePreviewSender — "supportsMVHEVCEncode=0 / Failed to create ▎ immersive video rules" on M3, despite VTIsStereoMVHEVCEncodeSupported() == true
TLS + connectReceiver connect successfully, but the sender fails to negotiate the immersive video stream: VCVideoRuleCollectionsImmersiveVideoMac initSupportedPayloads: Empty supported payload: supportsMVHEVCEncode=0 Failed to create immersive video rules! AVCMediaStreamNegotiator … Failed to init … for mode=15 hardwareSettingsModeFromFeatureListStringType: Unexpected featureListStringType=0 connectReceiver failed … GKVoiceChatServiceErrorDomain 32032 Host: MacBook Pro M3 (Mac15,3), macOS 26/27. VTIsStereoMVHEVCEncodeSupported() returns true, and I set preferredVideoWidth/Height/FrameRate. Is immersive MV-HEVC encode in this API gated by an entitlement, a specific M-series tier (Pro/Max), or a known beta issue? What populates the "immersive video rules" feature list?
0
0
68
1w
ImmersiveMediaRemotePreviewSender.connectReceiver — what NWParameters / TLS config does it require?
Following the documented ImmersiveMediaSupport flow (NWBrowser → connectReceiver, NWListener → receiver.start(connection:)) with ImmersiveMediaPreviewMessagingProtocol.definition as the framer. Bonjour discovery works, but connectReceiver throws ImmersiveMediaRemotePreviewSession received invalid parameters (sometimes GKVoiceChatServiceErrorDomain 32032). The doc example leaves TLS as /* setup TLS security options */. What exact TLS configuration does the session require — a self-signed SecIdentity, TLS-PSK, a specific cipher/version? And should ImmersiveMediaRemotePreviewSender(networkParameters:) be nil (framework default) while only the NWBrowser/NWListener carry the TLS+framer params? A minimal working setupNWParameters() would unblock me. Thanks!
0
0
74
1w
AVQueuePlayer unexpectedly performs network requests during offline HLS playback after several queued episode transitions
Hello, We are investigating an issue with offline HLS playback using AVQueuePlayer and would like to know whether anyone else has experienced similar behavior. Issue We download HLS content using AVAssetDownloadURLSession and play it offline using AVQueuePlayer. For some titles (but not all), after several consecutive episode transitions, the player unexpectedly attempts a network request while the next episode is already queued and the current episode has approximately 60 seconds remaining. If the device is offline, playback fails with: NSURLErrorDomain Code = -1009 and the next episode never starts. Characteristics The issue only affects certain titles. It is fully reproducible for affected titles. For example, if it occurs between Episodes 5 and 6 after starting playback from Episode 1, it always occurs at the same point when replaying from Episode 1. If playback starts directly from Episode 5, the issue does not occur. The issue only occurs when using AVQueuePlayer. Replacing the current item (removeAllItems() + replaceCurrentItem(with:)) avoids the issue, although this is unfortunately not a viable workaround because it breaks our Picture in Picture episode transition behavior. We compared the downloaded packages (boot.xml, Master Playlist, and Stream configuration) between affected and unaffected titles, but so far have not identified any meaningful structural differences that explain the behavior. Questions Has anyone experienced similar behavior with: offline HLS (.movpkg) AVQueuePlayer unexpected network requests during queued playback NSURLErrorDomain Code=-1009 even though the content is downloaded for offline playback If anyone has seen a similar issue or has any information, observations, or suggestions for further investigation, I would greatly appreciate hearing from you. For reference, I have already submitted this issue through Feedback Assistant. Feedback ID: FB23487817 Thank you in advance for any information.
Replies
1
Boosts
0
Views
23
Activity
3h
AVAudioEngine input tap intermittently delivers all-zero buffers — valid format, no error thrown
We have a long-form audio recording app built on AVAudioEngine. We install a tap on inputNode, accumulate the PCM buffers, and encode them to AAC in ~60-second chunks. Setup is essentially: let session = AVAudioSession.sharedInstance() try session.setCategory(.playAndRecord, mode: .default, options: [.defaultToSpeaker, .allowBluetooth, .allowBluetoothA2DP]) try session.setActive(true) let engine = AVAudioEngine() let input = engine.inputNode let format = input.inputFormat(forBus: 0) // valid, e.g. 48 kHz, 1 ch input.installTap(onBus: 0, bufferSize: 1024, format: format) { buffer, _ in // In the failure case, buffer.floatChannelData is entirely 0.0 // (accumulate + encode to AAC) } engine.prepare() try engine.start() Intermittently — and so far only reported from the field, never reproduced in normal testing — a recording comes out completely silent. When we decode the resulting AAC and inspect the raw PCM, every sample is exactly 0.0. The signature is very specific: The engine is running and the tap keeps firing for the full duration (normal number of buffers / full-length chunks). inputFormat is valid (sampleRate ≠ 0, e.g. 48 kHz). No error is thrown anywhere — setCategory, setActive, start(), and the tap callback all succeed. The PCM is literally all zeros (not low-level noise / room tone — exact 0.0). Two separate silent recordings decode to byte-identical AAC, confirming pure digital silence rather than corruption. So as far as our error handling, format checks, and tap-liveness are concerned, everything looks healthy — yet the microphone is delivering pure silence. One way we can reproduce it: recording while the iPhone is being driven via macOS iPhone Mirroring (the iPhone stays locked, the mic is effectively unavailable from the device, but our session still activates with a valid format and the tap fires zero-filled buffers for the whole recording — with no error at any point). What we've ruled out: microphone permission is granted; it's not truncation or short capture (full-length, full frame count); it's not our encoding step (the input buffers themselves are zero); it's not a quiet/obstructed mic (that would be low noise, not exact 0.0). Questions: What other device states or scenarios can cause a running AVAudioEngine input tap to deliver all-zero buffers with a valid format and no error? (e.g. another process/system feature holding the mic, Continuity Camera/Mic, CallKit/PushToTalk session ownership, etc.) Since this surfaces with no error and a valid format, what is the recommended way to detect it at runtime? Is monitoring the input level / PCM energy the only signal, or is there a supported API to know the input isn't actually live? What's the recommended recovery once detected — is a full session deactivate/reactivate re-handshake sufficient, or is recreating the engine required?
Replies
1
Boosts
0
Views
16
Activity
4h
How can i revoke/delete Fairplay Certificates
All the FPS certificates created are wrong and the limit has reached, how can i revoke / delete the certificates. I can't even retrieve the ASK string
Replies
0
Boosts
0
Views
16
Activity
7h
AUv3 extension icon cannot be resolved on one iPad across all host applications
I am developing an iOS/iPadOS application containing an AUv3 Audio Unit extension. The standalone application icon displays correctly on the affected iPad. However, the AUv3 extension icon is not displayed correctly by any tested host on that device: AUM displays a red-X placeholder icon. Cubasis displays a small generic Swift-style placeholder icon. apeMatrix displays a generic AUv3 placeholder icon. The same TestFlight build displays the correct AUv3 icon on another iPad, and the icon also displays correctly on my iPhone. This therefore appears to be device-specific AUv3 extension icon registration or resolution failure rather than missing icon artwork in the submitted application. Troubleshooting already performed: Deleted and reinstalled the application. Deleted and reinstalled host applications. Restarted the iPad. Installed both local development and TestFlight builds. Confirmed the AUv3 extension contains its compiled asset catalog and icon metadata. Renamed the primary icon set from AppIcon to AppIconV2 and verified that both generated bundles used AppIconV2. Temporarily changed the AudioComponent subtype from Vped to Vpe2 and verified the generated extension plist contained Vpe2. Installed the newly identified component successfully. The AUv3 icon still failed in every tested host. The unchanged TestFlight build displays correctly on another iPad. Expected result: The AUv3 extension icon should display consistently in host applications, as it does on the comparison iPad and iPhone. Actual result: Every host on the affected iPad receives or displays a fallback placeholder instead of the AUv3 extension icon. TLDR - The key questions: Is there is a supported way to rebuild or clear the iPadOS AUv3 extension registration database without erasing the device? Is there any useful information available on Audio Unit extension registration, LaunchServices/icon-services database, or related iPadOS component-icon resolution on an affected device? Thanks.
Replies
1
Boosts
0
Views
203
Activity
20h
Channel Mapping with AUHAL
Hi, our Mac app uses AUHAL for audio output. The data we’re playing has channels laid out in the WAVE default ordering (this is the same order as Core Audio’s AudioChannelBitmap). Playing this data usually results in the correct channel playing through the correct speaker, but there are cases where it does not: Outputting audio over HDMI usually results in the Center and LFE channels being swapped Or “Configure Speakers” in Audio MIDI Setup.app can be used to change the speaker<->channel mapping (i.e. even swapping L/R on a 2ch stereo setup), but this does not affect our app’s audio I’ve found that getting kAudioUnitProperty_AudioChannelLayout on an output unit returns the speaker<->channel mapping as set up in Audio MIDI Setup (i.e. it shows that Center/LFE swap, or if L/R are swapped). My question: is it possible to have Core Audio do the channel remapping between the WAVE default ordering, and the speaker<->channel mapping as returned by kAudioUnitProperty_AudioChannelLayout? I have tried setting kAudioUnitProperty_AudioChannelLayout on the input unit, and didn’t see a change. I’ve also tried to set kAudioOutputUnitProperty_ChannelMap on the output unit but cannot get it to work. Or do I need to remap the channels myself before giving samples to Core Audio?
Replies
6
Boosts
0
Views
332
Activity
3d
AVAudioSession microphone recording changes Bluetooth audio route in vehicle
Title AVAudioSession microphone recording changes Bluetooth audio route in vehicle Hi everyone, I’m developing an iOS app called HearSave to help drivers safely remember and save songs they hear while driving. The app performs a very simple task: the user presses a button, the app records a short audio sample for music recognition, then immediately stops recording. I’m trying to understand whether the behaviour I’m seeing is an expected limitation of iOS audio routing or whether there is a better AVAudioSession configuration. Test setup iPhone connected to a vehicle via Bluetooth. Vehicle playing DAB radio. App requests microphone access and starts recording. Recording lasts approximately 7 seconds. Behaviour observed As soon as recording begins: The vehicle changes into a voice-call style audio route. DAB audio becomes muted. The vehicle’s volume control changes to voice volume. When recording finishes, the radio does not automatically recover until the user manually changes the audio source away from DAB and back again. I’ve experimented with several Expo Audio / AVAudioSession configurations, including releasing the audio session immediately after recording and adjusting audio session options, but the behaviour remains the same. My questions Is this expected behaviour when an iOS app starts microphone recording while connected to a vehicle over Bluetooth? Is there an AVAudioSession configuration that allows brief microphone capture without causing the vehicle to switch audio routes? Is it possible to explicitly use the iPhone’s built-in microphone while remaining connected to the vehicle via Bluetooth? If this behaviour is unavoidable over Bluetooth, is this also expected behaviour for native CarPlay apps, or are different audio routing capabilities available to CarPlay applications? Any guidance or documentation would be greatly appreciated. Thank you.
Replies
0
Boosts
0
Views
89
Activity
3d
Best practice for rapid sequential Live Photo captures with AVCapturePhotoOutput?
Hi everyone, I’m working on a camera app as a learning project and have reached a point where I’m trying to better understand the intended architecture for Live Photo capture using AVCapturePhotoOutput. The app currently supports: Live Photos Depth data Location metadata Multiple lens presets on a virtual multi-camera device Everything is working well, but I’m now thinking about capture throughput and rapid shutter presses. Right now, my implementation is fairly conservative. I wait for a Live Photo capture to finish processing and importing before allowing another capture. This is reliable, but it doesn’t feel particularly camera-like when compared to Apple’s Camera app. One observation from field testing caught my attention: I took a Live Photo, immediately switched lenses, then took another Live Photo. When I viewed the first Live Photo later, the movie portion included the lens-switching actions that occurred after I pressed the shutter. That made me realize that I may be thinking about the capture lifecycle incorrectly. My questions are: When using AVCapturePhotoOutput with Live Photos enabled, what is the earliest point at which a capture can be considered “safely secured”? Is it expected that apps wait for PhotoKit import to complete before accepting another Live Photo capture request? If supporting rapid sequential shutter presses, is the recommended approach to queue capture requests and process them one at a time? Are there any best practices around lens changes or camera reconfiguration while a Live Photo is still being captured or processed? I’m not looking for details about the implementation of Apple’s Camera app. I’m mainly trying to understand the recommended approach when working with the public AVFoundation APIs. I’d appreciate any guidance, documentation references, or examples from developers who have worked through similar problems. Thanks!
Replies
1
Boosts
0
Views
195
Activity
3d
H.264 MP4 video playback is choppy on iOS 27 Beta 1/2
Environment Device: iPhone (reproducible on multiple devices) OS: iOS 27 Beta 1, Beta 2 Video Format: MP4 (H.264 Main Profile) Playback Method: Apple basic player (HTML5 Video / AVPlayer) Issue We are experiencing video stuttering during playback of a specific MP4 file on iOS 27 Beta 1 and Beta 2. The video plays smoothly on previous iOS versions, but on iOS 27 Beta, playback becomes choppy with noticeable frame drops. Steps to Reproduce Prepare a device running iOS 27 Beta 1 or Beta 2. Open the video URL. https://pdst.mimacstudy.com/daesungmimacfree/CDN/MIMAC/PUBLIC/IPS/2026/P260529018_H.mp4 Start playback. Expected Result The video should play smoothly without visible frame drops. Actual Result The video stutters during playback and appears to drop frames intermittently. Additional Information The issue is consistently reproducible. The affected file is encoded as H.264 Main Profile in an MP4 container. No obvious AVPlayer or system error logs are generated during playback. Has anyone observed similar behavior on iOS 27 Beta, or is there any known change in H.264 decoding behavior that could explain this issue?
Replies
2
Boosts
1
Views
245
Activity
6d
CNAssetSpatialAudioInfo / Audio Mix rejects ProRes spatial captures (LPCM FOA) — only HEVC (APAC) is eligible. Intended? And how can Audio Mix coexist with ProRes recording?
On iOS/macOS 26, CNAssetSpatialAudioInfo(asset:) and CNAssetSpatialAudioInfo.assetContainsSpatialAudio(asset:) accept a spatial capture only when its spatial track is APAC-encoded which AVCaptureMovieFileOutput produces when the video codec is HEVC. An otherwise-identical ProRes capture, whose spatial track is LPCM (4-channel First-Order Ambisonics, kAudioChannelLayoutTag_HOA_ACN_SN3D | 4), is rejected with CNCinematicErrorDomain code 3 (CNCinematicErrorCodeIncomplete) "no eligible audio tracks in asset". This reproduces with Apple's own SpatialAudioCLI sample run on Apple's own stock iPhone captures, so it appears to be a property of the format/API rather than my code. I'd like to confirm whether this is intended, and find a supported way to obtain Audio-Mix-eligible spatial audio while still recording ProRes video (we use Apple Log/ProRes for color grading). Respectively, is wiring a manual AVAssetWriter setup the only way to manage spatial audio and ProRes video? Eligibility appears to require an APAC-encoded, exactly-4-channel FOA track. Because AVCaptureMovieFileOutput only writes APAC audio for HEVC (ProRes forces LPCM), ProRes spatial captures are never eligible — including Apple's own ProRes stock captures, which SpatialAudioCLI also rejects. Key finding: eligibility seems baked into the native APAC bitstream Starting from an eligible HEVC/APAC file, I used AVAssetReader/AVAssetWriter to re-encode only the FOA track (APAC → LPCM → APAC), leaving the AAC stereo track, the HEVC video, and the timed-metadata track untouched. The structurally-identical output is then rejected (code 3). Preserving the cinematic-audio metadata track is not sufficient. Re-encoding the APAC itself loses eligibility. This suggests the mix metadata that gates eligibility is carried inside the APAC bitstream and is produced only at capture time. Questions Is it intended that ProRes (LPCM FOA) spatial captures are not Audio-Mix-eligible via CNAssetSpatialAudioInfo, while HEVC (APAC FOA) captures are? Is this documented? Where exactly is the eligibility metadata stored — in the APAC bitstream, or in the cinematic-audio timed-metadata track (Re-encoding the APAC while preserving that metadata track still loses eligibility)? Is there any supported way to make an existing LPCM/ProRes FOA capture eligible after the fact (a transcode/encode path that produces the required APAC), or is native capture the only source? Any guidance, or a pointer to documentation, would be greatly appreciated. Thank you. Environment iPhone 16 Pro Max, iOS 26.x; macOS 26.2; Xcode 26.2.
Replies
1
Boosts
0
Views
194
Activity
6d
Phonetic pronunciations are broken in iOS 27 beta 1
Playing the same IPA pronunciations using AVSpeechSynthesisIPANotationAttribute on iOS 26.5 and iOS 27.0 beta 1 yield very different results. It appears as if iOS is ignoring the IPA symbols. FB23041286 Sample app is here: https://github.com/ryanlintott/SpeechSynthesisIPAExample
Replies
1
Boosts
0
Views
82
Activity
6d
AirPlay mirroring freezes after switching away from full-screen video in Photos
Hello Apple team, This issue is reproducible with AirPlay mirroring from an iPhone. When a video is played full screen in the Photos app and the user then switches to another app or enters the multitasking flow, the mirrored video output freezes completely on the receiving device. The AirPlay session appears to remain connected, but the receiver keeps displaying the last video frame and the mirrored stream does not recover automatically. Stopping and restarting AirPlay mirroring is required to recover. Environment: Sender: iPhone, iOS [26.5] Receiver: AirPlay receiver device/app The same behavior can also be reproduced when mirroring from iPhone to a Mac Source app: Photos Content: local video played in full screen Steps to reproduce: Start AirPlay mirroring from an iPhone to an AirPlay receiver. Open the Photos app on the iPhone. Play a local video in full screen. While the video is playing, switch to another app or enter the multitasking flow. Observe the mirrored output on the receiver side. Video Recording: https://drive.google.com/file/d/1X9Mj9EB4IYZXjDdCaqrXfgg1PpbhZoUN/view?usp=sharing Expected behavior: AirPlay mirroring should continue smoothly after the app switch, or recover automatically when the source video/app state changes. Actual behavior: The mirrored video freezes completely. The AirPlay connection remains active, but no new video frames are rendered on the receiver side. The stream does not recover until AirPlay mirroring is stopped and restarted. Could Apple confirm whether this is a known AirPlay mirroring issue? Is there any recommended workaround, receiver-side handling, or additional diagnostic information that should be collected for this case?
Replies
2
Boosts
0
Views
220
Activity
6d
Logic Pro 12 crashes when AudioUnit takes too long to load
Note: This issue has also been reported using feedback assistant: FB23098465 We observed that with Logic Pro version 12, the Logic Pro application process crashes systematically if an audio unit takes more than 20~30 seconds to initialize. The audio unit is loaded from AUHostingServiceXPC process, which does not crash, only the Logic Pro process crashes. As a plugin developper we are trying to do our best to reduce the Audio Unit initialization duration in order to avoid this crash, but we do think that Logic should not crash in this scenario. The Feedback Assistant report contains detailed information including: the Logic Pro process crashlog A basic test plugin that triggers the crash to help you reproduce the issue detailed analysis of the issue, system profile, ... Since we did not get any answer on feeedback assistant so far, any feedback will be very much appreciated :) Thank you for your help
Replies
0
Boosts
0
Views
103
Activity
1w
Does Android MusicKit work offline?
On the MusicKit page it says This library prompts the user to sign in to Apple Music and, if Apple Music isn’t installed on the device, helps the user download it before returning to your app. Does this mean it plays the music through the Apple Music app so it will work offline if the songs have been downloaded in the Apple Music app? I would test this myself, but it's insane that I have to pay $142 AUD for a developer account just to see if it works! Absolutely insane. Hopefully someone else can test it for me.
Replies
0
Boosts
0
Views
84
Activity
1w
HomePod OS 27
Hello everyone, I am trying to get my HomePod minis on the OS 27. But it is only showing that I have a public beta of 26.5. Does anyone know how to get OS 27 to show up as an option under Betas in Home App? I am a paid member of the developer program. Any information would be great!
Replies
0
Boosts
1
Views
175
Activity
1w
Slow MusicKit library performance in Golden Gate beta 1
Hello friends! Happy WWDC. Thanks very much for all your work on MusicKit this year! I figure I’ll start things off with a bug report (sorry!). I filed a Feedback earlier today that music library operations in MusicKit are significantly slower in macOS Golden Gate beta 1 than in Tahoe. For example, a .with([.tracks]) operation on an Album takes 4-5 seconds rather than the 95ms it did in Tahoe. Sample project, traces, and sysdiagnoses in FB23037115.
Replies
2
Boosts
1
Views
205
Activity
1w
Using isCinematicVideoCaptureEnabled on videoDeviceInput for Depth Data Preview
In WWDC26 video "Camera and Photo Technologies Group Lab", @14:17, Brad Ford mentions that we can use isCinematicVideoCaptureEnabled on videoDeviceInput to display depth blur on camera preview, even on a photo camera app. However, when I turn it on for depth mode, the API tells me that it is not supported with the current camera, which is Dual or Dual Wide cameras I use for depth. Since there are no other resources on this, I would love to get some guidance on how to do this. I just want to display depth blur on camera preview, that is it.
Replies
1
Boosts
0
Views
127
Activity
1w
Metadata in Video stripped by Share Sheet / Airdrop
I have an application which records video along with some custom metadata and a chapter track. The resultant video is stored in the Camera Roll. When sharing the video via the Share Sheet or AirDrop, the metadata track is stripped entirely (the chapter markers are preserved) Sharing via AirDrop with the "All Photos Data" option does include the metadata track, as does copying from the device with Image Capture but this is a bad user experience as the user must remember to explicitly select this option, and the filename is lost when sending this way. I have also tried various other approaches (such as encoding my metadata in a subtitle track, which I didn't expect to be stripped as it's an accessibility concern) but it's also removed. Essentially I am looking for a definitive list of things that are not stripped or if there's a way to encode a track in some way to indicate it should be preserved. The metadata is added via AVTimedMetadataGroup containing one AVMutableMetadataItem which has its value as a JSON string. I took a different approach with the Chapter Marker track (mainly because I did it first in a completely different way and didn't rework it when I added the other track). I post-process these after the video is recorded, and add them with addMutableTrack and then addTrackAssociation(to: chapterTrack, type: .chapterList) but I don't think that's the reason the chapter track persists where the custom metadata does not as other tests with video files from other sources containing subtitles etc also had their subtitle data stripped. tl;dr I record videos with metadata that I want to be able to share via Share Sheet and AirDrop, what am I doing wrong?
Replies
2
Boosts
0
Views
838
Activity
1w
ImmersiveMediaRemotePreviewSender — "supportsMVHEVCEncode=0 / Failed to create ▎ immersive video rules" on M3, despite VTIsStereoMVHEVCEncodeSupported() == true
TLS + connectReceiver connect successfully, but the sender fails to negotiate the immersive video stream: VCVideoRuleCollectionsImmersiveVideoMac initSupportedPayloads: Empty supported payload: supportsMVHEVCEncode=0 Failed to create immersive video rules! AVCMediaStreamNegotiator … Failed to init … for mode=15 hardwareSettingsModeFromFeatureListStringType: Unexpected featureListStringType=0 connectReceiver failed … GKVoiceChatServiceErrorDomain 32032 Host: MacBook Pro M3 (Mac15,3), macOS 26/27. VTIsStereoMVHEVCEncodeSupported() returns true, and I set preferredVideoWidth/Height/FrameRate. Is immersive MV-HEVC encode in this API gated by an entitlement, a specific M-series tier (Pro/Max), or a known beta issue? What populates the "immersive video rules" feature list?
Replies
0
Boosts
0
Views
68
Activity
1w
ImmersiveMediaRemotePreviewSender.connectReceiver — what NWParameters / TLS config does it require?
Following the documented ImmersiveMediaSupport flow (NWBrowser → connectReceiver, NWListener → receiver.start(connection:)) with ImmersiveMediaPreviewMessagingProtocol.definition as the framer. Bonjour discovery works, but connectReceiver throws ImmersiveMediaRemotePreviewSession received invalid parameters (sometimes GKVoiceChatServiceErrorDomain 32032). The doc example leaves TLS as /* setup TLS security options */. What exact TLS configuration does the session require — a self-signed SecIdentity, TLS-PSK, a specific cipher/version? And should ImmersiveMediaRemotePreviewSender(networkParameters:) be nil (framework default) while only the NWBrowser/NWListener carry the TLS+framer params? A minimal working setupNWParameters() would unblock me. Thanks!
Replies
0
Boosts
0
Views
74
Activity
1w
AVPictureInPictureController doesn't work with AVSampleBufferDisplayLayer on tvOS
When we try to use AVPictureInPictureController with a AVSampleBufferDisplayLayer on tvOS 15 through tvOS 26 isPictureInPicturePossible never becomes true. The code works great on iOS, but it has never worked on tvOS. You can check this out for a repro: https://github.com/jazzychad/PiPBugDemo Feedbacks: FB9751461, FB14158567, FB14037110 DTS Case: 7999337
Replies
7
Boosts
1
Views
397
Activity
1w