LoginSignup
0
0

More than 3 years have passed since last update.

動画のAVAssetから音声データのみを抽出し再生

Last updated at Posted at 2020-06-08

元動画のAVAssetから音声データ(Audio track)のみ抽出

let asset = AVURLAsset(url: url)
let track = asset.tracks(withMediaType: .audio)[0]

新しいAVAssetを生成し、そのAudio trackも生成

let newAsset = AVMutableComposition()
guard let audioTrack = newAsset.addMutableTrack(withMediaType: .audio, preferredTrackID: kCMPersistentTrackID_Invalid) else { return }

newAsset(音声のみのAVAsset)に動画から抽出したAudio trackを挿入

do {
      try audioTrack.insertTimeRange(track.timeRange, of: track, at: .zero)
    } catch let error {
        print(error)
    }

AVPlayerで再生

let player = AVPlayer(playerItem: AVPlayerItem(asset: newAsset))
playerLayer.player = player
playerLayer.player?.play()

コード全体

let asset = AVURLAsset(url: url)
let track = asset.tracks(withMediaType: .audio)[0]

let newAsset = AVMutableComposition()
guard let audioTrack = newAsset.addMutableTrack(withMediaType: .audio, preferredTrackID: kCMPersistentTrackID_Invalid) else { return }

do {
      try audioTrack.insertTimeRange(track.timeRange, of: track, at: .zero)
    } catch let error {
        print(error)
    }

let player = AVPlayer(playerItem: AVPlayerItem(asset: newAsset))
playerLayer.player = player
playerLayer.player?.play()

参考にした記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0