在线播放,将文件转成流媒体

时间:2024-03-09 17:10:52

1.Android支持视频播放,但是要在线直接播放视频是不能直接请求.mp4等视频格式的,因为这些格式不支持渐进播放,所以我们就需要将文件转换成流媒体文件,这里我使用的是QuickTimeInstaller.ext来完成转换的,需要注册码网上有免费的,需要的话就搜索吧,另外苹果的软件注册码的位置跟windows的习惯不一样,通常我们都是在帮助里面找到注册信息,但是苹果放在了编辑--偏好设置里,注册后以后重新开启就可以了

2.将文件拖入框内,(可能反应比较慢)然后点击文件----导出,选择格式3G,进行设置

文件格式:3GPP

视频格式:MPEG-4

数据速率128 千位/秒 (数字高低与画质成正比,与下载速度成正比)

优化:下载

帧率:15

图像大小:根据需求设定吧

关键帧:每 24 帧

然后采用URL地址请求 就可以直接播放了

大体代码如下(本代码未做任何优化只是简单实现,根据个人需求在做更改吧)

 1 import android.app.Activity;
 2 import android.media.AudioManager;
 3 import android.media.MediaPlayer;
 4 import android.os.Bundle;
 5 import android.view.SurfaceHolder;
 6 import android.view.SurfaceView;
 7 public class VideoActivity extends Activity{
 8     private SurfaceView sv;
 9     private SurfaceHolder holder;
10     private String link; private MediaPlayer player;
11     @Override
12         protected void onCreate(Bundle savedInstanceState){
13         super.onCreate(savedInstanceState);
14         setContentView(R.layout.video);
15         sv=(SurfaceView)findViewById(R.id.sv);
16         holder=sv.getHolder();
17         holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
18         link=getIntent().getStringExtra("link");//这里代表URL路径 随意更改
19         holder.addCallback(new Callback(){
20         public void surfaceDestroyed(SurfaceHolder holder){
21             if(player!=null){
22             player.stop();
23             player.release();
24             player=null;
25             }
26         }
27         public void surfaceCreated(SurfaceHolder holder){
28         System.out.println("link:"+link);
29         if(link!=null){
30         try{
31         player=new MediaPlayer();
32         player.setAudioStreamType(AudioManager.STREAM_MUSIC);
33         player.setDataSource(link);
34         player.setDisplay(holder);
35         player.prepare();
36         player.start();
37         }catch(Exception e){
38             e.printStackTrace();
39         }
40     }
41     }
42     public void surfaceChanged(SurfaceHolder holder,int format,int width,int height){
43         }
44     }
45 }