6

मैं वर्तमान में एक साधारण वीडियो प्लेयर विकसित करने के लिए एंड्रॉइड जेली बीन मीडियाकोडेक एपीआई के साथ काम कर रहा हूं।एंड्रॉइड मीडियाकोडेक एपीआई वीडियो बहुत तेजी से खेलता है

मैं ट्रैक निकालता हूं, अलग-अलग धागे में ऑडियो और वीडियो चलाता हूं। समस्या यह है कि वीडियो ट्रैक हमेशा बहुत तेजी से खेला जाता है।

समस्या छिपी जा सकती है?
दोनों ऑडियो और वीडियो का इलाज लगभग उसी तरह किया जाता है, ऑडियो को ऑडियोट्रैक के माध्यम से बजाया जाता है और वीडियो को सतह पर प्रस्तुत किया जाता है।

+0

आप इस पर कहां गए? – BlueVoodoo

+0

क्या आप अपना कोड पोस्ट कर सकते हैं। यह उपयोगी सराय डिबगिंग – itsmeagain

+0

होगा, मुझे एक ही समस्या है, क्या आपने इसे समझ लिया है? – xiaowoo

उत्तर

3

यदि आप अधिकतम गति पर फ़्रेम प्रस्तुत करते हैं तो आप अधिकांश उपकरणों पर 60fps दबाएंगे। आपको एन्कोडर द्वारा प्रदत्त प्रस्तुति समय टिकटें के अनुसार इसे गति देने की आवश्यकता है।

उदाहरण के लिए, यदि इनपुट एंड्रॉइड द्वारा समर्थित प्रारूप (उदाहरण के लिए एक ठेठ .mp4 फ़ाइल) है, तो आप प्रत्येक फ्रेम निकालने के लिए MediaExtractor कक्षा का उपयोग कर सकते हैं। टाइम स्टैम्प को getSampleTime() के साथ पुनर्प्राप्त किया जा सकता है। आप लगातार फ्रेम पर टाइमस्टैम्प के बीच अंतर से प्रतिपादन में देरी करना चाहते हैं - मान लें कि पहले फ्रेम में शून्य का टाइमस्टैम्प होगा।

इसके अलावा, यह न मानें कि वीडियो फ्रेम स्थिर दर (जैसे 30fps) पर दिखाई देते हैं। कुछ स्रोतों के लिए फ्रेम असमान रूप से पहुंचेंगे।

Grafika में विशेष रूप से SpeedControlCallback कक्षा में "वीडियो (TextureView)" उदाहरण देखें। gen-eight-rects.mp4 वीडियो इसका उपयोग करने के लिए परिवर्तनीय फ्रेम अवधि का उपयोग करता है। यदि आप "60fps पर प्ले करें" बॉक्स को चेक करते हैं, तो प्रस्तुति समय टिकटें अनदेखा कर दी जाती हैं।

संबंधित मुद्दे