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

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

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

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

Xcode

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

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

1回答

1785閲覧

swift 動画停止中にホーム画面に移動して、再度アプリを開くと停止位置が変わっている

sasakikik

総合スコア21

iOS

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

Xcode

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

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2019/03/02 01:58

編集2019/03/04 02:45

swiftでiPhone内の動画を再生しているのですが、動画を停止してから、iPhoneのホーム画面に戻って、再度アプリを開くと、動画の停止位置が変わっています。

動画の停止位置によって、進んでいたり、戻っていたりしています。

どうかご教授下さい

swift

1import UIKit 2import AVFoundation 3import AVKit 4 5class ViewController: UIViewController { 6 7 8 //動画再生画面 9 var playerViewController: AVPlayerViewController! 10 11 let playButton = UIButton(type: UIButton.ButtonType.system) 12 13 let pauseButton = UIButton(type: UIButton.ButtonType.system) 14 15 //URL 16 17 var url:URL! 18 19 20 override func viewDidLoad() { 21 super.viewDidLoad() 22 // Do any additional setup after loading the view, typically from a nib. 23 24 url = NSURL(string:"動画のURL") as URL! 25 26 // 生成 27 let player = AVPlayer(url:url) 28 29 playerViewController = AVPlayerViewController() 30 playerViewController.player = player 31 32 33 // 設定 34 playerViewController.view.frame = CGRect(x:0, y:0,width:400, height:300) 35 print(view.bounds.width,view.bounds.height) 36 playerViewController.showsPlaybackControls = false // 操作パネルを非表示にする場合はfalse 37 playerViewController.videoGravity = AVLayerVideoGravity(rawValue: AVLayerVideoGravity.resizeAspect.rawValue) // 矩形にフィット 38 39 self.view.addSubview(playerViewController.view) 40 41 // サイズを設定する. 42 playButton.frame = CGRect(x:350, y:520, width:80 ,height:40) 43 // 背景色を設定する. 44 // 枠を丸くする. 45 playButton.layer.masksToBounds = true 46 // タイトルを設定する(通常時). 47 playButton.setTitle("▶", for:UIControl.State.normal) 48 playButton.setTitleColor(UIColor(red: 0, green: 0.95, blue: 0.95, alpha: 1), for: .normal) 49 playButton.titleLabel?.font = UIFont.systemFont(ofSize: 30) 50 self.view.addSubview(playButton) 51 //タップされた時のアクション 52 playButton.addTarget(self, action: #selector(playbuttonEvent(_:)), for: UIControl.Event.touchUpInside) 53 54 // サイズを設定する. 55 pauseButton.frame = CGRect(x:450, y:520, width:80 ,height:40) 56 // 背景色を設定する. 57 // 枠を丸くする. 58 pauseButton.layer.masksToBounds = true 59 // タイトルを設定する(通常時). 60 pauseButton.setTitle("■", for:UIControl.State.normal) 61 pauseButton.setTitleColor(UIColor(red: 0, green: 0.95, blue: 0.95, alpha: 1), for: .normal) 62 pauseButton.titleLabel?.font = UIFont.systemFont(ofSize: 30) 63 self.view.addSubview(pauseButton) 64 //タップされた時のアクション 65 pauseButton.addTarget(self, action: #selector(pausebuttonEvent(_:)), for: UIControl.Event.touchUpInside) 66 } 67 68 69 @objc func playbuttonEvent(_ sender: UIButton) { 70 guard let player = playerViewController.player else { 71 return 72 } 73 74 player.play() 75 76 } 77 78 @objc func pausebuttonEvent(_ sender: UIButton) { 79 guard let player = playerViewController.player else { 80 return 81 } 82 83 player.pause() 84 85 } 86 87} 88 89

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

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

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

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

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

guest

回答1

0

ベストアンサー

お疲れ様です。
例えば、ViewControllerから移動すると、明示的に停止づればいかがでしょうか。

swift

1func viewWillDisappear(_ animated: Bool) { 2 player.pause() 3}

もし、player.pause() で位置を保存すれば...。

投稿2019/03/08 00:38

vanderlvov

総合スコア685

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

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

sasakikik

2019/03/08 03:20

ありがとうございます。 コード試させていただきましたが、改善されませんでした。 端末によって、動画の停止位置がずれる現象が起きているようです。
vanderlvov

2019/03/08 04:22 編集

コードをそのまま試しても、治らないと思います。それはコンセプトです。viewcontroller のライフサイクルを考えて、位置は適当に保存されるかと確認して下さい。 ちなみに、保存のやり方は何でしょうか。
sasakikik

2019/03/08 04:34

pausebuttonで、player.pause()を実行し動画を停止しています。 その後、ホーム画面に移動し、アプリに戻ると、動画の停止位置がずれています。
vanderlvov

2019/03/08 04:47

と言うことで位置を保存しません。 では、先ず位置をuserdataに保存して下さい。
sasakikik

2019/03/08 04:51

ありがとうございます。 userdataは使ってませんでした。試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問