如何使用AVPlayer擦除音频?

时间:2014-03-28 06:37:04

标签: ios avfoundation

我正在使用seekToTime作为AVPlayer。它工作正常,但我希望能够在浏览视频时听到音频,就像Final Cut或其他视频编辑器的工作原理一样。只是寻找想法或者我错过了一些明显的东西。

1 个答案:

答案 0 :(得分:0)

执行此操作的方法是在视频旁边异步清理同时播放的AVplayer。我是这样做的(在Swift 4中):

// create the simultaneous player and feed it the same URL:
    let videoPlayer2 = AVPlayer(url: sameUrlAsVideoPlayer!)
    videoPlayer2.volume = 5.0

//set the simultaneous player at exactly the same point as the video player.
     videoPlayer2.seek(to: sameSeekTimeAsVideoPlayer)

// create a variable(letsScrub)that allows you to activate the audio scrubber when the video is being scrubbed:
    var letsScrub: Bool?
//when you are scrubbing the video you will set letsScrub to true:
    if letsScrub == true {audioScrub()}

//create this function to scrub audio asynchronously:
    func audioScrub() {
        DispatchQueue.main.async {

//set the variable to false so the scrubbing does not get interrupted:
        self.letsScrub = false

//play the simultaneous player
        self.videoPlayer2.play()

//make sure that it plays for at least 0.25 of a second before it stops to get that scrubbing effect:
        DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) {

//now that 1/4 of a second has passed (you can make it longer or shorter as you please) - pause the simultaneous player
            self.videoPlayer2.pause()

//now move the simultaneous player to the same point as the original videoplayer:
            self.videoPlayer2.seek(to: self.sameSeekTimeAsVideoPlayer)

//setting this variable back to true allows the process to be repeated as long as video is being scrubbed:
            self.letsScrub = true
        }
}
}