2014-09-29 5 views
12

मैं http पर प्लेबैक वीडियो के लिए एक्सोप्लेयर का उपयोग करने के लिए ट्रेइंग कर रहा हूं। और वीडियो लोड होने के बाद और इसे कैश से चलाने के बाद मैं वीडियो को सहेजना चाहता हूं। कैसे कैश से कैश और प्लेबैक लागू करें? मुझे कोई नमूना दे सकता है।एक्सपोप्लेयर कैश

+0

मुझे नहीं लगता कि डिफ़ॉल्ट व्यवहार है कि आप इसे आसानी से कर सकते हैं। यह खुला स्रोत है। आप इसे कांटा सकते हैं और कैश के डाउनलोड स्थान को बदल सकते हैं। – tasomaniac

+0

मुझे एक ही समस्या है। क्या आपको इसे लागू करने के लिए रास्ता मिल रहा है? –

+0

@ fisher3421 क्या आपको कोई समाधान मिला है जिसे मैं भी ढूंढ रहा हूं। –

उत्तर

2

आप एमपीईजी-डैश या सादा http का उपयोग कर प्रोटोकॉल क्या कर रहे हैं।

आप एचटीपीडेटा स्रोत को ओवरराइड कर सकते हैं और इनकमिंग बाइट्स को फ़ाइल में लिख सकते हैं और फिर से खेलते समय जांच कर सकते हैं कि वांछित स्थान पर फ़ाइल मौजूद है या नहीं, इनपुट इनपुट को प्लेयर को HttpDataSource की बजाय आपकी फ़ाइल से खिलाया गया है।

+2

HttpDataSource ओवरराइड करना गलत दृष्टिकोण है क्योंकि एक्सप्लेयर के पास कैश कार्यान्वयन के लिए लक्षित कक्षाएं हैं। उदाहरण के लिए कैशडेटा स्रोत। मैं इस वर्ग का उपयोग करने का सही तरीका प्राप्त करना चाहता हूं। – fisher3421

5

आप कैश और डेटा स्रोत का उपयोग करके बनाए गए कैशडेटा स्रोत का उपयोग करते हैं। यह कैशडेटासोर्स तब एक्स्ट्रेक्टर नमूना स्रोत द्वारा उपयोग किया जाता है। नीचे ऑडियो रेन्डरर के लिए कोड है, इसी प्रकार वीडियो रेंडर के लिए भी किया जा सकता है; exoplayerInstance.prepare (renderers) के लिए गुजर रहा है।

Cache cache = new SimpleCache(mCtx.getCacheDir(), new LeastRecentlyUsedCacheEvictor(1024 * 1024 * 10)); 
DataSource dataSource = new DefaultUriDataSource(mCtx, "My Player"); 
CacheDataSource cacheDataSource = new CacheDataSource(cache, dataSource, false, false); 
Allocator allocator = new DefaultAllocator(BUFFER_SEGMENT_SIZE); 
ExtractorSampleSource extractorSampleSource = new ExtractorSampleSource(trackURI, cacheDataSource, allocator, BUFFER_SEGMENT_COUNT*BUFFER_SEGMENT_SIZE, new Mp3Extractor()); 
MediaCodecAudioTrackRenderer audioTrackRenderer = new MediaCodecAudioTrackRenderer(extractorSampleSource); 
+0

क्या यह कैशिंग को काम करने के लिए पूरा कार्यान्वयन है? मैंने इसे कार्यान्वित किया है, लेकिन प्रिंटिंग 'cache.getCacheSpace()' 0 दिखाता है इससे कोई फर्क नहीं पड़ता कि मैं क्या करता हूं। कैश भरने के लिए कोई विचार या टिप्स? – welshk91

+1

केवल डीएएसएच के साथ काम करता है। Https://github.com/google/ExoPlayer/issues/420 देखें – aeracode

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