Skip to content

Record the stream to Files › Sill Recordings (#284) - #303

Open
addhumal wants to merge 1 commit into
Saffsanity:mainfrom
addhumal:stream-recording
Open

addhumal wants to merge 1 commit into
Saffsanity:mainfrom
addhumal:stream-recording

Conversation

@addhumal

@addhumal addhumal commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Closes #284. The stream can now be recorded on the device, with the Mac's sound, into Files › On My iPhone/iPad › Sill › Sill Recordings.

How it works

  • Start and stop. Settings, after Send Audio, has Record Sound and Start Recording. The panel closes, a 3, 2, 1 count shows over the picture, then a red light with the elapsed time. Stop Recording is in the same place. The session ending, or Sill going to the background, finishes the movie (with a background task), and a note says "Saved to Files › Sill Recordings."
  • The picture, never re-encoded. The HEVC frames the device receives go into a QuickTime movie as they came (AVAssetWriter passthrough), timed by when they arrived. It's the stream's own quality, without Sill's UI.
  • The sound. With Record Sound and Send Audio on, the Mac's sound is recorded as this device plays it, also while muted. It's encoded to AAC, which plays everywhere, where AAC-ELD may not.
  • Each movie starts at a keyframe the device asks the Mac for (kind 44). A rotation, an Aa step or another window changes the stream's size, so the movie closes and the next one starts at the following keyframe, named with a number.
  • Files: UIFileSharingEnabled and LSSupportsOpeningDocumentsInPlace. Sill keeps nothing else in Documents, so nothing else becomes visible.
  • Unchanged: no wire change, nothing on the Mac. DEBUG: -SillRecordFor S.

Problems found, and how they were fixed

  • Silence while muted. The sound was handed to the speaker's engine only while it ran, so a muted device would have recorded silence. The tap now sits before that check.
  • UTC in the name. Files were first named by UTC (2026-11-03T154151). They're now named by the device's own clock, as Screenshots are.
  • Files exposure. Turning on Files sharing exposes the whole Documents folder. Sill had nothing else there, which I checked before turning it on.

Checks

  • The three iOS builds: Debug and Release for the simulator, Debug for a device.
  • On a private iPad Pro 13" simulator (iOS 27.0, deleted after) against a synthetic loopback host with --audio and -SillRecordFor 6: a 5.90 s movie, video hvc1 1512×948, sound aac, the light over the picture.

Not done: the issue's size display and low-space warning, and the Mac's menu saying a device records, which needs an additive wire field; both are follow-ups. Not checked: a real device's Files app, a long recording's size, a recording across a resize (the next part's start), the background finish on a device.

@Saffsanity: on the iPad, Settings › Start Recording, stream for a minute, Stop. Then Files › On My iPad › Sill › Sill Recordings: the movie plays, with sound.

- StreamRecorder: the HEVC frames the device receives written as they came
  (never re-encoded, AVAssetWriter passthrough, timed by their arrival) into
  a QuickTime movie in Files › On My iPhone (iPad) › Sill › Sill Recordings,
  named by this device's clock; with Record Sound and Send Audio on, the
  Mac's sound as it is played (also while muted) encoded to AAC, which plays
  everywhere (AAC-ELD may not). Each movie starts at a keyframe the device
  asks the Mac for (kind 44); a new size (a rotation, an Aa step, another
  window) closes it and the next starts at the keyframe after.
- Settings, after Send Audio: Record Sound and Start Recording (the panel
  closes, a 3, 2, 1 count over the picture, then a red light with the time);
  Stop Recording there. The session's end and Sill going to the background
  finish the movie (a background task). "Saved to Files › Sill Recordings."
- Info.plist: UIFileSharingEnabled and LSSupportsOpeningDocumentsInPlace
  (Sill keeps nothing else in Documents).
- DEBUG: -SillRecordFor S.

Checks: the three iOS builds; on a private iPad Pro 13" simulator (iOS
27.0, deleted after) against a synthetic loopback host with --audio,
-SillRecordFor 6: a 5.90 s movie, video hvc1 1512×948, sound aac, the
light over the picture.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Record the stream to a movie, with the Mac's sound, into Files › Sill Recordings

1 participant