オーディオ&ビデオ
AVCam for iOS(サンプルコード)
最終改訂:2013年12月5日 バージョン 3.0
ARC、自動レイアウト、そして単純化クラス構造の利点を得る為に書き直した。
ビルドに必要な物:XCode 5 以降、iOS 7.0 以降
実行時に必要な物:iOS 7.0 以降
AVCam サンプルコードは動画や静止画を撮影するための AV Foundation キャプチャ API を使用する方法を示します。 動画の記録開始ボタン、前面と背面のカメラを切り替える(サポートされたデバイス上では)ためのカメラボタン、静止画を撮影する静止画ボタンがあります。それは、iPad や iPhone など実際のデバイス上で動作する物で、シミュレータで実行することはできません。
(ReadMe.txt)
### iOS用AVCam ###
==================================================
説明:
AVCam は動画を録画したり静止画を撮影したり、カメラのスイッチの入切の方法を通じて、AV Foundation のキャプチャ API の使用法、を示しています。これは、実際のデバイス上すなわち iPad やi Phone でのみ動作し、シミュレータで実行することはできません。
==================================================
ビルドに必要な物:Xcode 5.0 以降、iOS SDK 7.0 以降
==================================================
実行時に必要な物:iOS 7.0以降
==================================================
前のバージョンからの変更:
最新のココア・タッチ機能を利用するために書き直しました。
==================================================
サンプルプロジェクトのコメントには、以下のような事が書かれています。
アップルソフトウェアは、「そのままの状態で提供」の基礎方針でアップルが配布しています。
いかなる場合においてもアップルは、特別な、間接的、偶発的、または間接的、または必然的な損害(代替品またはサービスの獲得、データや利益または事業の損失、事業の中断)に対する責任は負わず、使用にいかなる方法で惹起され、複製、変更および/またはアップルソフトウェアを配布することは、しかし引き起こさたにもかかわらず、契約理論下であっても、不法行為(過失を含む)、厳格な違反、その他の損害の可能性をアップルが助言されていたとしても。
最終改訂:2013年8月22日 バージョン 1.1
デフォルト値として透かしレイヤーフォントへの更新
ビルドに必要な物:iOS 6.0 SDK、ARC 可能な事
実行時に必要な物:iOS 6.0 以降
AVSimpleEditor は AVVideoComposition、AVAudioMix の API を、簡単なビデオ編集作業のために使用する方法を示す簡単な AVFoundation ベースの動画編集アプリケーションです。それはまた、再生(AVPlayerItem)とエクスポート(AVAssetExportSession)と対話する方法を示しています。アプリ実行は、トリム、クロップ、回転、音楽を追加、透かしおよびエクスポートを追加します。このサンプルでは、ARC に対応しています。
(README.txt)
### AVSimpleEditor ###
==================================================
説明:
iOS のためのシンプルな AV Foundation に基づいた、ムービー編集アプリ。 このサンプルでは、 ARCに対応しています。
==================================================
ビルドに必要な物:ARC が有効な iOS 6 SDK。
==================================================
実行時に必要な物:iOS 6.0 以降
==================================================
パッケージリスト:
AVSEViewController.m / h:
UIViewController のサブクラス。これは再生を含むビュー·コントローラ·ロジックが含まれています。
AVSECommand.m / h:
すべての編集ツールの抽象スーパークラスです。
AVSETrimCommand / AVSERotateCommand / AVSECropCommand / AVSEAddMusicCommand / AVSEAddWatermarkCommand.m / h:
さまざまなツールを実装する AVSECommand の具象サブクラス。
AVSEViewController_iPad.xib :
ViewController の NIB 。これは、アプリのUIが含まれています。
==================================================
以前のバージョンからの変更点:
バージョン1.0
初版
===================================================
最終改訂:2013年7月18日 バージョン1.2.1
iOS 6.1 の SDK 用に更新しました。 AudioSession の API から AVAudioSession に移行。
ビルドに要する物:iOS 6.1 のSDK
実行時に必要な物:iOS 6.1 以降
iPhoneMixerEQGraphTest は Audio Unit Graph (オーディオユニットグラフ)を MultiChannel Mixer (マルチチャンネルミキサー)に繋ぎ、iPodEQ ユニットを介して RemoteIO ユニットへの接続するを作成(ビルド)する方法を示しています。
二つの入力バスは、入力音量コントロールでそれぞれ作成されます。全体的なミキサ出力音量制御も提供され、各バスは、有効または無効にすることができます。 iPodEQ は有効または無効にされ、プリセット EQ カーブは、iPod のイコライザービューでピッカーを経由して選択できる。iPhoneMixerEQGraphTest は 44.1kHz のソースを使用し、余分なサンプルレート変換を避けるために、 44.1kHz のハードウェアサンプルレートを設定します。
「オーディオ再生」は、 「オーディオ再生」が AUGraphStop を呼ぶのに対し、単に AUGraphStart を呼び出します。 AU 音量を変えるのは AudioUnitSetParameter を介して行われる。 iPodEQ ユニットのプリセットは kAudioUnitProperty_FactoryPresets CFArrayRef の値を見てを AudioUnitGetProperty を使用して返されます。現在のプリセットは、その後k AudioUnitProperty_PresentPreset プロパティを使用して AudioUnitSetProperty を呼び出して、適切な AUPreset を渡す選択がされます。 AU ホストは、返された CFArray を所有し、終わったらそれを解放することに注意してください。
オーディオデータは、2つのステレオ·オーディオ·ファイルから提供される。オーディオデータは、 AAC 圧縮 ExtAudioFile は、マルチチャネルミキサへの入力のための Core Audio 正規非圧縮 LPCM クライアント形式にこのデータを変換するために使用されている。
関連するすべてのオーディオ·コードは、AUGraphController.mm ファイルにあります。
(ReadMe.txt)
iPhoneMixerEQGraphTest
==================================================
説明:
iPhoneMixerEQGraphTest は Audio Unit Graph (オーディオユニットグラフ)を MultiChannel Mixer (マルチチャンネルミキサー)に繋ぎ、iPodEQ ユニットを介して RemoteIO ユニットへの接続するを作成(ビルド)する方法を示しています。
二つの入力バスは、入力音量コントロールでそれぞれ作成されます。全体的なミキサ出力音量制御も提供され、各バスは、有効または無効にすることができます。
iPodEQ は有効または無効にされ、プリセット EQ カーブは、 iPod のイコライザービューでピッカーを経由して選択することができます。 iPhoneMixerEQGraphTest は44.1kHz のソースを使用し、余分なサンプルレート変換を避けるために、 44.1kHz のハードウェアのサンプルレートを設定します。
サポートするUIコードは MyViewController.m にあり、関連するすべてのコードは、AUGraphController.mm ファイルにあります。
「オーディオ再生」は、 「オーディオ再生」が AUGraphStop を呼ぶのに対し、単に AUGraphStart を呼び出します。 AU 音量を変えるのは AudioUnitSetParameter を介して行われる。 iPodEQ ユニットのプリセットは kAudioUnitProperty_FactoryPresets CFArrayRef の値を見てを AudioUnitGetProperty を使用して返されます。現在のプリセットは、その後k AudioUnitProperty_PresentPreset プロパティを使用して AudioUnitSetProperty を呼び出して、適切な AUPreset を渡す選択がされます。 AU ホストは、返された CFArray を所有し、終わったらそれを解放することに注意してください。
オーディオデータは、2つのステレオ·オーディオ·ファイルから提供される。オーディオデータは、 AAC 圧縮 ExtAudioFile は、マルチチャネルミキサへの入力のための Core Audio 正規非圧縮 LPCM クライアント形式にこのデータを変換するために使用されている。
サンプルの中で何が起こっているかについての多くの情報がコンソールに出力され、すべてが構成されている様子を理解することができます。ストリーム形式と AUGraph が設定されている方法については、混乱している場合には、 CAStreamBasicDescription ヘルパークラスの CAShow と印刷 メソッドなどのは非常に貴重である。
==================================================
関連情報:
オーディオセッションプログラミングガイド
コアオーディオの概要
オーディオユニット処理グラフサービスのリファレンス
出力オーディオユニットサービスのリファレンス
システムオーディオユニットアクセスガイド
オーディオコンポーネントサービスのリファレンス
オーディオファイルサービスのリファレンス
AudioToolbox / AUGraph.h
AudioToolbox / ExtendedAudioFile.h
==================================================
特記事項:
特になし
==================================================
ビルドに必要な物:iOS 6.1のSDK
==================================================
実行時に必要な物:iOS 6.1 以降
==================================================
パッキングリスト:
MixerEQGraphTestDelegate.h
MixerEQGraphTestDelegate.m
MixerEQGraphTestDelegate クラスは、ナビゲーションコントローラービューをアプリウインドウに追加する為のアプリデリゲートオブジェクト追加するため定義し、オーディオセッションなどを準備します。
MyViewController.h
MyViewController.m
MyViewController クラスは、アプリ用のコントローラオブジェクトを定義しています。このオブジェクトは、ユーザーインターフェイスを設定するのに役立ち、ユーザとの対話を管理し、 AUGraphController と対話します。
AUGraphController.h
AUGraphController.mm
このファイルでは、 AUGraph の設定を行ない、ExtAudioFile を使用してオーディオデータや入力レンダリング過程などををロードしていきます。Core Audio と対話するすべてのコードは、この1つのファイルにあり、サンプルの残りの部分は、このファイルのデモコードのシンプルなフレームワークと考えることができます。
==================================================
以前のバージョンからの変更点:
バージョン 1.0: iPhone OS 3.1.3でテストされた 。最初のパブリックリリース。
バージョン 1.1: iOS 4 SDK でビルド出来るようにアップグレードされたプロジェクト。
バージョン 1.2: iPhone OS 3.2 用にデプロイターゲットを変更し、 Info.plist ファイル内 にCFBundleIconFiles を追加しました。
バージョン 1.2: iOS6.1 SDK用に更新し、 AudioSession API から AVAudioSession に移行。
==================================================
最終改訂:2013年8月17日、バージョン 1.0.1
初版
ビルドに必要な物:Xcode 4.6.3 以降、iOS6.1.3以降
実行時に必要な物:iOS 6.1.3以降の物、iPad2 以降の iPad デバイス
音声データには Core Audio オーディオユニット効果(バンドパス·フィルタ)を適用するだけでなく、オーディオサンプルを可視化するために、AV Foundation との組み合わせで MTAudioProcessingTap を使用するサンプルアプリ。
注意:サンプルはソースメディアとして使用するアセットライブラリ(カメラロール)に少なくとも1つのビデオ装置を必要とします。それは自動的に最初に見つかったものを選択します。
(ReadMe.txt)
### AudioTapProcessor ###
==================================================
説明:
音声データには Core Audio オーディオユニット効果(バンドパス·フィルタ)を適用するだけでなく、オーディオサンプルを可視化するために、AV Foundation との組み合わせで MTAudioProcessingTap を使用するサンプルアプリ。
注意:サンプルはソースメディアとして使用するアセットライブラリ(カメラロール)に少なくとも1つのビデオ資産を必要とします。それは自動的に最初に見つかったものを選択します。
==================================================
ビルドに必要な物:Xcode 4.6.3 以降と iOS 6.1.3 以降。
==================================================
実行時に必要な物:
iOS 6.1.3 以降
iPad 2 以降の iPad デバイス
==================================================
パッキングリスト:
MYAudioTapProcessor.h と MYAudioTapProcessor.mは、このサンプルの重要な点を示す主なコードが含まれています。
これは AVAudioTapProcessorContext と AVMutableAudioMix の設定だけでなく、バンドパスフィルタ・オーディオユニットと、レンダリング過程が含まれています。これは、資産からのオーディオデータに行われるデモ処理を提供する。
==================================================
以前のバージョンからの変更点:
バージョン 1.0 : 最初のバージョン WWDC 2012
バージョン 1.0.1 : iOS のリファレンスライブラリのバージョン
==================================================
StitchedStreamPlayer
最終改訂:2011年6月27日、バージョン1.4
統一された方法で再生するための任意の装置を準備するための更新。
ビルドに必要な物:iOS SDK 4.3
実行時に必要な物:iOS 4.3 以降
タイムドメタデータが、カスタムシーク UI をサポートする、ストリーム内の異なるコンテンツを識別するために使用できる方法の簡単な AVFoundation デモです。
(ReadMe.txt)
### StitchedStreamPlayer ###
==================================================
説明:
タイムドメタデータが、カスタムシーク UI をサポートする、ストリーム内の異なるコンテンツを識別するために使用できる方法の簡単な AVFoundation デモです。
( 訳注:今後 ReadMe.txt の内容が直前に説明された内容と同じ場合、前と同じ、などと記して省略する)
このサンプルは、タイムドメタデータとしてエンコードplistsを格納するためのコンテンツを期待しています。 AVPlayerはNSDictionariesにこれらを回す。
この例では、メタデータのペイロードは、広告のリスト("ad-list")またはADレコード( "URL" )のどちらかである。広告のリスト内の各広告は、値の開始時刻と終了時刻のペアで指定されます。各広告レコードが再生する広告映像を指すURLで指定されます。
ID3 キー
AVMetadataID3MetadataKeyGeneralEncapsulatedObject は、ストリーム内のメタデータを識別するために使用される。
==================================================
詳細:
あなたは、メディア·ストリーム·セグメントに各種のメタデータを追加することができます。たとえば、音声ストリームにはアルバムアート、アーティスト名、曲のタイトルを追加できます。別の例として、野球の試合のビデオに、現在の打者の名前と打率などの情報を追加できます。
音声のみのストリームは、メタデータとして画像が含まれている場合は、アップルのクライアントソフトウェアは自動的にそれを表示します。現在、自動的にアップルが提供するクライアントソフトウェアで表示される唯一のメタデータは、音声のみのストリームに付随する静止画像である。
独自のクライアントソフトウェアを記述する場合は、しかしながら、 MPMoviePlayerController または AVPlayerItem のいずれかを使用して、timedMetaDataプロパティを使用してストリーミングされたメタデータにアクセスすることができます。
あなたは、HTTP ライブストリーミングストリームセグメンタまたはファイルセグツール(アップルのデベロッパーのウェブサイトからの HTTP ライブストリーミングツールの最新バージョンをダウンロードして下さい)のいずれかに-Fコマンドラインオプションでのメタデータファイルを指定することで、タイムドメタデータを追加できます。あなたが iPhone デベロッパプログラムのメンバーであればアクセスできます。これらのツールに移動するには、1つの方法は、 connect.apple.com にログオンすることですし、見出しのダウンロードの下の iPhone をクリックします。HTTP ライブストリーミング仕様のタイムドメタデータも同様、ウェブサイト上で提供されています。
指定したメタデータソースは、 ID3形式やイメージファイル( JPEGまたはPNG )でファイルにすることができます。この方法で指定されたメタデータは、自動的にすべてのメディアセグメントに挿入される。
それはオフセット所与の時間にメディアストリームに挿入されるので、タイムドメタデータと呼ばれる。タイムドメタデータは、必要に応じてある時間の後に、すべてのセグメントに挿入することができるが、これは任意である。
ライブストリームにタイムドメタデータを追加するには、ストリームセグメンタに設定された出力と、 id3taggenerator ツールを使用する(id3taggeneratorツールは、上記のように、アップルの開発者向けサイトから HTTP ライブストリーミングツールと一緒にダウンロードすることができます)。このツールは、ID3 メタデータを生成し、それを外部ストリームの中へとストリームセグメンタを渡します。
タグ生成はシェルスクリプトから実行することができ、例えば、希望の時間にメタデータを挿入したり、任意の時間間隔で行ったりする。新しいタイムドメタデータは自動的に既存のメタデータを置き換えます。
メタデータは、メディアセグメントに挿入されると、それは永久的である。ライブ放送はビデオオンデマンドとして再目的化されている場合は、例えば、それは本来の放送中に挿入されたメタデータを保持します。
ファイルセグメンタを使用して作成されたストリームにタイムドメタデータを追加するのは、少し複雑です。
1 .まず、メタデータ·サンプルを生成します。そのファイルに設定された出力で、 id3taggenerator コマンドラインツールを使用して、ID3メタデータを生成することができます。
2 .次に、メタデータのマクロファイルを作りますー各ラインは、メタデータ、メタデータのタイプおよびメタデータファイルのファイル名へのパスを挿入するための時間を指定するテキストファイルを作成します。
たとえば、次のメタデータマクロファイルは、ストリームに 1.2間の映像を挿入し、10 秒後、 ID3 タグを挿入します。
1.2 picture /meta/images/picture.jpg
10 id3 /meta/id3/title.id3
3 .最後に、- Mコマンドラインオプションを使用して、メディアファイルセグメンタの起動時に最後に、名前でメタデータマクロファイルを指定します。
その他の詳細については、 mediastreamsegmenter 、 mediafilesegmenter 、および id3taggenerator の man ページを参照してください。
==================================================
ビルドに必要な物:iOS 4.3 SDK 以降
==================================================
実行時に必要な物:iPhone OS 4.3 以降
==================================================
以前のバージョンからの変更点:
1.3 - iOS 4.3 への更新
==================================================