[解決済み] Swiftを使って音を鳴らすには?
2022-02-09 07:35:21
質問
Swiftを使って音を鳴らしたいのですが、どうすればいいですか?
私のコードはSwift 1.0で動作していましたが、Swift 2以降ではもう動作しません。
override func viewDidLoad() {
super.viewDidLoad()
let url:NSURL = NSBundle.mainBundle().URLForResource("soundName", withExtension: "mp3")!
do {
player = try AVAudioPlayer(contentsOfURL: url, fileTypeHint: nil)
} catch _{
return
}
bgMusic.numberOfLoops = 1
bgMusic.prepareToPlay()
if (Data.backgroundMenuPlayed == 0){
player.play()
Data.backgroundMenuPlayed = 1
}
}
解決方法は?
最も望ましいのは AVFoundation . これは、オーディオビジュアルメディアを扱うためのすべてのエッセンスを提供します。
更新しました。 との互換性があります。 Swift 2 , スイフト3 と スウィフト4 コメントで何人かの方からご提案いただいたとおりです。
Swift 2.3
import AVFoundation
var player: AVAudioPlayer?
func playSound() {
let url = NSBundle.mainBundle().URLForResource("soundName", withExtension: "mp3")!
do {
player = try AVAudioPlayer(contentsOfURL: url)
guard let player = player else { return }
player.prepareToPlay()
player.play()
} catch let error as NSError {
print(error.description)
}
}
スイフト3
import AVFoundation
var player: AVAudioPlayer?
func playSound() {
guard let url = Bundle.main.url(forResource: "soundName", withExtension: "mp3") else { return }
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
let player = try AVAudioPlayer(contentsOf: url)
player.play()
} catch let error {
print(error.localizedDescription)
}
}
Swift 4 (iOS 13対応)
import AVFoundation
var player: AVAudioPlayer?
func playSound() {
guard let url = Bundle.main.url(forResource: "soundName", withExtension: "mp3") else { return }
do {
try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default)
try AVAudioSession.sharedInstance().setActive(true)
/* The following line is required for the player to work on iOS 11. Change the file type accordingly*/
player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.mp3.rawValue)
/* iOS 10 and earlier require the following line:
player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileTypeMPEGLayer3) */
guard let player = player else { return }
player.play()
} catch let error {
print(error.localizedDescription)
}
}
曲名を変更し、さらに 拡張子 . ファイルを正しくインポートする必要があります (
Project Build Phases
>Copy Bundle Resources
). に置きたいかもしれません。assets.xcassets
のために を使うと便利です。
短いサウンドファイルの場合は、以下のような非圧縮のオーディオフォーマットを使用することをお勧めします。
.wav
これらは最高の品質でCPUへの影響も少ないからです。ディスクスペースの消費は、短いサウンドファイルではそれほど気にならないでしょう。長いファイルでは、次のような圧縮形式をお勧めします。
.mp3
などpp. を確認してください。
対応オーディオフォーマット
の
CoreAudio
.
ファンファクト
音を鳴らすのがもっと簡単になるような、きちんとした小さなライブラリがあります :)
例えば
SwiftySound
関連
-
[解決済み】リンカーコマンドが終了コード1で失敗(起動を確認するには-vを使用)、Xcode 8、Swift 3
-
[解決済み] Xcode は、[バンドル ID] に一致する iOS App Store プロビジョニングプロファイルを見つけられませんでした。
-
[解決済み] Xcodeのロギング。"Metal API Validation Enabled"
-
[解決済み] SwiftUI vs Interface Builderとストーリーボード【非公開
-
[解決済み] 脱獄したiphoneで`uicache`コマンドは何をするのですか?[クローズド]
-
[解決済み] あなたのリクエストはエラーを発生させました。[newNullResponse]?
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] Swiftで#pragmaマーク?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] Swiftでindexとelementでループを反復させる方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Xcodeエラー:SDK 'iOS 10.0'の製品タイプ 'Application'では、コード署名が必要です。
-
[解決済み] Cordova Camera iOSの問題。NOT_FOUND_ERR
-
[解決済み] UICollectionView: 非Nilのレイアウトパラメータで初期化する必要があります。
-
[解決済み] 新しいアウトレット接続を挿入できませんでした。という名前のクラスの情報が見つかりませんでした。
-
[解決済み] Objective-C ブロックパラメータ 発行 このブロック宣言はプロトタイプではありません
-
[解決済み] ios8ではdidRegisterForRemoteNotificationsWithDeviceTokenは呼ばれないが、didRegister...Settingsは呼ばれる。
-
[解決済み] Stringをformatで作成するには?
-
[解決済み] CFBundleVersionとCFBundleShortVersionStringには、どのような値を使用すればよいですか?
-
[解決済み] HTTPの読み込みに失敗しました(エラーコード:-1200 [3:-9802])。
-
[解決済み] Objective C - 値で渡す、参照で渡す