Metatron 1.2.0

Metatron 1.2.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
Released最后发布2017年5月
SwiftSwift 版本3.1
SPM支持 SPM

Almazrafi 维护。



Metatron 1.2.0

  • Almaz Ibragimov

安装 使用 许可证

描述

Metatron 是一个用于编辑音频文件元信息的 Swift 框架。目前它支持

标识

  • ID3v1 标签 (v1.0, v1.1, vExt1.0, vExt1.1)
  • ID3v2 标签 (v2.2, v2.3, v2.4)
  • Lyrics3 标签 (v1.0, v2.0)
  • APE 标签 (v1.0, v2.0)

格式

  • MPEG (MP3, v1.0 层 I-II, v2.0 层 I-III, v2.5 层 I-III)

安装

兼容性

  • 平台
    • macOS 10.10+
    • iOS 8.0+
    • watchOS 2.0+
    • tvOS 9.0+
  • Xcode 8.0
  • Swift 3.0

使用

为读取和写入 MPEG 媒体文件打开

do {
    // Open the MPEG media from file path

    let media = try MPEGMedia(fromFilePath: "sample.mp3", readOnly: false)

    // Use MPEGMedia(fromData: [UInt8], readOnly: Bool) to load from memory


    // Get MPEG properties

    print("Version: " + String(describing: media.version))
    print("Layer: " + String(describing: media.layer))

    print("Duration (seconds): " + String(media.duration / 1000.0))

    print("Bit rate: " + String(media.bitRate))
    print("Sample rate: " + String(media.sampleRate))

    print("Channels: " + String(media.channels))

    print("Bit rate mode: " + String(describing: media.bitRateMode))
    print("Channel mode: " + String(describing: media.channelMode))


    // Get Tag information

    print("Title: " + media.title)
    print("Artists: " + media.artists.joined(separator: " & "))

    print("Album: " + media.album)
    print("Genres: " + media.genres.joined(separator: "/"))

    print("Release date: " + String(describing: media.releaseDate))

    print("Track number: " + String(describing: media.trackNumber))
    print("Disc number: " + String(describing: media.discNumber))

    let coverArtImage = UIImage(data: Data(media.coverArt.data))

    print("Copyrights: " + media.copyrights.joined(separator: "\n"))
    print("Comments: " + media.comments.joined(separator: "\n"))

    print("Lyrics: " + String(describing: media.lyrics))


    // Write Tag information

    media.title = "Title"
    media.artists = ["Artist"]

    media.album = "Album"
    media.genres = ["Genre"]

    media.releaseDate = TagDate(year: 2016, month: 11, day: 17)

    media.trackNumber = TagNumber(3, total: 4)
    media.discNumber = TagNumber(1)

    if let newCoverArtImage = UIImage(contentsOfFile: "sample.png") {
        if let pngRepresentation = UIImagePNGRepresentation(newCoverArtImage) {
            media.coverArt = TagImage(data: [UInt8](pngRepresentation))
        }
    }

    media.copyrights = ["Copyright"]
    media.comments = ["Comment"]

    media.lyrics = TagLyrics(pieces: [TagLyrics.Piece("Lyrics text piece", timeStamp: 1230)])


    // Save the information to the mp3 file

    if !media.save() {
        print("The file is corrupted and cannot be saved or it is read only.")
    }

} catch MediaError.invalidFormat {
    print("The file is not MPEG.")

} catch MediaError.invalidFile {
    print("The file does not exist.")

} catch MediaError.invalidData {
    print("The file or data is empty.")

} catch {
    print("Unknown error")
}

许可证

Metatron 及其资产遵循 MIT 许可证