Bu https://jmacmullin.wordpress.com/2010/11/03/adding-meta-data-to-video-in-ios/ numaralı belgeyi çoğaltmaya çalışıyorum. İşte Swift ios'ta Zamanlanmış Meta Verileri Alma 8 M3U8'den Video Akışı
http://cloudfields.net/blog/metadata-audiostream-mpmovieplayercontroller/
Video çalarken ... İşteObjective C Timed Metadat in HLS stream
benzer bir şey için ek bir bağlantıdır ... eylem Jake'in kodunun bir video Zamanlanmış meta veriler, tıklandığında web görünümünde belirli bir youtube URL'sine yönlendirmek için bir düğmeyi güncellemelidir. Videom yaklaşık 15 dakika uzunluğunda ve 6 adet zamanlanmış meta veri URL'sine sahip.Swift'de bunun nasıl gerçekleştirileceğine dair herhangi bir kod veya belge bulamıyorum. Jake'in Hedef C kodunu Bildirim çağrısı için değiştirmeyi başardım. Swift Kod
// Register for meta-data notifications
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self
selector:@selector(metadataUpdate:)
name:MPMoviePlayerTimedMetadataUpdatedNotification
object:nil];
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "metadataUpdated",
name: MPMoviePlayerTimedMetadataUpdatedNotification,
object: nil)
Jake'in Fonksiyon
Actor *actor = [[Actor alloc] init];
if ([player timedMetadata]!=nil && [[player timedMetadata] count] > 0) {
for (MPTimedMetadata *metadata in [player timedMetadata]) {
if ([[metadata.allMetadata valueForKey:@"key"] isEqualToString:@"TPE1"]) {
[actor setName:[metadata.allMetadata objectForKey:@"value"]];
}
if ([[metadata.allMetadata valueForKey:@"key"] isEqualToString:@"WXXX"]) {
NSURL *url = [NSURL URLWithString:[metadata.allMetadata objectForKey:@"value"]];
[actor setProfileURL:url];
}
}
}
// display some UI element for the user to interact with
Beni hayat için Swift
func metadataUpdated (notification: NSNotification!) {
if moviePlayer?.timedMetadata != nil && moviePlayer?.timedMetadata.count > 0 {
for MPTimedMetadata in [moviePlayer?.timedMetadata] {
if MPTimedMetadata?.description == ("TPE1") {
let name = ("value")
}
if MPTimedMetadata?.description == ("WXXX") {
var url = NSURL.observeValueForKeyPath("value")
}
}
}
println("Things are kind of working")
}
}
I meta açmak anlamaya olamaz olsa herhangi bir işlem yapılabilir kod içine. Meta verilerde taşınan URL'ye yönlendiren, ancak bir Dizeye dönüştürülemeyen bir düğme oluşturmam gerekiyor. Herhangi bir yardım büyük beğeni topluyor. İşte şimdiye kadar sahip olduğum şey.
import UIKit
import MediaPlayer
class ViewController: UIViewController {
var moviePlayer: MPMoviePlayerController?
var youtube = ""
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let url = NSURL(string: "http://path/to/video.m3u8")
moviePlayer = MPMoviePlayerController(contentURL: url)
if let player = moviePlayer {
player.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height)
player.view.sizeToFit()
player.scalingMode = MPMovieScalingMode.None
player.movieSourceType = MPMovieSourceType.Streaming
//player.repeatMode = MPMovieRepeatMode.One
player.play()
self.view.addSubview(player.view)
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "metadataUpdated:",
name: MPMoviePlayerTimedMetadataUpdatedNotification,
object: nil)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func metadataUpdated (notification: NSNotification!) {
if moviePlayer?.timedMetadata != nil && moviePlayer?.timedMetadata.count > 0 {
for MPTimedMetadata in [moviePlayer?.timedMetadata] {
if MPTimedMetadata?.description == ("TPE1") {
let name = ("value")
}
if MPTimedMetadata?.description == ("WXXX") {
var url = NSURL.observeValueForKeyPath("value")
}
}
}
println("Things are kind of working")
}
}
ben, sorun URL ayrıştırma veya bir dizeye URL dönüştürme yaşıyorsanız sizin sorunu anlamak emin değilim? – Vig
Bir dizeye dönüştürmede sorun yaşıyorum. Sorduğunuz için teşekkürler. Sonuçlarımı göndermemi hatırladım. Teşekkürler! –