質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

Cocoa Touch

Cocoa Touchは、iOSアプリケーション用のフレームワークです。Mac上で実装済みの多数のパターンを共有していますが、特にタッチベースのインターフェイスとその最適化に重点を置いて開発されました。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Q&A

0回答

4291閲覧

AVFoundationを使った動画(.mp4/.mov)と音声(.mp3)の合成エラー

masuhara

総合スコア10

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

Cocoa Touch

Cocoa Touchは、iOSアプリケーション用のフレームワークです。Mac上で実装済みの多数のパターンを共有していますが、特にタッチベースのインターフェイスとその最適化に重点を置いて開発されました。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

0グッド

0クリップ

投稿2015/12/05 18:32

書き出した動画ファイル(.mov/.mp4)に.音声(.mp3)をミックスしようと考えており、以下のようなコードで作成しましたが、うまくいきませんでした。動画を書き出してフォトライブラリに保存するところまでは確認済ですが、以下のようにミックスしたものをフォトライブラリに保存しようとするとうまくいきません。

具体的な結果としては、"writeVideoAtPathToSavedPhotosAlbum: completionBlock:^"のassetURLとerrorが両方nilになってしまいます。おそらくうまくミックスしたものがフォトライブラリに保存された場合はこれらの変数がnilになることはないと思いますが、私のコードのミス、またはうまく保存する方法が分かる方はぜひご教示願います。

Objective

1+ (void)saveMixedMovieInPhotoLibrary { 2 NSString *videoPath = [NSHomeDirectory() stringByAppendingPathComponent:@"tmp/movie.mov"]; 3 NSURL *exportURL = [NSURL fileURLWithPath:videoPath]; 4 NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"music" ofType:@"mp3"]; 5 NSURL *soundURL = [NSURL fileURLWithPath:soundPath]; 6 7 AVMutableComposition *composition = [[AVMutableComposition alloc]init]; 8 AVURLAsset *video = [[AVURLAsset alloc]initWithURL:exportURL options:nil]; 9 AVAsset *audioAsset = [AVAsset assetWithURL:soundURL]; 10 11 // Merge movie and audio 12 AVMutableCompositionTrack *audioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid]; 13 14 [audioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, video.duration) 15 ofTrack:[[audioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0] atTime:kCMTimeZero error:nil]; 16 17 AVMutableCompositionTrack *composedTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid]; 18 [composedTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, video.duration) 19 ofTrack:[[video tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] 20 atTime:kCMTimeZero error:nil]; 21 NSLog(@"%f", CMTimeGetSeconds(video.duration)); 22 23 // Export 24 AVAssetExportSession *assetExport = [[AVAssetExportSession alloc] initWithAsset:[AVAsset assetWithURL:exportURL] presetName:AVAssetExportPresetHighestQuality]; 25 if ([[NSFileManager defaultManager] fileExistsAtPath:videoPath]) { 26 [[NSFileManager defaultManager] removeItemAtPath:videoPath error:nil]; 27 } 28 29 assetExport.outputFileType = @"com.apple.quicktime-movie"; 30 assetExport.outputURL = exportURL; 31 assetExport.shouldOptimizeForNetworkUse = YES; 32 33 [assetExport exportAsynchronouslyWithCompletionHandler:^(void) { 34 NSLog(@"EXPORT STATUS == %@", assetExport.outputURL); 35 36 // Save to Library 37 ALAssetsLibrary *assetLibrary = [[ALAssetsLibrary alloc] init]; 38 [assetLibrary writeVideoAtPathToSavedPhotosAlbum:exportURL 39 completionBlock:^(NSURL *assetURL, NSError *assetError) { 40 if (assetError) { 41 NSLog(@"export error!!!!"); 42 }else { 43 BOOL isDirectory; 44 NSFileManager *manager = [NSFileManager defaultManager]; 45 if ([manager fileExistsAtPath:assetURL.absoluteString isDirectory: &isDirectory]) { 46 [manager removeItemAtPath:assetURL.absoluteString error:nil]; 47 NSLog(@"AssetURL is Already Exist."); 48 }else { 49 NSLog(@"AssetURL == %@", assetURL); 50 NSLog(@"Class == %@", [assetURL class]); 51 } 52 } 53 }]; 54 }]; 55}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問