2012-05-24 8 views
42

पर वीडियो बजाना एंड्रॉइड TextureView के प्रलेखन में यह कहता है कि आप वीडियो चलाने के लिए एक TextureView का उपयोग कर सकते हैं: लेकिन मुझे ऐसा करने का कोई उदाहरण नहीं दिख रहा है। क्या कोई जानता है?TextureView

मुझे textureView का उपयोग करने की आवश्यकता है क्योंकि मैं वीडियो को एनिमेट करना चाहता हूं। मैं .3gp/.mp4 प्रारूप में वीडियो खेलना चाहते हैं, कैमरा :)

किसी भी मदद की सराहना की जाएगी से वीडियो नहीं ..

अद्यतन:

समाधान एक समुदाय विकी जवाब के रूप में पोस्ट किया जाता है

+0

क्या आपने गतिविधि पर हार्डवेयर एसील चालू किया? – Ronnie

+0

मैंने इसे अभी मैनिफेस्ट में सेट किया है :) – Zelleriation

+0

क्या आपको कोई विचार होगा कि क्यों ऑनफ्रेंसटेक्चर उपलब्ध नहीं है? –

उत्तर

37

यहाँ कैसे आप यह कर सकते है: (प्रश्न लेखक द्वारा समाधान, कि वह तैनात प्रश्न में एक अद्यतन के रूप में)

Public class MediaPlayerDemo_Video extends Activity implements TextureView.SurfaceTextureListener { 


private MediaPlayer mMediaPlayer; 

private TextureView mPreview; 

@Override 
public void onCreate(Bundle icicle) { 

     super.onCreate(icicle); 

     mPreview = (TextureView) findViewById(R.id.surface); 
     mPreview.setSurfaceTextureListener(this); 
     extras = getIntent().getExtras(); 
     setContentView(mPreview); 
} 

public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { 
Surface s = new Surface(surface); 

try { 
     mMediaPlayer= new MediaPlayer(); 
     mMediaPlayer.setDataSource("http://daily3gp.com/vids/747.3gp"); 
     mMediaPlayer.setSurface(s); 
     mMediaPlayer.prepare(); 
     mMediaPlayer.setOnBufferingUpdateListener(this); 
     mMediaPlayer.setOnCompletionListener(this); 
     mMediaPlayer.setOnPreparedListener(this); 
     mMediaPlayer.setOnVideoSizeChangedListener(this); 
     mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     mMediaPlayer.start(); 
     } catch (IllegalArgumentException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (SecurityException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

और एनिमेटिंग यह वास्तव में अच्छी तरह से काम करता है।

+0

SurfaceView के बजाय TextureView का उपयोग करके वीडियो प्लेबैक पर झटकेदार समस्या हल हो गई। धन्यवाद! –

+1

ऑनक्रेट में R.id.surface और अतिरिक्त क्या है? –

+0

@PranoyC TextureView, जाहिर है। –

-3

आपका setContentView(mPreview); जरूरतों से पहले

mPreview = (TextureView) findViewById(R.id.surface); 
mPreview.setSurfaceTextureListener(this); 
+0

यहां आप उत्तर को सही करने के लिए प्रश्न का उत्तर नहीं देते हैं .. इसे सही करने के लिए टिप्पणी का उपयोग करें। – MBH

6

के नाम से जाना मैं एक ही समस्या थी, और एक TextureView साथ इसे हल। मुझे setScaleX और setScaleY बहुत उपयोगी लगता है, अगर यह किसी की सहायता करता है। http://developer.android.com/reference/android/view/View.html#setScaleX%28float%29

हालांकि आप केवल API 16+ लक्षित कर रहे हैं यदि:

mediaPlayer.setVideoScalingMode(MediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING); 

यह करना चाहिए :)

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

  • कोई संबंधित समस्या नहीं^_^