---
title: 画面収録を実装したけど音声がおかしい……原因不明の現象をどう切り分けたか
tags:  #replaykit #screencapturekit #screenrecording #iosdc #iosdc2026  
author: [Takahiro Suzuki](https://image.docswell.com/user/sussan0416)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/L73W4KLD75.jpg?width=480
description: これは「iOSDC Japan 2026」のday2 LT大会で発表したスライドです。 https://fortee.jp/iosdc-japan-2026/proposal/ca27d9c4-145f-45ab-bb45-0a210f0ab2c9  ReplayKitを使って画面収録機能を実装したものの、収録されたアプリ音声がぶちぶちとしたノイズが記録される現象がありました。しかも、ノイズというよりは、再生される音声のスピードだけが、極端に遅く、ちぎれたような症状です。このLTでは、原因の掴みにくいノイズ現象に対して、どのように対応したか、調査したポイントを共有します。 深く調査をしていくと、どうやらシステムから届くアプリ音声の再生タイミングの情報が、映像のタイミング情報とは極端に乖離していく場合があることが判明しました。また、他の画面収録系のアプリや、ゲームのプレイ動画を録画する機能でも似た症状がありました。 この件について、「フィードバックアシスタント」を通してAppleにも共有。LTでは、この現象に対してどのように切り分けを進め、原因を探っていったのか、その調査過程を紹介します。
published: September 13, 26
canonical: https://image.docswell.com/s/sussan0416/ZL3RQ3-screen-recording-bug
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/L73W4KLD75.jpg)

画面収録を実装したけど
音声がおかしい……
原因不明の現象をどう切り分けたか
sussan（鈴木孝宏/sussan0416）, 2026-09-13, iOSDC 2026


# Page. 2

