

iPadで録画保存済みの動画を読込（A)後、画像を加工(CMSampleBufferを使用)して(B)、出力(C)するために、AVAssetWriterを利用しています。  
(A)、(C)の実装は、Apple公式が提供しているドキュメント/サンプルを流用して、その中に、(B)の処理を追加するという実装です。  
<https://developer.apple.com/jp/documentation/AVFoundationPG.pdf>

しかし、上記の方法で出力したファイルを、AVURLAssetとして読み込むと、tracksの数が0になります。  
そのため、loadValuesAsynchronouslyForKeys を利用して、加工後の動画ファイルを読み込無む際に、エラーが発生するようになります。

[code]

    =============
    NSArray *requestedKeys = [NSArray arrayWithObjects:@"tracks", kPlayableKey, nil];
    [asset loadValuesAsynchronouslyForKeys:requestedKeys completionHandler:
         ^{
             dispatch_async( dispatch_get_main_queue(),
                            ^{
                                /* IMPORTANT: Must dispatch to main queue in order to operate on the AVPlayer and AVPlayerItem. */
                                [self prepareToPlayAsset:asset withKeys:requestedKeys];
                            });
         }];
    ....
    ....
    
    
    =============
    
    - (void)prepareToPlayAsset:(AVURLAsset *)asset withKeys:(NSArray *)requestedKeys
    {
        for (NSString *thisKey in requestedKeys)
        {
            NSError *error = nil;
            AVKeyValueStatus keyStatus = [asset statusOfValueForKey:thisKey error:&error];
            if (keyStatus == AVKeyValueStatusFailed)
            {
                [self assetFailedToPrepareForPlayback:error];
    
                return;
            }
    
        }
    ....
    ....
    
[/code]

AVAssetWriterを利用した処理で、トラックを維持したまま、動画ファイルを出力することはできるのでしょうか？  
もしくは、track数が0の状態でも、正常に読み込む方法があるのでしょうか？


CC BY-SA 3.0
2016-01-24T09:21:18.617
21255
2016-01-24T09:21:18.617
3766
question
ios
AVAssetWriterで出力した動画のtrack情報について