AVFoundationの基本
基本全て必読。これ全部読めば基本はわかる
・AVFoundationを使ったiOSの動画編集 - Qiita
・iosの動画再生周りの基礎を調べた - Qiita
・UIViewの背景に動画を流す簡単な方法 - Qiita
以下、同じ筆者のシリーズ記事
・AV Foundationを使った動画編集(Asset) - Qiita
->この記事はバージョンが古いので変換ツールにかけると良い。
・AV Foundationを使った動画編集(Composition) - Qiita
・AVFoundationを使った動画編集(簡単なフェード処理) - Qiita
->AVMutableComposition
とかのごっちゃになりそうなものの違いがわかりやすくまとまっている
・AVFoundationを使った動画編集(2つの動画をフェードで重ねる) - Qiita
AVAssetとAVMutableCompositionの基本
・<AVFoundation>動画編集の基本的なしくみを理解する - Qiita
・AVMutableVideoCompositionLayerInstructionの使い方 - おじさんは生きている
回転がおかしい系
・ios - ビデオがカメラロールから来たときのAVAssetExportSession回転エラー - 答えた
・ios – videoCompositionの回転とメタデータの削除を無視したAVAssetExportSession - コードログ
・ios - ポートレートモードでキャプチャされたAVMutableVideoComposition回転ビデオ - 答えた
・AVFoundationで動画をリサイズ + 反転する - 木木木
・ios – AVMutableVideoCompositionLayerInstructionを使用してビデオが回転していない - コードログ
->AVMutableVideoCompositionLayerInstruction
のトラックのID(引数)にはAVAssetTrack
ではなく**AVMutableCompositionTrack
を指定しましょう**という話(AVAssetTrack
を指定しても実行できてしまうので要注意)
//これはダメ
let assetTrack: AVAssetTrack = tracks[0] as AVAssetTrack
var layerInstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: assetTrack)
//これはOK
let trackVideo: AVMutableCompositionTrack = composition.addMutableTrackWithMediaType(AVMediaTypeVideo, preferredTrackID: CMPersistentTrackID())
var layerInstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: trackVideo)
//指定するトラックのIDを間違えると回転の検知とかがおかしくなる
//これダメ
rotater.setTransform(assetTrack.preferredTransform, atTime: insertTime)
//これならOK
layerInstruction.setTransform(assetTrack.preferredTransform, atTime: insertTime)
・AVAssetExportSessionビデオが縦向きとして保存されない | 翻訳QAサービス | code adviser
・AVAssetExportSessionビデオが縦向きとして保存されない | 翻訳QAサービス | code adviser
->上の記事と似たような話
・iOSで動画の回転方向を調べる - Qiita
->prefferedTransform
で検出した動画の向きに合わせて回転させるやり方
・縦横比 ビデオ ファイルが縦向きまたは iOS の横向きで記録されたかどうかを検出する方法 - 初心者入門サンプル
MPMoviePlayerController
, AVAssetImageGenerator
の.appliesPreferredTrackTransform
プロパティとかで回転制御する方法もあるよという話(あんまわかってない)