经常有时候需要把自己的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