一种在本地搭载一个服务器的工具和方法,Android开发测试网络视频可以用

经常有时候需要把自己的pc当着一个服务器来,其他地方来访问,在j2ee里面是直接开发运行来完成的,现在介绍的比如有时候使用Android播放器来播放网络视频,用来测试的,这个时候没有网络视频的URL,自己的pc就是服务器,直接提供URL就能开始播放了;


第一步,将测试所需要的码流文件拷贝到与mongoose-2[1].11.exe、index.html 同一目录下;

 

第二步,编辑index.html文件,

 

只需修改下面代码红色字体部分

 

  <tr>

    <td height="30" valign="top"><div align="center">

    <p><strong><a href="源文件名">显示在网页上的连接名字</a></strong></p>

    </div></td>

  </tr>

每添加一个视频文件的播放,直接复制上面的代码添加到上一段之后并修改红色部分即可;

 

第三步,添加完毕后启动mongoose-2[1].11.exe一个简单的HTTP播放测试网站就建成了;

 

输入:你的IP:8080 就可以访问了。


这些在写一个Android简单的视频播放器进行播放


public class VideoPlayerDemoActivity extends Activity{
    /** Called when the activity is first created. */
private final static String TAG = "MstarVideoPlayerDemoActivity" ;
private SurfaceView mySurfaceView = null ;
private SurfaceHolder mySurfaceHolder = null ;
private MediaPlayer myMediaPlayer = null ;
private boolean bIsFullScreen = true ;
private Context mContext = null ;
private int mWindowWidth = 0 ;
private int mWindowHeight = 0 ;


private void log(String msg){
Log.d(TAG, msg) ;

}
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        mContext = this ;        
        mySurfaceView = (SurfaceView)this.findViewById(R.id.mySurfaceView) ;


        mySurfaceHolder = mySurfaceView.getHolder() ;
        mySurfaceHolder.addCallback(mySurceHolderCallback) ;
       
        myMediaPlayer = new MediaPlayer() ;
        Point outSize = new Point() ;
        this.getWindowManager().getDefaultDisplay().getSize(outSize) ;
        mWindowHeight =  outSize.y;
        mWindowWidth = outSize.x ;
        log("=========mWindowHeight = "+mWindowHeight+" mWindowWidth = "+mWindowWidth) ;
        
    }
    
    private SurfaceHolder.Callback mySurceHolderCallback = new SurfaceHolder.Callback() {

public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
log("surfaceDestroyed") ;
}

public void surfaceCreated(SurfaceHolder holder) {
log("surfaceCreated") ;
startPlayer() ;

}

public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
log("surfaceChanged") ;
holder.setSizeFromLayout() ;
myMediaPlayer.setDisplay(holder) ;
}
};

private MediaPlayer.OnBufferingUpdateListener mBufferingUpdateListener = new MediaPlayer.OnBufferingUpdateListener() {

public void onBufferingUpdate(MediaPlayer mp, int percent) {
// TODO Auto-generated method stub
log("onBufferingUpdate : percent = "+percent) ;
}
};

private MediaPlayer.OnCompletionListener mCompletionListener = new MediaPlayer.OnCompletionListener() {

public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
log("onCompletion") ;
finish() ;
}
};

private MediaPlayer.OnErrorListener mErrorListener = new MediaPlayer.OnErrorListener() {

public boolean onError(MediaPlayer mp, int what, int extra) {
// TODO Auto-generated method stub
log("onError : what = "+what+" extra = "+extra) ;
mp.stop() ;
mp.reset() ;
return false;
}
};

private MediaPlayer.OnPreparedListener mPreparedListener = new MediaPlayer.OnPreparedListener() {

public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
log("onPrepared ") ;
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams)mySurfaceView.getLayoutParams();
lp.leftMargin = dip2px(mContext,50);
lp.topMargin = dip2px(mContext,50);
lp.width = dip2px(mContext,640);
lp.height = dip2px(mContext,360);
mySurfaceView.setLayoutParams(lp); 
mySurfaceHolder = mySurfaceView.getHolder() ;
mySurfaceHolder.setFixedSize(dip2px(mContext,640), dip2px(mContext,360)) ;
bIsFullScreen = false ;
myMediaPlayer.setDisplay(mySurfaceHolder);
myMediaPlayer.start() ;

}
};

