當前位置:首頁 » 安卓系統 » android播放視頻源碼

android播放視頻源碼

發布時間: 2022-11-19 09:20:38

① android 視頻播放器 實現問題!

最簡單的就是:給button加一個單擊監聽事件clickListener
intent直接new一個
intent = new Intent();
intent.setClass(當前這個Activity.this, 播放界面Activity.class);
startActivity(intent);

② android 底層可以調用mediaplayer.h嗎

官方是沒有在NDK里提供使用mediaplayer的介面的,但如果你一定要這樣做,也是有可能的,思路就是:
1)從Android源碼中找到mediaplayer.h以及libmediaplayer.so(庫名字猜測應該是這樣)
2)用so查看工具,得到libmediaplayer.so裡面的函數介面
3)在自己的NDK中include mediaplayer.h,這個頭文件可以到自己的工程來,用dllopen函數打開libmediaplayer.so獲取裡面的介面,參考android源代碼使用mediaplayer播放音視頻。

我自己用過此方法在NDK中調用AudioTrack(也是java sdk里的一個類)來播放音頻,但也是有缺陷的,不同版本的Android,.h或.so里的介面有可能有變化,所以兼容性存在問題,需要對不同版本的介面都要檢測一遍。

題外話,在NDK里播放音視頻正規的做法,是調用NDK官方提供的模塊OpenSL或OpenAL,具體見NDK文檔和example

③ android 和 apple裡面可以播放的視頻播放器代碼誰有 或者告訴我一下 用什麼播放器代碼可以

網頁播放 ?

節目源轉成mp4,就可以直接用手機的瀏覽器播放了——不能是太舊的手機系統

④ 求mars老師android開發音樂播放器的視頻和源碼

Mars論壇上找找吧 應該會有人知道

⑤ android 實現播放網路視頻

沒有調start(),vv.setVideoURI(uri);後要調用vv.start(),才可以播放,這裡面有好幾個介面,pause,resunme,stop你看下api,建議看下Mediaplayer播放的狀態機,對你理解多媒體播放有好處。

⑥ 基於Android音樂播放器源代碼(正常播放、有列表)

package my.android.players;

import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.TextView;

public class mainActivity extends Activity {

private List<String> myMusicList=new ArrayList<String>();
//當前播放歌曲的索引
private int currentListItem=0;
//音樂的路徑
private static final String MUSIC_PATH="/sdcard/mp3";
//播放對象
private MediaPlayer myMediaPlayer;
private TextView m_TextView;
//播放按鈕
private ImageButton m_start;
private ImageButton m_stop;
private ImageButton m_next;
private ImageButton m_last;
/*設定bIsPaused一開始為false */
private boolean bIsRun = false;
private boolean isplay;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);

myMediaPlayer=new MediaPlayer();

musicList();
m_TextView=(TextView)findViewById(R.id.mtextview);
m_start=(ImageButton)findViewById(R.id.imgbtn_start);
m_stop=(ImageButton)findViewById(R.id.imgbtn_stop);
m_next=(ImageButton)findViewById(R.id.imgbtn_next);
m_last=(ImageButton)findViewById(R.id.imgbtn_last);
listener();

Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();
currentListItem = bundle.getInt("currentListItem");
isplay=bundle.getBoolean("isplay");
if(isplay==true)
{
bIsRun=false;
playMusic(MUSIC_PATH+"/"+myMusicList.get(currentListItem));
}
}
//監聽事件
void listener(){

//開始
m_start.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try
{
if(myMediaPlayer.isPlaying()==true)
{
myMediaPlayer.pause();
m_start.setImageResource(R.drawable.pause);
}
else
{
playMusic(MUSIC_PATH+"/"+myMusicList.get(currentListItem));
}

}
catch (IllegalStateException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

}
});
//下一首
m_next.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
nextMusic();
}
});

//上一首
m_last.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

lastMusic();
}
});

//停止
m_stop.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
stopMusic();
}
});

myMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
nextMusic();
}
});
}
//播放音樂
void playMusic(String path){
try {
if(bIsRun==false)
{
myMediaPlayer.reset();
myMediaPlayer.setDataSource(path);
myMediaPlayer.prepare();
myMediaPlayer.start();
/*
* 取出歌曲名的.mp3後綴
* */
String str=(myMusicList.get(currentListItem)).toString();
System.out.println(str);
String str1[]=str.split("\\.");
System.out.println(str1[0]);
m_TextView.setText(str1[0]);
}
else
{
myMediaPlayer.start();
}
m_start.setImageResource(R.drawable.start);
bIsRun=true;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}

//下一首
void nextMusic(){
if(++currentListItem>=myMusicList.size()){
currentListItem=0;
}
bIsRun=false;
playMusic(MUSIC_PATH+"/"+myMusicList.get(currentListItem));
}

//上一首
void lastMusic(){
if(--currentListItem<0)
currentListItem=myMusicList.size()-1;
bIsRun=false;
playMusic(MUSIC_PATH+"/"+myMusicList.get(currentListItem));
}
//停止
void stopMusic() {

if (myMediaPlayer.isPlaying()) {
m_start.setImageResource(R.drawable.pause);
myMediaPlayer.stop();// 停止
bIsRun=false;
}
else
playMusic(MUSIC_PATH+"/"+myMusicList.get(currentListItem));
}
//當用戶返回時結束音樂並釋放音樂對象
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode==KeyEvent.KEYCODE_BACK){
new AlertDialog.Builder(mainActivity.this).setTitle("message")
.setIcon(android.R.drawable.dialog_frame)
.setMessage("你確定要離開嗎?")
.setPositiveButton("確定",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
myMediaPlayer.stop();
myMediaPlayer.release();
finish();
}
}).setNegativeButton("取消",new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub

}
}).show();

}
return super.onKeyDown(keyCode, event);
}
/**
* 文件過濾器
*
* @author
*
*/
class MusicFilter implements FilenameFilter {

@Override
public boolean accept(File dir, String filename) {

return (filename.endsWith(".mp3"));
}

}
//綁定音樂
void musicList(){
try{
File home=new File(MUSIC_PATH);
if(!home.exists())
home.mkdirs();
if(home.listFiles(new MusicFilter()).length>=0){
for(File file:home.listFiles(new MusicFilter())){
myMusicList.add(file.getName().toString());
}
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}

package my.android.players;

import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.AdapterView;
import android.widget.ArrayAdapter;

import android.widget.ListView;

public class Activity01 extends Activity {

//播放列表
private List<String> myMusicList=new ArrayList<String>();
//當前播放歌曲的索引
private int currentListItem;
//音樂的路徑
private static final String MUSIC_PATH="/sdcard/mp3";
//播放列表
private ListView m_ListView;

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

m_ListView=(ListView)findViewById(R.id.lv_music);

musicList();

//當選擇列表項時播放音樂
m_ListView.setOnItemClickListener(new ListView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
currentListItem = arg2;
Intent intent = new Intent();
Bundle mBundle=new Bundle();
mBundle.putInt("currentListItem", currentListItem);
mBundle.putBoolean("isplay", isplay);
intent.putExtras(mBundle);
intent.setClass(Activity01.this,mainActivity.class);
startActivity(intent);
finish();
}
});
}

/**
* 文件過濾器
*
* @author
*
*/
class MusicFilter implements FilenameFilter {

@Override
public boolean accept(File dir, String filename) {

return (filename.endsWith(".mp3"));
}

}

