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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

2886閲覧

作成した動画ファイルを削除したい。

dd6

総合スコア15

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/07/27 03:38

以前の投稿(https://teratail.com/questions/35404)でアドバイスをいただき、複数の画像から動画を作成ができました。その中で、下記のコードで保存先のURLが
file:///var/mobile/Containers/Data/Application/********---**-**********/Documents/test.mp4(*は数字やアルファベット)
となり、動画がどこに保存されているかがわかりません。
UISaveVideoAtPathToSavedPhotosAlbum(url.path!, self, nil, nil)でカメラロールには動画があるのですが、他の場所にも保存されているのでしょうか?
iOSアプリのファイル保存やパスについて、
http://qiita.com/nnsnodnb/items/13642c4a8d55641f893e
http://s31o3.hatenablog.com/entry/2015/04/01/145748
などを参考にしたのですがよくわからず困っています。テストとして動画を作ったので、保存されている場所をたどって、動画ファイルを削除したいのですが、どのようにすればよいですか?

Swift3 Xcode8.3.3です。

//保存先のURL // let docDir = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] // let filePath = NSString(string: docDir).appendingPathComponent("test.mp4") // let url = NSURL(fileURLWithPath: filePath) //すでにファイルがあるならファイルを削除 do{ try FileManager.default.removeItem(atPath: filePath) }catch{ //エラー print("削除できませんでした。") } " // AVAssetWriter guard let videoWriter = try? AVAssetWriter(outputURL: url as URL, fileType: AVFileTypeQuickTimeMovie) else { fatalError("AVAssetWriter error") } // AVAssetWriterInput let outputSettings = [ AVVideoCodecKey: AVVideoCodecH264, AVVideoWidthKey: 480, AVVideoHeightKey: 640 ] as [String : Any] let writerInput = AVAssetWriterInput(mediaType: AVMediaTypeVideo, outputSettings: outputSettings as [String : AnyObject]) videoWriter.add(writerInput) // AVAssetWriterInputPixelBufferAdaptor let adaptor = AVAssetWriterInputPixelBufferAdaptor( assetWriterInput: writerInput, sourcePixelBufferAttributes: [ kCVPixelBufferPixelFormatTypeKey as String: Int(kCVPixelFormatType_32ARGB), kCVPixelBufferWidthKey as String: width, kCVPixelBufferHeightKey as String: height, ] ) writerInput.expectsMediaDataInRealTime = true // 動画の生成開始 // 動画生成終了 // 端末のカメラロールに保存する UISaveVideoAtPathToSavedPhotosAlbum(url.path!, self, nil, nil)

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

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

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

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

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

guest

回答1

0

ベストアンサー

まずはどこに何が保存されているのかを把握する必要があると思います。
可能性としては、以下の2つ場所です。
・カメラロール(iOSの写真アプリから見える領域)
・Sandbox(自分のアプリ内の領域)

前者については、iPhone端末の写真アプリを起動することで保存されているかどうか確認出来ると思います。
こちらを削除したいのであれば、Photos Frameworkなどを利用することで削除出来ると思います。(削除時にユーザ許可を求められてしまいますが)

後者であれば、まずは保存されていると思われるiPhoneをmacと接続して、
XCodeのメニュー -> Window -> Devices -> 接続した端末を選択 -> Installed Appsから自分が開発したアプリを選択 -> 歯車のアイコン -> Show Container をするとSandbox 内が見れます。

今回の話だとdocumentsディレクトリのどこかに保存しているようなので、
その配下を見ることでどのように保存されているのかが見えると思います。

これで状況が把握出来れば、あとはプログラム側で必要がなくなったファイルを選んで削除する処理を書くだけとなります。
削除方法は「Objective-c Sandbox ファイル削除」というようなキーワードで検索する見つかると思います。
参考になれば、幸いです。

投稿2017/07/27 09:21

YasuhiroMiyake

総合スコア1336

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問