voici tous mes codes pour jouer un mp4, le mp4 joue mais aucun son ne sort
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()
}
}
je suis sûr qu'il a des sons, car je peux entendre lorsque je joue sur le mp4 en utilisant VLC, ai-je raté quelque chose?
Vérifiez que votre téléphone est en mode silencieux ou non. S'il est silencieux, essayez d'ajouter le code ci-dessous à viewDidLoad
:
Swift 2.3
try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, withOptions: [])
Swift 3
try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: [])
Pour Swift 4.2, mettez les lignes suivantes dans viewDidLoad
do {
try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [])
}
catch {
print("Setting category to AVAudioSessionCategoryPlayback failed.")
}
Vérifiez si l'iPhone a le mode silencieux activé, c'est un bouton au-dessus des 2 boutons en haut à gauche. Un interrupteur à bascule qui permet le mode silencieux.
Son fonctionnement à 100%, essayez cet import AVKit, importez AVFoundation et mettez le code ci-dessous dans la méthode viewDidLoad ().
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, mode: AVAudioSessionModeDefault, options: [])
}
catch {
print("Setting category to AVAudioSessionCategoryPlayback failed.")
}
J'avais plusieurs contrôleurs de vue qui devaient lire l'audio même lorsque l'appareil était réglé sur muet. Ainsi, au lieu de mettre à jour chaque viewDidLoad
, j'ai ajouté ce qui suit à la méthode didFinishLaunchingWithOptions
dans le fichier AppDelegate.Swift.
try? AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback)
Remarques:
AVFoundation
try?
.