![Page Image](https://bcdn.docswell.com/page/87DKQ3N2JG.jpg)

sussan（ 鈴木孝宏/ @sussan0416 ）
株式会社Helpfeel プロダクトエンジニア
スクリーンショット共有ツール「Gyazo」の開発


# Page. 3

![Page Image](https://bcdn.docswell.com/page/VJPKL45LE8.jpg)

正常な音声の画面収録


# Page. 4

![Page Image](https://bcdn.docswell.com/page/2EVVQXP6EQ.jpg)

異常な音声の画面収録


# Page. 5

![Page Image](https://bcdn.docswell.com/page/57GLWVP2EL.jpg)

症状の概要
• 映像は正常
• 音声がぶちぶちと切れてゆっくり
• 収録開始時に無音だと発生


# Page. 6

![Page Image](https://bcdn.docswell.com/page/4EQY3629JP.jpg)

画面収録機能の構成
BroadcastUploadExtension
AVAssetWriterInput
App
RPBroadcastSampleHandler
processSampleBuffer(_:with:)
video
AVAssetWriter
MP4
AVAssetWriterInput
audioApp
CMSampleBuffer
iOS/ReplayKit
.video
.audioApp
• シンプルな構成
• Xcodeにそれらしきエラーなし
➡ 末端から調べていくしかない


# Page. 7

![Page Image](https://bcdn.docswell.com/page/KJ4W14PR71.jpg)

画面収録機能の構成
BroadcastUploadExtension
動画がおかしい？
AVAssetWriterInput
App
RPBroadcastSampleHandler
processSampleBuffer(_:with:)
video
AVAssetWriter
AVAssetWriterInput
audioApp
CMSampleBuffer
iOS/ReplayKit
.video
.audioApp
MP4


# Page. 8

![Page Image](https://bcdn.docswell.com/page/LE1YG49V7G.jpg)

ff
画面収録機能の構成
• probe(FFmpeg)で、動画ファイルをチェック
• 正常時、異常時ともに、ファイル自体は問題なさそう…
BroadcastUploadExtension
$ ffprobe audio_normal_3.mp4
...
App
RPBroadcastSampleHandler
AVAssetWriterInput
←正常な音声
video
AVAssetWriter
processSampleBuffer(_:with:)
Stream #0:1[0x2](und): Audio: aac (LC) (mp4a
/ 0x6134706D),
AVAssetWriterInput
44100 Hz, stereo, fltp, 139 kb/s, start 0.021587
(default)
audioApp
$ ffprobe audio_collapsed_3.mp4
...
←異常な音声
CMSampleBuffer
Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D),
iOS/ReplayKit
44100 Hz, stereo, fltp, 123 kb/s (default)
.video
動画がおかしい？
.audioApp
MP4


# Page. 9

![Page Image](https://bcdn.docswell.com/page/GEWGKXQ3J2.jpg)

画面収録機能の構成
実装がおかしい？
BroadcastUploadExtension
AVAssetWriterInput
App
RPBroadcastSampleHandler
processSampleBuffer(_:with:)
video
AVAssetWriter
AVAssetWriterInput
audioApp
CMSampleBuffer
iOS/ReplayKit
.video
.audioApp
MP4


# Page. 10

![Page Image](https://bcdn.docswell.com/page/47ZLZ6WGJ3.jpg)

画面収録機能の構成
• 仮説を立てて変更を繰り返すも、改善せず…
BroadcastUploadExtension
仮説 / 検証
実装がおかしい？
結果
AVAssetWriterInput
AVAssetWriterInputの設定とSampleBu erのズレが原因？
x（差がない）
video
RPBroadcastSampleHandler
App
processSampleBuffer(_:with:)
最初のSampleBu erを元に、AVAssetWriterInputを設定する
AVAssetWriter
x（改善せず）
AVAssetWriterInput
audioApp
AVAssetWriterInput.isReadyForMoreMediaDataが、falseになっている？
x（falseになることがない）
SampleBu erをリングバッファを経由して書き込む
CMSampleBuffer
x（改善せず）
iOS/ReplayKit
AVAssetWriterInput.append(sampleBu er)に失敗している？
x（失敗していない）
.video
ff
ff
ff
ff
ff
SampleBu erのPTSが飛んでいる？
.audioApp
x（飛んでいない）
MP4


# Page. 11

![Page Image](https://bcdn.docswell.com/page/YJ6WZ2GQJV.jpg)

画面収録機能の構成
BroadcastUploadExtension
AVAssetWriterInput
App
RPBroadcastSampleHandler
processSampleBuffer(_:with:)
video
AVAssetWriter
AVAssetWriterInput
audioApp
受け取るバッファが
おかしい？
CMSampleBuffer
iOS/ReplayKit
.video
.audioApp
MP4


# Page. 12

![Page Image](https://bcdn.docswell.com/page/GJ5MW2V2J4.jpg)

PTS(音声のバッファを再生するタイミング)の値に異常があった
録画開始から3秒
→ 3秒分の音声でOK
録画開始から4秒
→ 約15秒分の音声として記録
正常時は、音声のPTSが実時間とほぼ一致
異常時は、音声のPTSが実時間よりも高速に増加
→ 再生時に、映像と音声が同期する
→ 再生時に、音声だけがゆっくりになる


# Page. 13

![Page Image](https://bcdn.docswell.com/page/9E29Q4317R.jpg)

末端側から調査して原因を切り分け
• 原因は、システムから受け取る
CMSampleBu erの異常なPTS
• 実装側で回避するのは困難
• PTSの付け直しなども試行したが
困難
• 他の画面収録アプリや
ゲームのプレイ録画機能でも発生
ff
（似た機能を持つ他のアプリを見るのも大事）


# Page. 14

![Page Image](https://bcdn.docswell.com/page/D7Y4WM14EM.jpg)

• 「フィードバックアシスタント」で
症状と再現方法を報告
• 1回返信あり、
追加の診断ログを共有
• 担当者には届いたはず！
引き続き待ちます…！
（2026年5月に報告したフィードバックのタイトル部分）
※「フィードバックアシスタント」の使用許諾契約を読むと、自分が送信した内容については公開しても大丈夫そうだった


# Page. 15

![Page Image](https://bcdn.docswell.com/page/VENY9W26J8.jpg)

• 私たちが利用できる他のリソース
• Appleのエンジニアとつながること
ができる場所
出典: Apple Developer Forums
https://developer.apple.com/jp/support/forums/


# Page. 16

![Page Image](https://bcdn.docswell.com/page/Y79P2X1RE3.jpg)

出典: Apple Developer Forums
https://developer.apple.com/jp/support/forums/
フィードバックアシスタントで報告 → フォーラムで議論
の順序らしい


# Page. 17

![Page Image](https://bcdn.docswell.com/page/G78D524G7D.jpg)

• ReplayKitのAPIの多くは、iOS 27
でDeprecateに。
出典: Apple Developer Documentation
https://developer.apple.com/documentation/replaykit/
rpscreenrecorder


# Page. 18

![Page Image](https://bcdn.docswell.com/page/L7LMY26XJR.jpg)

出典: Apple Developer Documentation
https://developer.apple.com/documentation/replaykit/rpscreenrecorder
ScreenCaptureKitを使うよう案内されている。


# Page. 19

![Page Image](https://bcdn.docswell.com/page/4EMYN853EW.jpg)

• RPBroadcastSampleHandlerも、
もちろんDeprecate。
出典: Apple Developer Documentation
https://developer.apple.com/documentation/replaykit/
rpbroadcastsamplehandler


# Page. 20

![Page Image](https://bcdn.docswell.com/page/PER9D53RJ9.jpg)

出典: Apple Developer Documentation
https://developer.apple.com/documentation/replaykit/rpbroadcastsamplehandler
「No longer supported」と記載されている…
画面収録の時代が移り変わっていく…


# Page. 21

![Page Image](https://bcdn.docswell.com/page/P7XQ1K4YEX.jpg)

ReplayKit
ありがとう!