//綁定音樂
void musicList(){
try{
File home=new File(MUSIC_PATH);
if(!home.exists())
home.mkdirs();
if(home.listFiles(new MusicFilter()).length>=0){
for(File file:home.listFiles(new MusicFilter())){
myMusicList.add(file.getName().toString());
}
ArrayAdapter<String> musicList=new ArrayAdapter<String>
(Activity01.this,android.R.layout.simple_list_item_1, myMusicList);
m_ListView.setAdapter(musicList);
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}

⑦ Android實現視頻播放的幾種方式

Android提供了常見的視頻編碼,解碼機制,使用Android自帶的MediaPlayer,MediaController等類可以很方便的實現視頻播放的功能。支持的視頻格式有MP4和3GP等。這些多媒體數據可以來自於Android應用的資源文件,也可以來自於外部存儲器上的文件,甚至可以是來自於網路上的文件流。

1、MediaController+VideoView實現方式

這種方式是最簡單的實現方式。VideoView繼承了SurfaceView同時實現了MediaPlayerControl介面,MediaController則是安卓封裝的輔助控制器,帶有暫停,播放,停止,進度條等控制項。通過VideoView+MediaController可以很輕松的實現視頻播放、停止、快進、快退等功能。

布局文件如下:

使用此實現方式的步驟:

1.載入指定的視頻文件

2.建立VideoView和MediaController之間的關聯,這樣就不需要自己去控制視頻的播放、暫停等。讓MediaController控制即可。

3.VideoView獲取焦點。

2、MediaPlayer+SurfaceView+自定義控制器

雖然VideoView的實現方式很簡單,但是由於是自帶的封裝好的類,所以無論是播放器的大小、位置以及控制都不受我們控制。

這種實現方式步驟如下:

1.創建MediaPlayer對象,並讓它載入指定的視頻文件。可以是應用的資源文件、本地文件路徑、或者URL。

2.在界面布局文件中定義SurfaceView組件,並為SurfaceView的SurfaceHolder添加Callback監聽器。

3.調用MediaPlayer對象的setDisplay(SurfaceHolder sh)將所播放的視頻圖像輸出到指定的SurfaceView組件。

4.調用MediaPlayer對象的prepareAsync()或prepare()方法裝載流媒體文件

5.調用MediaPlayer對象的start()、stop()和pause()方法來控制視頻的播放。

在實現第二步之前需要先給surfaceHolder設置一個callback,callback的3個回調函數如下:

3、MediaPlayer+SurfaceView+MediaController

第二種實現方式使用的是自定義控制項,MediaPlayer+SurfaceView也可以使用系統自帶的MediaController控制器。

使用這個方式實現,布局文件只需一個SurfaceView即可,其他的控制項都交給MediaController控制器,布局文件如下:

實際過程中推薦大家使用B站的播放器ijkplayer非常好用!

⑧ Android如何播放當前工程目錄下的視頻文件(3gp,MP4格式)要能用的源碼,我的模擬器是4.03版本的

bin類型的資源文件放置在asssets目錄下.
參考代碼:
protected void startPlaying(String file) {
MPlayerStatus status = mPlayers_file.get(file);
if ( status == null ) {
try {
AssetFileDescriptor fileAsset = getAssetFileDesc(file);

MediaPlayer mPlayer = new MediaPlayer();
mPlayer.setOnPreparedListener(this);
status = new MPlayerStatus(file, mPlayer);
mPlayers_file.put(file, status);
mPlayers_player.put(mPlayer, status);
Log.d("Audio startPlaying", "audio: " + file);

if (isStreaming(file))
{
File f = readStreamedUrl(file);
Log.d("AudioStartPlaying", "Streaming");
// Streaming prepare async
mPlayer.setDataSource(f.getAbsolutePath());
mPlayer.setAudioStreamType(MUSIC_STREAM);
mPlayer.prepare();
} else {
Log.d("AudioStartPlaying", "File");
// Not streaming prepare synchronous, abstract base directory
if (fileAsset == null) {
mPlayer.setDataSource(file);
}
else {
mPlayer.setDataSource(fileAsset.getFileDescriptor(),
fileAsset.getStartOffset(),
fileAsset.getLength());
}
mPlayer.prepare();
}

status.isPlaying = true;
} catch (Exception e) { e.printStackTrace(); }

}
else if ( !status.isPlaying ) {
try {

status.player.prepare();
status.player.start();
status.isPlaying = true;
status.isPaused = false;
} catch (Exception e) { e.printStackTrace(); }
}
// Otherwise check to see if it's paused, if it is, resume
else if ( status.isPaused ) {
status.player.start();
status.isPaused = false;
}
}

⑨ 求一份Android視頻播放器源碼

怎麼發給你
package wyf.zcl;

import java.util.HashMap;

import android.app.Activity;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MyActivity extends Activity {
/** Called when the activity is first created. */
SoundPool sp; //得到一個聲音池引用
HashMap<Integer,Integer> spMap; //得到一個map的引用
Button b1; //聲音播放控制按鈕
Button b1Pause; //聲音暫停控制按鈕
Button b2; //聲音播放控制按鈕
Button b2Pause; //聲音暫停控制按鈕
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initSoundPool(); //初始化聲音池
b1=(Button)findViewById(R.id.Button01);//聲音播放控制按鈕實例化
b2=(Button)findViewById(R.id.Button02);//聲音播放控制按鈕實例化
b1Pause=(Button)findViewById(R.id.Button1Pause);
b2Pause=(Button)findViewById(R.id.Button2Pause);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
playSound(1,1); //播放第一首音效,循環一遍
Toast.makeText(MyActivity.this, "播放音效1", Toast.LENGTH_SHORT).show();
}});
b1Pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sp.pause(spMap.get(1));
Toast.makeText(MyActivity.this, "暫停音效1", Toast.LENGTH_SHORT).show();
}});
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
playSound(2,1); //播放第二首音效,循環一遍
Toast.makeText(MyActivity.this, "播放音效2", Toast.LENGTH_SHORT).show();
}});
b2Pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sp.pause(spMap.get(2));
Toast.makeText(MyActivity.this, "暫停音效2", Toast.LENGTH_SHORT).show();
}});
}
public void initSoundPool(){ //初始化聲音池
sp=new SoundPool(
5, //maxStreams參數,該參數為設置同時能夠播放多少音效
AudioManager.STREAM_MUSIC, //streamType參數,該參數設置音頻類型,在游戲中通常設置為:STREAM_MUSIC
0 //srcQuality參數,該參數設置音頻文件的質量,目前還沒有效果,設置為0為默認值。
);
spMap=new HashMap<Integer,Integer>();
spMap.put(1, sp.load(this, R.raw.attack02, 1));
spMap.put(2, sp.load(this, R.raw.attack14, 1));
}
public void playSound(int sound,int number){ //播放聲音,參數sound是播放音效的id,參數number是播放音效的次數
AudioManager am=(AudioManager)this.getSystemService(this.AUDIO_SERVICE);//實例化AudioManager對象
float audioMaxVolumn=am.getStreamMaxVolume(AudioManager.STREAM_MUSIC); //返回當前AudioManager對象的最大音量值
float audioCurrentVolumn=am.getStreamVolume(AudioManager.STREAM_MUSIC);//返回當前AudioManager對象的音量值
float volumnRatio=audioCurrentVolumn/audioMaxVolumn;
sp.play(
spMap.get(sound), //播放的音樂id
volumnRatio, //左聲道音量
volumnRatio, //右聲道音量
1, //優先順序,0為最低
number, //循環次數,0無不循環,-1無永遠循環
1 //回放速度 ,該值在0.5-2.0之間,1為正常速度
);
}
}
要在資源中加聲音文件哦

熱點內容
冒險島忘記伺服器了怎麼查 發布:2024-05-06 07:53:42 瀏覽:239
茶葉資料庫 發布:2024-05-06 07:52:16 瀏覽:310
伺服器web訪問埠怎麼查看 發布:2024-05-06 07:35:28 瀏覽:225
蘋果id改密碼要什麼條件 發布:2024-05-06 07:34:47 瀏覽:805
鎮江節點伺服器測試ip 發布:2024-05-06 07:15:05 瀏覽:540
sqlserver表格 發布:2024-05-06 07:09:54 瀏覽:612
雪鐵龍凡爾賽選哪個配置 發布:2024-05-06 06:56:04 瀏覽:571
福睿斯配置怎麼樣 發布:2024-05-06 06:50:16 瀏覽:103
微生物資料庫 發布:2024-05-06 06:47:33 瀏覽:605
原神和steam游戲哪個需要配置 發布:2024-05-06 06:37:40 瀏覽:666