2011-10-10 20 views
5

Şu anda android için bir video oynatıcı geliştiriyorum. Mevcut altyazıyı gösteren basit bir metin görünümü oluşturdum.Android Native Video oynatıcı altyazılı

Sorun şu ki: MediaPlayer getCurrentPosition() yöntemi yalnızca birkaç saniye içinde bana zaman kazandırır. Ve altyazıyı filmle doğru şekilde senkronize etmek için bu değere milisaniyede ihtiyacım var.

GetCurrentPosition öğesinin bana milisaniye cinsinden süre vermesi beklenir, ancak saniye cinsinden süreyi verir * 1000 (her sayı "000" ile biter).

  1. Bunu yapmanın daha iyi bir yolu biliyor musunuz?
  2. Zamanı milisaniye cinsinden nasıl alabilirim?
  3. Tam olarak ikinci (000 ms) zamanda bir olay oluşturmak da işe yarar.

Herhangi bir öneriniz var mı?

+0

; onFinish içinde Süre zamanlayıcı tamamlandıktan sonra
6)() Eğer 2.

Thats bunu STEP kaydedilen neyi millisecondLeft zamanla eski sayacını başlayabilir bana bağlantıyı paylaşırmısın ?? –

cevap

3

Herhangi birinin ihtiyaç duyması halinde, çözümümü yaptım.

Altyazı modülünü geliştirdim. Doğru milisaniye değerini elde etmek için, sistem ve oynatıcı zamanlayıcıları için bir senkronizasyon yaptım. video oynatma

Her 20 saniyede bir bu yordamı yapın:

  1. akım saniye mediaplayer (ler var saniye) sonuç s + 1 olana kadar
  2. akım saniye mediaplayer sor sor (s0)

    : Ben geçerli film milisaniye istiyorsanız
  3. , Şimdi o zaman (m0)

için sistem saatini (milisaniye) alın

  1. şimdiki sistem saatini (millisecons) (m1)
  2. Film gerçek zamanı alın: s0 + (M1-m0)

Kolay ve senkronize altyazılar sonuçlandı;))

+2

kod paylaşılabilir. Benzer gereksinim üzerinde çalışıyorum. Herhangi bir yardım – maxwells

+0

takdir edilecektir Ne yazık ki kod telif hakkı saklıdır. Buna sahip değilim:/ – inversus

+0

Ama bunun parçalarını paylaşabilirsiniz .... – user1767754

0

1 Altyazı dosyasını ayrıştırın
2) Player.getDuration() öğesine ayarlayarak CounterTimer sınıfından faydalanın ve sonra seçiminize göre bir kestirim yöntemini (her aralığın onaylanmasıyla adlandırılır) ayarlayın. player.getCurrentPosition() kullanarak; (Bunun milisaniyede size zaman kazandıracağını unutmayın). Lütfen ayrıca milisaniye değerini saklamayı ve saklamayı da unutmayın.
3) istediğiniz biçime dönüştürün ve zaman hashmap veya dizi ile eşleştirin.
4) Oynatıcıya yerleştirilen TextView'unuzu uygun Metin ile güncelleyin.
5) Zamanlayıcıyı süre boyunca iptal edin (süre ile yeni bir Zamanlayıcı uygulayabilirsiniz). u video.Can içinde altyazı ekleme öğrendikleri yerden)

+0

Tnks. Player.getCurrentPosition(), saniyeler içinde değeri döndürüyordu: 53000ms, 54000ms. Gerçek ms almak için kullanmak imkansızdı. – inversus