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

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

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

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

Swift

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

Q&A

1回答

379閲覧

xcodeでストリーミング再生

iijima

総合スコア12

Xcode

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

Swift

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

0グッド

0クリップ

投稿2017/09/04 09:14

xcodeで音声のストリーミング再生をボタンで実装しようと試みてます。
しかし、エラーが発生してしまい、音声再生がうまくいきません。
どなたかアドバイスをいただけませんでしょうか。

lang

1import UIKit 2import AVFoundation 3 4class ViewController: UIViewController { 5 6 var player:AVAudioPlayer! 7 8 override func viewDidLoad() { 9 super.viewDidLoad() 10 // Do any additional setup after loading the view, typically from a nib. 11 12 let url = URL(string: "https://www.youtube.com/watch?v=9aJVr5tTTWk") 13 _ = AVPlayerItem(url: url!) 14 15 player.prepareToPlay() 16 } 17 @IBAction func tapbutton(_ sender: UIButton) { 18 player.play() 19 } 20 21 override func didReceiveMemoryWarning() { 22 super.didReceiveMemoryWarning() 23 // Dispose of any resources that can be recreated. 24 } 25 26}

###発生しているエラー
fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb)

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

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

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

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

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

guest

回答1

0

アドバイスというか、言葉ちょっと強いですがこれ根本的にプログラミングに理解がなく、とりあえずどっかからソースコードコピペして上手くいかないってパターンではないでしょうか?正直とても2、3行のアドバイスでどうにかなる問題ではありません。

まずプログラミングの根本的な認識として、変数を宣言した後に代入しないで使おうとすると確実に思う通りの処理にはなりません。具体的な言語の動作にもよりますが Swift の場合は問答無用で落ちます。このプログラムですと ViewControllervar player:AVAudioPlayer! の宣言はありますが、player = ??? の代入はどこにもありません。にもかかわらずいきなり player.prepareToPlay() を呼び出そうとしています。これはまず落ちる原因です。

ではこれをどう直せばいいかというと、そもそもの問題点としてあなたは動画を再生したいのか、それとも音声を再生したいのか、の問題になります。AVAudioPlayer は文字通り音声再生用のクラスです。音声を再生したいのならどうにかしてこの AVAudioPlayer を初期化する必要があります

逆に動画を再生したい場合は AVAudioPlayer ではなく AVPlayer です。この場合、動画を描画する必要がありますので AVPlayer を初期化した後にビューの設定も必要です。

最後に、仮に上記の問題を全て解決した場合、果たしてちゃんと正しく再生できるのかというと、残念ながらそれも無理です。ここで書いてる URL は動画のストリーミングアドレスではなく、あくまで動画のウェブページの URL です。YouTube は動画の直リンクを公開していないので、直接 AVFoundation で YouTube の動画をストリーミングで自分のアプリで再生するのは非常に難しいです。

投稿2017/09/05 06:52

lovee

総合スコア92

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

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

iijima

2017/09/05 08:47

おっしゃる通り、ほとんどコピペしてそれを少し変えただけのコードでほとんど理解がないまま作成していました。 焦らずに、1から知識を付けてからもう一度実装をすることにします。 ご丁寧に説明をしてくださりありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問