使用Swift和AVFoundation框架可以实现音频和视频的录制、播放、编辑和处理。以下是使用AVFoundation框架的一些常见操作:
- 创建一个AVPlayer对象,并设置要播放的音频或视频文件:
let url = URL(fileURLWithPath: "path/to/file")
let playerItem = AVPlayerItem(url: url)
let player = AVPlayer(playerItem: playerItem)
- 播放视频或音频:
player.play()
- 监听播放状态变化:
player.addPeriodicTimeObserver(forInterval: CMTimeMake(value: 1, timescale: 10), queue: DispatchQueue.main) { time in
// handle time update here
}
- 暂停播放:
player.pause()
- 改变播放速度:
player.rate = 2.0 // double speed
- 将音频或视频组合成一个AVComposition对象:
let composition = AVMutableComposition()
let audioAsset = AVURLAsset(url: URL(fileURLWithPath: "path/to/audio/file"))
let videoAsset = AVURLAsset(url: URL(fileURLWithPath: "path/to/video/file"))
let compositionAudioTrack = composition.addMutableTrack(withMediaType: .audio, preferredTrackID: kCMPersistentTrackID_Invalid)
let compositionVideoTrack = composition.addMutableTrack(withMediaType: .video, preferredTrackID: kCMPersistentTrackID_Invalid)
try compositionAudioTrack?.insertTimeRange(CMTimeRangeMake(start: .zero, duration: audioAsset.duration), of: audioAsset.tracks(withMediaType: .audio)[0], at: .zero)
try compositionVideoTrack?.insertTimeRange(CMTimeRangeMake(start: .zero, duration: videoAsset.duration), of: videoAsset.tracks(withMediaType: .video)[0], at: .zero)
- 将AVComposition对象导出成一个新的音频或视频文件:
let exporter = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetHighestQuality)
exporter?.outputFileType = .mp4
let outputURL = URL(fileURLWithPath: "path/to/output/file")
exporter?.outputURL = outputURL
exporter?.exportAsynchronously(completionHandler: {
// handle export completion/failure here
})
以上是一些基本操作,AVFoundation框架还有很多高级特性,可以根据具体需求进行学习和使用。