private MediaPlayer.OnInfoListener mInfoListener = new MediaPlayer.OnInfoListener() {
public boolean onInfo(MediaPlayer mp, int what, int extra) {
// TODO Auto-generated method stub
log("onInfo : what = "+what + " extra ="+extra);
return false;
}
};
private MediaPlayer.OnSeekCompleteListener mSeekCompleteListener = new MediaPlayer.OnSeekCompleteListener() {

public void onSeekComplete(MediaPlayer mp) {
// TODO Auto-generated method stub
log("onSeekComplete") ;

}
};
private MediaPlayer.OnVideoSizeChangedListener mVideoSizeChangedListener = new MediaPlayer.OnVideoSizeChangedListener() {
public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
// TODO Auto-generated method stub
log("onVideoSizeChanged : width = "+width + " height = "+height) ;
}
};



private void startPlayer(){
try {

myMediaPlayer.reset() ;
myMediaPlayer.setOnPreparedListener(mPreparedListener);
myMediaPlayer.setOnVideoSizeChangedListener(mVideoSizeChangedListener);
myMediaPlayer.setOnCompletionListener(mCompletionListener);
myMediaPlayer.setOnErrorListener(mErrorListener);
myMediaPlayer.setOnBufferingUpdateListener(mBufferingUpdateListener);
myMediaPlayer.setOnInfoListener(mInfoListener);
myMediaPlayer.setOnSeekCompleteListener(mSeekCompleteListener);


String path = "http://10.9.44.66:8080/Exodus_UHD_HDR_Exodus_draft.mp4" ;
myMediaPlayer.setDataSource(path) ;
myMediaPlayer.setDisplay(mySurfaceHolder);
myMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
myMediaPlayer.prepareAsync();
} 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();
}
}
    
public void onDestroy(){
super.onDestroy() ;
myMediaPlayer.reset() ;
myMediaPlayer.release() ;
myMediaPlayer = null ;
}

public static int dip2px(Context context, float dpValue) { 
final float scale = context.getResources().getDisplayMetrics().density; 
return (int) (dpValue * scale + 0.5f); 
}

public boolean onKeyDown(int keyCode , KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
if (myMediaPlayer != null && myMediaPlayer.isPlaying()) {

if (bIsFullScreen == true) {
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams)mySurfaceView.getLayoutParams();
lp.leftMargin = dip2px(mContext,50);
    lp.topMargin = dip2px(mContext,50);
    lp.width = dip2px(mContext,640);
    lp.height = dip2px(mContext,360);
    mySurfaceView.setLayoutParams(lp); 
    mySurfaceHolder = mySurfaceView.getHolder() ;
    mySurfaceHolder.setFixedSize(dip2px(mContext,640), dip2px(mContext,360)) ;
    bIsFullScreen = false ;
} else {
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams)mySurfaceView.getLayoutParams();
lp.leftMargin = 0;
    lp.topMargin = 0;
    lp.width = dip2px(mContext,mWindowWidth);
    lp.height = dip2px(mContext,mWindowHeight);
    mySurfaceView.setLayoutParams(lp); 
    mySurfaceHolder = mySurfaceView.getHolder() ;
    mySurfaceHolder.setFixedSize(dip2px(mContext,mWindowWidth), dip2px(mContext,mWindowHeight)) ;
    bIsFullScreen = true ;
}
}
}
return super.onKeyDown(keyCode, event) ;
}
}


path就是共享出来的视频URL地址,URL地址名称最好用英文名称;


分享一下这个工具:http://pan.baidu.com/s/1bnlvShL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值