🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Xcode

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

Swift

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

Q&A

1回答

812閲覧

swift5 AVAudioPlayer再生

bk_coffee

総合スコア2

Xcode

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

Swift

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

0グッド

0クリップ

投稿2021/01/28 14:24

編集2021/01/29 01:56

##実現したいこと
シンバルのボタンを押したらAVAudioPlayerでmp3のファイルを再生する様にしたいです。

現在の状況

ボタンをタップしてコンソールに("シンバルがタップされました")
と出るのですが、音はなりません。
add targetにはチェックをつけていますし、シュミレーターもミュートにしていません。
何が原因でしょうか・・
わかる方がいらっしゃいましたら、どうかご教授ください。

シンバルをタップした時のコンソールはこの様になります。
イメージ説明

該当のソースコード

import UIKit import AVFoundation class ViewController: UIViewController{ override func viewDidLoad() { super.viewDidLoad() } var cymbalPlayer : AVAudioPlayer? @IBAction func cymbal(_ sender: Any) { let path = Bundle.main.path(forResource: "cymbal.mp3", ofType: nil)! let url = URL(fileURLWithPath: path) do { cymbalPlayer = try AVAudioPlayer(contentsOf: url) cymbalPlayer?.play() print("シンバルがタップされました") } catch { print("error...") } }

試したこと

以下の様にも試してみましたが、だめでした。

let cymbalPath = Bundle.main.bundleURL.appendingPathComponent("cymbal.mp3")
var cymbalPlayer : AVAudioPlayer

do{
cymbalPlayer = try AVAudioPlayer(contentsOf: cymbalPath, fileTypeHint: nil)
//cymbalPlayer.delegate = self
cymbalPlayer?.play()
print("シンバルがタップされました")

} catch let error as NSError{ print("シンバルでエラーが発生!") cymbalPlayer = nil }

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

hoshi-takanori

2021/01/28 18:58

それで鳴るはずですけど…。cymbal.mp3 をプロジェクトに追加する時に Add to target にチェックしてますよね? また、iPhone をミュートにしてませんか?
bk_coffee

2021/01/29 01:56

追加編集しました。またお手隙の際にご確認いただけると幸いです。
hoshi-takanori

2021/01/29 02:00

シンバルをタップした時のコンソールにエラーがいろいろ出てますね。mp3 ファイルが壊れてませんか?
bk_coffee

2021/01/29 02:24

mp3ファイルを取り込みする前は再生できました。。。
guest

回答1

0

guard let path = Bundle.main.path(forResource: "cymbal", ofType: "mp3") != nil else {
fatalError()
}

投稿2021/02/28 12:19

errolizer

総合スコア441

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問