2015-04-21 20 views
7

Kullanıcıların canlı bir video akışını yayınlayabileceği ve bir dizi sunum slaytıyla senkronize edebileceği bir video akış platformumuz var. Yayını iOS'ta görüntülemek için HTTP Canlı Akışını kullanıyoruz. IOS'taki akıştaki slaydı doğru zamanda göstermek için Apple'ın Quicktime Javascript API'sı tarafından sağlanan qt_timedmetadataupdated etkinliğini dinliyorduk. Bu yöntem burada tarif edilir:HTTP Live Streaming: iOS8'de Javascript kullanarak ID3 etiketleri olarak gömülü zamanlanmış meta verileri nasıl dinleyebilirim?

http://www.wowza.com/forums/content.php?355-How-to-debug-timed-data-events-%28ID3-tags%29-from-Apple-HLS-streams-in-iOS-devices

Ancak iOS8 bu yöntem artık bu yüzden alternatif bir çözüm bulmaya çalışıyor çalışır.

Bunu nasıl yapabileceğimiz hakkında bir fikri olan var mı?

Burada anlatıldığı gibi bir "bant içi meta veri metin track" için kontrol ediyor yapmak başardınız ilerlemenin tek bit: Aşağıda bir örnek test sayfası kurdum

https://github.com/videojs/videojs-contrib-hls#in-band-metadata

bir metin parça olan kind var olup olmadığını her 500ms denetler bir aralık oluşturduk kodunda

http://jsbin.com/vohicoxegi/1/edit?html,js,output

: FlowPlayer ve flashls plugin kullanarak özelliği metadata. Zamanlanmış meta veriler akışa enjekte edildiğinde, bu metin parçalarından birinin oluşturulduğunu fark ettim. Ama sorun şu ki (önceden bahsedilen) slaytları doğru bir şekilde senkronize etmem gereken zamanlanmış meta verilerdeki verilere erişmenin bir yolu yoktur.

Sadece canlı akışla ilgilendiğimi lütfen unutmayın. Mevcut bir medya dosyasını oynatmak sorun değil.

+0

https://stackoverflow.com/questions/44535465/how-to-fetch-resolution-supported-by-video-m38u-file-url-in-swift bana teşekkür ederiz Yardım Gelişmiş .... –

cevap

4

Demir Ahmet'in çözüm neredeyse doğruydu. Bir parça olayı gerçekleştiğinde, mode özelliğini hidden olarak ayarlamanız gerekir, aksi takdirde cuechange olayları tetiklenmez. İşte tam örnek:

$(videoElement)[0].textTracks.addEventListener('addtrack', function(addTrackEvent) { 
    var track = addTrackEvent.track; 
    track.mode = 'hidden'; 

    track.addEventListener('cuechange', function(cueChangeEvent) { 
    // do what you want with the cueChangeEvent 
    }); 
}); 
+0

bildirim söz konusu olduğunda. Cuechange olayları ateş ediyor. Ama ben ipuçları içindeki verilere ulaşamıyorum. Yani, ben bir ID3 etiketinde "merhaba dünya" gönderdim, bu metni almak mümkün görünmüyor. Sadece söylüyorum * bir şey oldu *. – Robert

+0

@Robert Verileri cueChangeEvent.target.activeCues [0] .value.data'da buldum. 'cueChangeEvent' argümanı 'cuechange' olay dinleyicisine iletildi. –

+0

https://stackoverflow.com/questions/44535465/how-to-fetch-resolution-supported-by-video-m38u-file-url-in-swift Yardım et Bana ileride teşekkür ederim .... –

0

Metin yollarının gitmenin yolu olduğunu düşünüyorum. Ben de daha önce qt_timedmetadataupdated ve bu böyle iOS8 üzerinde güzel çalışma var kullanılan:

$(videoElement).textTracks.addEventListener('addTrack', function(addTrackEvent) { 
    var track = addTrackEvent.track; 
    track.addEventListener('cuechange', function(cueChangeEvent) { 
    and so on... 
    }) 
}) 
+0

Yardımlarınız için teşekkürler Mike. 'Cuechange' olayının ateş etmediğini buluyorum. Bazı yeni meta veriler, "cuechange" ile gönderildiğinde "addtrack" olayı tetiklenir. 'Track' nesnesini incelediğimde' cues' ve 'activeCues' özellikleri boştur. –

+0

https://stackoverflow.com/questions/44535465/how-to-fetch-resolution-supported-by-video-m38u-file-url-in-swift Yardım Edin bana yardımcı olun .... –

İlgili konular