[英]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.