AVAssetExportSessionに問題がありますが、進行状況が上がるのをやめてもステータスはまだエクスポート中であると表示されます。これは実際には非常にまれな出来事ですが、99.99%の時間で完璧に動作しますが、とにかく問題を解決したいのです。AVAssetExportSessionが進行を停止します
だから私は、エクスポートを開始します。
exportSession = [[AVAssetExportSession alloc] initWithAsset:composition presetName:AVAssetExportPresetMediumQuality];
exportSession.videoComposition = videoComposition;
exportSession.outputFileType = @"com.apple.quicktime-movie";
exportSession.outputURL = outputURL;
[exportSession exportAsynchronouslyWithCompletionHandler:^{
...
}];
その後の進捗状況をチェックするタイマーがあります。
AVAssetExportSessionStatus status = [exportSession status];
float progress = 0;
if (status == AVAssetExportSessionStatusExporting) {
progress = [exportSession progress];
} else if (status == AVAssetExportSessionStatusCompleted) {
progress = 1;
}
NSLog(@"%d %f", status, progress);
[delegate processor:self didProgress:progress];
を、出力がのように見える終わる:
2012-05-23 14:28:59.494 **********[1899:707] 2 0.125991
2012-05-23 14:28:59.994 **********[1899:707] 2 0.185280
2012-05-23 14:29:00.494 **********[1899:707] 2 0.259393
2012-05-23 14:29:00.994 **********[1899:707] 2 0.326093
2012-05-23 14:29:01.494 **********[1899:707] 2 0.400206
2012-05-23 14:29:01.995 **********[1899:707] 2 0.481729
2012-05-23 14:29:02.495 **********[1899:707] 2 0.541019
2012-05-23 14:29:02.997 **********[1899:707] 2 0.622542
2012-05-23 14:29:03.493 **********[1899:707] 2 0.681832
2012-05-23 14:29:03.995 **********[1899:707] 2 0.763355
2012-05-23 14:29:04.494 **********[1899:707] 2 0.822645
2012-05-23 14:29:04.994 **********[1899:707] 2 0.880082
2012-05-23 14:29:05.493 **********[1899:707] 2 0.880082
2012-05-23 14:29:05.994 **********[1899:707] 2 0.880082
...
2012-05-23 14:43:22.994 **********[1899:707] 2 0.880082
2012-05-23 14:43:23.493 **********[1899:707] 2 0.880082
2012-05-23 14:43:23.994 **********[1899:707] 2 0.880082
2012-05-23 14:43:24.494 **********[1899:707] 2 0.880082
(注:毎回同じパーセンテージで停止するわけではありません)。
タイムスタンプからわかるように、最初の88%を実行するのに5秒かかっていました。その後、別の13分(全ビデオ処理は通常10秒以上かかる)になります。進捗。
現在、私の唯一の選択肢は、進捗状況が最後のX秒間に変更されていないかどうかを確認し、失敗したことをユーザーに伝えて再試行することです。
誰もが考えている?
エクスポートセッションに書き込もうとしているデータはどれですか? –
ビデオを別のビデオの末尾に追加し、オーディオの一部をオーディオファイルの別の部分に置き換えます。ビデオコンポジションを使用して、開始時間にビデオの優先トランスフォームを設定します。 –
同じ問題もあります。これについての進歩? –