如何在 SWIFT 中获得 MP3 比特率
How to get an MP3 bit rate in SWIFT
我正在寻找一种方法来为来自 url link.
的 mp3 音频获取类似 128kbps
或 320kbps
的 mp3 比特率
我有一个 UITableView
从 url 列表加载文件列表,我想显示音频质量。
我试过使用 AVAudioPlayer
和 AVPlayer
但没有成功。
请帮忙,我怎样才能做到这一点?
do{
let audioPlayer = try AVAudioPlayer(contentsOf:audioURL)
print(audioPlayer.settings)
if #available(iOS 10.0, *) {
print(audioPlayer.format)
} else {
// Fallback on earlier versions
}
}catch {
print("Error getting the audio file")
}
我找到了 AVAudioFormat class 的变量名 sampleRate。你试过打电话给audioPlayer.format.sampleRate吗?
只是使用公式。就是这么简单..
var bitrate: Int { // kbps
if size > 0 && duration > 0 {
return size * 8 / 1000 / duration
}
分机
import AVFoundation
extension AVURLAsset {
var fileSize : Int? {
let keys: Set<URLResourceKey> = [.totalFileSizeKey, .fileSizeKey]
let resourceValues = try? url.resourceValues(forKeys: keys)
return resourceValues?.fileSize ?? resourceValues?.totalFileSize
}
// kbps
var bitrate : Int {
if (fileSize ?? 0) > 0 && duration.seconds > 0 {
return Int(Double(fileSize ?? 0) * 8 / 1000 / duration.seconds)
}
return 0
}
}
用法
// bitrate
let avAsset = AVURLAsset.init(url: mp3Url)
let bitrate = avAsset.bitrate
print("avAsset.bitrate: \(bitrate)")
我正在寻找一种方法来为来自 url link.
的 mp3 音频获取类似128kbps
或 320kbps
的 mp3 比特率
我有一个 UITableView
从 url 列表加载文件列表,我想显示音频质量。
我试过使用 AVAudioPlayer
和 AVPlayer
但没有成功。
请帮忙,我怎样才能做到这一点?
do{
let audioPlayer = try AVAudioPlayer(contentsOf:audioURL)
print(audioPlayer.settings)
if #available(iOS 10.0, *) {
print(audioPlayer.format)
} else {
// Fallback on earlier versions
}
}catch {
print("Error getting the audio file")
}
我找到了 AVAudioFormat class 的变量名 sampleRate。你试过打电话给audioPlayer.format.sampleRate吗?
只是使用公式。就是这么简单..
var bitrate: Int { // kbps
if size > 0 && duration > 0 {
return size * 8 / 1000 / duration
}
分机
import AVFoundation
extension AVURLAsset {
var fileSize : Int? {
let keys: Set<URLResourceKey> = [.totalFileSizeKey, .fileSizeKey]
let resourceValues = try? url.resourceValues(forKeys: keys)
return resourceValues?.fileSize ?? resourceValues?.totalFileSize
}
// kbps
var bitrate : Int {
if (fileSize ?? 0) > 0 && duration.seconds > 0 {
return Int(Double(fileSize ?? 0) * 8 / 1000 / duration.seconds)
}
return 0
}
}
用法
// bitrate
let avAsset = AVURLAsset.init(url: mp3Url)
let bitrate = avAsset.bitrate
print("avAsset.bitrate: \(bitrate)")