के लिए आर्टवर्क प्रदर्शित करना मैं वर्तमान में एक स्थानीय रूप से संग्रहीत एमपी 3 ट्रैक के लिए एल्बम आर्टवर्क प्रदर्शित करने की कोशिश कर रहा हूं। क्या कोई यह जानता है कि इसे पूरा करने के लिए स्विफ्ट में इस कलाकृति को कैसे लाया जाए?एमपी 3 फ़ाइल
मुझे यह समाधान मिला है (iOS AVFoundation: How do I fetch artwork from an mp3 file?) लेकिन कोड उद्देश्य सी में लिखा गया है। मैं बस अपने एमपी 3 में एम्बेडेड छवि को पकड़ना चाहता हूं और इसे अपने छवि दृश्य में प्रदर्शित करना चाहता हूं।
मैंने MPMediaItemArtwork के लिए एपीआई दस्तावेज को देखा है और एक उदाहरण मिला है जो मैं उद्देश्य सी में भी पूरा करने की कोशिश कर रहा हूं (http://www.codeitive.com/0zHjkUjUWX/not-able-to-get-the-uiimage-from-mpmediaitempropertyartwork.html) लेकिन समाधान के साथ नहीं आ सकता। मेरा कोड निम्नानुसार है:
import UIKit
import AVFoundation
import MediaPlayer
class ViewController: UIViewController {
let audioPath:NSURL! = NSBundle.mainBundle().URLForResource("SippinOnFire", withExtension: "mp3")
@IBOutlet var artistImage: UIImageView!
@IBOutlet var trackLabel: UILabel!
@IBOutlet var artistLabel: UILabel!
@IBOutlet var sliderValue: UISlider!
var player:AVAudioPlayer = AVAudioPlayer()
@IBAction func play(sender: AnyObject) {
let audioInfo = MPNowPlayingInfoCenter.defaultCenter()
println(audioInfo)
player.play()
//println("Playing \(audioPath)")
let playerItem = AVPlayerItem(URL: audioPath)
let metadataList = playerItem.asset.metadata as! [AVMetadataItem]
for item in metadataList {
if let stringValue = item.value {
println(item.commonKey)
if item.commonKey == "title" {
trackLabel.text = stringValue as? String
}
if item.commonKey == "artist" {
artistLabel.text = stringValue as? String
}
if item.commonKey == "artwork" {
if let audioImage = UIImage(data: item.value as! NSData) {
let audioArtwork = MPMediaItemArtwork(image: audioImage)
println(audioImage.description)
}
}
}
}
}
@IBAction func pause(sender: AnyObject) {
player.pause()
}
@IBAction func stop(sender: AnyObject) {
player.stop()
player.currentTime = 0;
}
@IBAction func sliderChanged(sender: AnyObject) {
player.volume = sliderValue.value
}
override func viewDidLoad() {
super.viewDidLoad()
var error:NSError? = nil
player = AVAudioPlayer(contentsOfURL: audioPath!, error: &error)
player.volume = 0.5;
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
यहां मेरे नमूना .mp3 फ़ाइल का एक स्क्रीन शॉट है। जैसा कि आप देख सकते हैं कि वास्तव में एल्बम आर्टवर्क है जो खोजक के "जानकारी प्राप्त करें" खंड में दिखाई देता है। मैंने यह सुनिश्चित करने के लिए अपने आईट्यून्स में। एमपी 3 भी खोला है और पुष्टि की है कि वहां "आर्टवर्क" टैब के साथ-साथ "जानकारी प्राप्त करें" अनुभाग में कलाकृति भी है।
हालांकि, मेरी छवि पर छवि को असाइन करने के लिए आमके का उपयोग करने का प्रयास करते समय मुझे लगता है कि "आर्टवर्क" के लिए कोई आम बात नहीं है।
धन्यवाद
बिल्कुल सही! यह वह समाधान था जो मेरे लिए काम करता था! आपकी सहायता के लिए धन्यवाद. तो क्या .comonmetadata के बजाय मेटाडेटा का उपयोग करना सही था? क्या दूसरे की तुलना में मेटाडेटा की गहराई से कवरेज में एक और है? कुडोस और चीयर्स! – Unconquered82