这里是我的所有代码,用于播放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时,我是否错过了什么?
答案 0 :(得分:66)
检查手机是否处于静音模式。如果它是静音,请尝试将以下代码添加到viewDidLoad
:
Swift 2.3
try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, withOptions: [])
Swift 3
try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: [])
答案 1 :(得分:6)
对于Swift 4.2,将以下行放入viewDidLoad
do {
try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [])
}
catch {
print("Setting category to AVAudioSessionCategoryPlayback failed.")
}
答案 2 :(得分:2)
它可以100%工作,请尝试使用此导入AVKit, 导入AVFoundation并将以下代码放入viewDidLoad()方法中。
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, mode: AVAudioSessionModeDefault, options: [])
}
catch {
print("Setting category to AVAudioSessionCategoryPlayback failed.")
}
答案 3 :(得分:1)
检查iPhone是否处于静音模式,它是左上方2个按钮上方的按钮。允许静音模式的拨动开关。
答案 4 :(得分:0)
即使设备设置为静音,我也有多个视图控制器需要播放音频。因此,我没有更新每个Connect => OpenRequest(GET) => SendRequest
,而是在 AppDelegate.swift 文件中的viewDidLoad
方法中添加了以下内容。
didFinishLaunchingWithOptions
注意:
try? AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback)
AVFoundation
。答案 5 :(得分:0)
我尝试了接受的答案,但不幸的是它对我不起作用,失败并出现以下错误:
类型 'String' 没有成员 'playback
然后我跳转到定义,发现它以String值作为参数, 如果您有相同的错误,请使用以下代码
router.beforeEach(() => {
$('.navbar-collapse').collapse('hide'); //Be sure to import jquery
});