ここに私のmp4を再生するためのすべてのコードがあります、mp4は再生されていますが音が出ません
import UIKit
import AVFoundation
class ViewController: UIViewController {
@IBOutlet weak var containerView: UIView!
var playerLayer:AVPlayerLayer!
var player:AVPlayer!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let path = NSBundle.mainBundle().pathForResource("huoguo", ofType: "mp4")
let url = NSURL(fileURLWithPath: path!)
let asset = AVAsset(URL: url)
let playerItem = AVPlayerItem(asset: asset)
self.player = AVPlayer(playerItem: playerItem)
self.playerLayer = AVPlayerLayer(player: player)
self.playerLayer.frame = CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.width * 9 / 16)
self.containerView.layer.addSublayer(playerLayer)
//self.playerLayer.player?.volume = 1
self.playerLayer.player?.play()
}
}
vLCを使用してmp4を再生すると聞こえるので、音が聞こえると確信しています。何か聞き逃していませんか?
スマートフォンがサイレントモードかどうかを確認します。サイレントの場合は、以下のコードをviewDidLoad
に追加してください。
Swift 2.3
try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, withOptions: [])
スウィフト3
try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: [])
Swift 4.2の場合、次の行をviewDidLoad
に入れます
do {
try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [])
}
catch {
print("Setting category to AVAudioSessionCategoryPlayback failed.")
}
IPhoneのサイレントモードがオンになっているかどうかを確認します。これは、左上の2つのボタンの上にあるボタンです。サイレントモードを可能にするトグルスイッチ。
100%機能しているので、このインポートAVKitを試してAVFoundationをインポートし、viewDidLoad()メソッドのコードの下に配置してください。
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, mode: AVAudioSessionModeDefault, options: [])
}
catch {
print("Setting category to AVAudioSessionCategoryPlayback failed.")
}
デバイスがミュートに設定されている場合でも、オーディオを再生する必要がある複数のView Controllerがありました。したがって、すべてのviewDidLoad
を更新する代わりに、AppDelegate.SwiftファイルのdidFinishLaunchingWithOptions
メソッドに以下を追加しました。
try? AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback)
ノート:
AVFoundation
try?
。