2016-04-04 21 views
1

http (HLS) aracılığıyla internetten içerik akışı yapmak için Andorid ExoPlayer kullanıyorum.Android ExoPlayer seçili parçayı değiştiriyor

player.setSelectedTrack(TYPE_VIDEO, 1)

örneğin alıyorum ve HTTP 403 hatası Yasak - Ben oyuncu başlattığınızda ben oyun içeriğinin kalitesini değiştirmeye çalıştığınızda Tamam çalışma, ancak. Oynatıcıyı başlatırsam ve içeriği tekrar çalıştırırsam, bu iyi olur. Demo projesini kaynak olarak kullanıyorum.

Bu davranışa neyin neden olduğunu biliyor musunuz? Başlangıç ​​akışını oynatma ve yolu değiştirme arasındaki fark nedir?

Oynatıcıyı başlatırken, url oluşturucuya iletildiğinden, tüm oynatıcının yeniden başlatılmadan akışını sıfırlamanın bir yolu var mı?

cevap

1

Sorunu buldum. ExoPlayer'a gönderdiğim URL harici bir API'den döndü ve oldukça uzun bir süre oldu. Bu yüzden aslında "|" (http://my_url_1.m3u8|http://my_url_2.m3u8) ile birleştirilen 2 URL olduğunu fark etmedim. Tuhaf olan şey, eğer bu dizeyi ExoPlayer'a aktarırsanız, hatasız bir akışı oynatırsınız. Fakat eğer oynatma akışının kalitesini değiştirmeye çalışırsanız, sorunlarınız vardır.

1

SetSelectedTrack() öğesini kullanarak akış kalitesini değiştirmezsiniz. Bu, mevcut yayınlardan neyin çalınacağını seçmek için kullanılır (sesin hangi dili, altyazı veya videolar için oldukça nadirdir, ancak örneğin bir spor etkinliğinin farklı kamera açılarını ayarlayabilirsiniz).

Tüm bu akışların birden çok kalite düzeyi olabilir ve ExoPlayer'ın FormatEvaluator'ı ağ koşullarına göre hangi kalitede yükleneceğini seçer.

Yeni bir parça seçtiğinizde kod çözücü farklıysa, oynatmaya devam etmek için müzikçalar yeniden başlatılmalıdır.

HLS bildirimini (.m3u8) el ile karşıdan yüklemeyi öneririm ve sonra listelenen bilgileri kontrol edin, URL'leri tarayıcıda tek tek deneyin. Hepsi işe yaramalı, bu testte 403 testi almamalısınız.

İlgili konular