簡體   English   中英

從原始文件夾播放視頻

[英]Play Video From Raw Folder

晚間,

我剛剛開始使用android進行編程,並制作了一些程序和所有東西,所以我還是個新手,但我想盡力了解所有內容。

所以這是我的問題,我正在嘗試播放視頻,問題是,當我通過VideoView通過URL從Internet上的URL通過互聯網流式傳輸視頻或將其放入sdcard時,它可以正常工作。

我現在想做的是播放res / raw文件夾中的視頻,但是它只播放音頻,我不明白為什么,據我所知,它在logcat中沒有任何錯誤,由於大多數答案都與VideoView有關,只是將視頻放在SDCard上,因此也無法真正找到Google解決方案。

現在有人告訴我我必須使用setDisplay(SurfaceHolder),我也嘗試過這樣做,但是我仍然只能獲得音頻。

我希望有人可以幫助我找到解決該問題的方法。

VideoDemo.java

package nl.melvin.videodemo; 

import android.app.Activity; 
import android.os.Bundle; 
import android.media.MediaPlayer; 
import android.view.SurfaceHolder; 
import android.view.SurfaceView; 


public class videodemo extends Activity { 

    public SurfaceHolder holder; 
    public SurfaceView surfaceView; 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


        MediaPlayer mp = MediaPlayer.create(this, R.raw.mac); 

        mp.setDisplay(holder); 
        mp.start(); 

      } 

} 

XML格式

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout  
    xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/LinearLayout01"  
     android:layout_width="fill_parent"  
     android:layout_height="fill_parent" > 
    <SurfaceView 
        android:id="@+id/surfaceview" 
         android:layout_width="fill_parent" 
         android:layout_height="fill_parent"> 
     </SurfaceView>> 
</LinearLayout>

我也嘗試過Uri.parse,但是它說不能播放視頻(.mp4格式)。

我遇到了同樣的問題,但仍然無法加載視頻(僅聲音)。 但是我這樣做是這樣的:

    getWindow().setFormat(PixelFormat.TRANSLUCENT);
    videoView = new VideoView(this);
    videoView.setMediaController(new MediaController(this));
    videoView.setVideoURI(Uri.parse("android.resource://pt.beware.smdemo/" + R.raw.video));
    videoView.requestFocus();
    videoView.start();
    setContentView(videoView);
mp.setDisplay(surfaceView.getHolder());

另外,您的代碼也不會顯示您為SurfaceView分配了引用,如下所示:

surfaceView = (SurfaceView) findViewById(R.id.surfaceView);

為了完整起見,如果您使用VideoView ,請在代碼中更改類類型和變量名稱,並在XML中更改ID名稱。

嘗試在XML文件而不是SurfaceView中使用VideoView。 VideoView專門擴展了SurfaceView以處理視頻-SurfaceView不知道該怎么做。

請參閱VideoView的類層次結構

然后,您應該能夠獲得持有人,因為...

mp.setDisplay(surfaceView.getHolder());

另外,您的代碼未顯示您像在...中分配對surfaceView的引用。

surfaceView = (SurfaceView) findViewById(R.id.surfaceView);

...為了完整起見,如果您使用VideoView,請在代碼中更改類類型和變量名稱,並在XML中更改ID名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM