6

Şu anda Android Jelly Bean MediaCodec API ile basit bir video oynatıcısı geliştirmek için çalışıyorum.Android MediaCodec API videosu çok hızlı oynar

Parçaları ayıkladım, ses ve videoları ayrı iş parçacıklarında çalıyorum. Sorun, video parçasının her zaman çok hızlı çalınmasıdır.

Sorun nerede gizlenebilir?
AudioTrack aracılığıyla ses çalınması ve videonun yüzeye işlenmesi dışında, hem ses hem de video neredeyse aynı şekilde ele alınır.

+0

Bunu nereden buldunuz? – BlueVoodoo

+0

Lütfen kodunuzu gönderir misiniz? – itsmeagain

+0

hata ayıklamada yararlı hanımefendi aynı sorunu yaşıyorum, anladınız mı? – xiaowoo

cevap

3

Maksimum hızda kareler oluşturursanız, çoğu aygıtta 60 fps'ye vuracaksınız. Kodlayıcı tarafından sağlanan sunum zaman damgalarına göre ilerlemeniz gerekir. Örneğin, giriş Android tarafından desteklenen bir biçimse (örneğin, tipik bir .mp4 dosyası), her bir kareyi çıkarmak için MediaExtractor sınıfını kullanabilirsiniz. Zaman damgası getSampleTime() ile alınabilir. Oluşturmayı art arda gelen karelerdeki zaman damgaları arasındaki farkla geciktirmek istiyorsunuz - ilk karenin sıfır zaman damgası olacağını varsaymayın. Ayrıca, video karelerinin sabit bir oranda (örneğin 30 fps) göründüğünü varsaymayın. Bazı kaynaklar için çerçeveler düzensiz olarak gelir.

Grafika, özellikle SpeedControlCallback sınıfındaki "Videoyu oynat (TextureView)" örneğine bakın. gen-eight-rects.mp4 videosu, egzersiz yapmak için değişken çerçeve süreleri kullanır. "60 fps'de çal" kutusunu işaretlerseniz, sunum zaman damgaları göz ardı edilir.

İlgili konular