Contents 非表示
1. はじめに
1.1 AVFoundationとは?
AVFoundation = iOSで映像・音声を操りたいときに最強なツール。
Apple純正の超強力なメディアフレームワーク。
具体的にできること:
- 🎥 動画再生(AVPlayerとか)
- 🎙 音声の再生・録音(AVAudioPlayer / AVAudioEngine)
- 📸 カメラ・マイクでの録画・録音(AVCaptureSession)
- 🛠 メディア編集・処理(AVAssetWriter / Reader)
1.2 この記事でできるようになること、対象読者
できるようになること:
- ✅ AVPlayerでHLS動画をスマートに再生できる
- ✅ AVCaptureで録画・録音がサクッとできる
- ✅ AVFoundation特有のバグ地獄を事前に回避
- ✅ 実務でも使える再生UIやTipsをマスター
- ✅ SwiftUIとの組み合わせもできる
対象読者:
対象読者(初心者〜中級者)
- AVFoundationって名前だけ聞いたことあるレベル
- AVPlayerで動画流したけど、シークとかKVOで詰まった人
- 実務でカメラ使ったけど、バグ処理が辛かった人
- SwiftUIでAVFoundationをうまく扱いたい人
コードもできるだけシンプル & 最小構成で作成、
「まだなんとなくでしか理解できてないかも」って人でも安心してOK。
* 読者に男子中学生はいないと思いますが、AV = Audio Visual
なので変に期待しないでください。
2. AVFoundationの全体像
AVFoundation = 使いこなせれば最強
だけど最初は「何から手をつけていいかわからん」ってなるやつ。
なのでまずは、全体の構造をマッピングしてみる。
2.1 映像系 → AVPlayer
/ AVPlayerItem
/ AVAsset
動画の再生で使うのがこいつら:
- AVAsset: メディアファイルの**情報(メタデータやトラック)**を表す土台。URLベースで初期化。
- AVPlayerItem: AVAssetを再生用の部品に変換したもの。再生時間やバッファの状態もここに集約されてる。
- AVPlayer: プレイヤー本体。こいつが再生・停止・シークを司る。
AVAsset → AVPlayerItem → AVPlayer
の流れ
2.2 音声系 → AVAudioPlayer
/ AVAudioEngine
音を鳴らす or 自由に操るならこいつら:
- AVAudioPlayer: シンプルに音声ファイル(.mp3, .m4aなど)を再生するだけならこれ。再生・停止・ループが楽。
- AVAudioEngine: 音をもっと自由にいじりたい(ミキシング、エフェクト、リアルタイム処理)ならこれ。(設定は少し複雑)
ポイント:
✅ AVAudioPlayer = 簡単便利な再生用
✅ AVAudioEngine = プロ級の音声処理用
って覚えておけばOK。
2.3 録音・録画系 → AVCaptureSession
/ AVCaptureDevice
カメラとマイクを支配するキャプチャ系:
- AVCaptureDevice: カメラやマイクといった「物理的なデバイス」そのもの。
- AVCaptureSession:「入力(カメラ/マイク) → 出力(ファイル/画面)」の配線・制御センター。(セッションの設定次第で、録音・録画・ライブプレビューなんでも可能。)
ポイント:
✅ カメラやマイクの実体 = AVCaptureDevice
、
✅ それをどう繋いで使うか決めるか = AVCaptureSession
って覚えておけばOK。
2.4 メディア処理系 → AVAssetWriter
/ AVAssetReader
動画・音声を読み書き・編集するメディア系:
- AVAssetReader: AVAssetから生のデータ(ピクセルや音声バッファ)を読み出す。
- AVAssetWriter:読み出したデータをファイルに書き込む(エンコードして保存)。
ポイント:
✅ 動画・音声の編集やカスタム録画 = AVAssetWriter
/ AVAssetReader
✅ 編集アプリや高度な録画機能はこいつらの上に成り立ってる。
って覚えておけばOK。
という感じで、AVFoundationは用途ごとに明確な担当パートがある。
この構成を理解してると、
「これはAVPlayerの出番だな」とか「AVCaptureでやれそうだな」って判断ができるようになるのでVery Good。
一個の記事でまとめると膨大な説明とサンプルコードになりそうなので、続きは以下記事に進んで学んでいきましょう。