2015-11-10 9 views
6

मैं एक एंड्रॉइड वीडियो ऐप विकसित कर रहा हूं जहां मुझे मौजूदा फ्रेम संख्या को विराम मोड में प्रदर्शित होने वाले वीडियो के लिए प्राप्त करने की आवश्यकता है।एंड्रॉइड: एक्सोप्लेयर - वीडियो से वर्तमान फ्रेम नंबर प्राप्त करें

मुझे अपने सर्वर को वर्तमान में वीडियो में रुकने वाले फ्रेम नंबर को भेजने की आवश्यकता है और उस फ्रेम/समय के बारे में वस्तुओं की एक सूची वापस प्राप्त करने की आवश्यकता है, अभी मैं वर्तमान रुका हुआ समय मिलीसेकंड में भेज रहा हूं, लेकिन यह काफी काम नहीं करता है ठीक है, क्योंकि सर्वर उस समय के आधार पर गणना की गई विशिष्ट फ्रेम पर भेजे गए समय की तुलना करता है, लेकिन कभी-कभी तुलना सटीक नहीं होती है।

मैं जानता हूँ कि अगर तुम MediaMetaDataRetriever का उपयोग आपको लगता है कि फ्रेम से एक बिटमैप प्राप्त कर सकते हैं, और मैंने किया, लेकिन यह बिटमैप छवि देता है और क्या मैं जरूरत है एक सूचकांक है। मैं एक्सपोप्लेयर का उपयोग कर रहा हूं (मुझे एमपी 4 और एचएलएस के लिए यह सुविधा चाहिए, अगर यह मायने रखता है)।

क्या वीडियो से उस जानकारी को प्राप्त करने का कोई तरीका है?

+0

वास्तव में अच्छा बिंदु मैं – michael

+0

का पालन कर रहा हूं मुझे वर्तमान फ्रेम संख्या को भी मिलीसेकंड में समय नहीं पता होना चाहिए। यदि आप फ्रेम करने के लिए मिलीसेकंड की गणना करते हैं, तो आपको अक्सर एक गोल त्रुटि मिलती है ताकि फ्रेम सटीक न हो। – jclova

उत्तर

1

मैं अपने समस्या का समाधान पोस्ट, आदेश सटीक फ्रेम समय मैं बस ExoPlayer पुस्तकालय से MediaCodecVideoTrackRenderer.java वर्ग बढ़ाया और जो समारोह में है lastOutputBufferTimestamp के मान का उपयोग किया पाने के लिए:

@Override 
protected boolean processOutputBuffer(long positionUs, long elapsedRealtimeUs, 
             MediaCodec codec, ByteBuffer buffer, MediaCodec.BufferInfo bufferInfo, int bufferIndex, 
             boolean shouldSkip) { 
    boolean processed = super.processOutputBuffer(positionUs, elapsedRealtimeUs, codec, buffer, 
      bufferInfo, bufferIndex, shouldSkip); 
    if (!shouldSkip && processed) { 
     lastOutputBufferTimestamp = bufferInfo.presentationTimeUs; 
    } 
    return processed; 
} 

यह मुझे सही समय देता है, न कि आखिरी बार, mPlayer.getDuration() या ऐसा कुछ। यदि आपके पास अपने वीडियो में निरंतर एफपीएस है तो आप इसे विभाजन से गणना कर सकते हैं और फ्रेम की संख्या प्राप्त कर सकते हैं। सटीक फ्रेम समय जानने के लिए यह बस मेरे लिए पर्याप्त था।

मैं एक्सपोप्लेयर संस्करण r1.5.3 का उपयोग कर रहा हूं, इसलिए मुझे नहीं पता कि यह समाधान नए संस्करण के लिए काम करेगा क्योंकि कोड शायद बदल गया है।

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