To build a better world !

Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码)


    转载请注明出处:http://www.blogjava.net/zh-weir/archive/2010/01/24/310617.html


    2010.03.27    SeeJoPlayer v1.2.0 beta版:  

     下载SeeJoPlayer v1.2.0 beta     下载SeeJoPlayer v1.2.0 beta源码


    更新说明:

    1、完美支持android1.5、android1.6、android2.0、android2.01、android2.1平台;
    2、完美支持320×480、480×800、480×854等各种分辨率(自适应屏幕分辨率);
    3、支持在线音视频播放,支持URL input和从浏览器调用SeeJoPlayer播放器播放在线音视频;
    4、自动转为横屏播放,为用户提供更好的观看体验;
    5、修改了没有SD卡程序出错的Bug;
    6、美化了视频播放列表和操作说明的界面。

    补充图片:
    




URL输入功能

    




浏览器中调用SeeJoPlayer播放


    感谢大家对SeeJoPlayer的大力支持!希望新版本能带给大家更好的体验!


    2010.01.24    SeeJoPlayer v1.0.0版: 

    SeeJoPlayer是我利用业余时间开发的一款免费的视频播放器。主要是现在在网上似乎找不到一个Android平台下的界面美观一点的视频播放器。而作为智能手机操作系统的Android,没有一个像样一点的视频播放器,岂不糗大了。所以,我就写了这么一个砖头并开出源码,希望能引出高手们的美玉来吧!


         下载APK程序         下载源代码         转到eoeMarket发布页

    



 第一部分:功能介绍


    SeeJoPlayer的优点主要在相对还算美观的界面和便捷的交互操作上。先说操作吧,它支持:

    1、全屏切换:       双击屏幕
    2、播放/暂停:     长按屏幕
    3、静音/恢复:     长按音量按钮
    4、播放列表:       控制面板最右边的按钮(暂不支持编辑功能)
    5、音量调节:       单击音量按钮,在弹出的音量显示区域触摸改变音量
 

    这些操作和PC上的播放器较为类似,希望大家能用得习惯。

    至于界面的话,多说无益,直接上图吧:



横屏



竖屏



全屏



非全屏



播放列表



介绍说明

    好了。功能介绍部分到此为止了。如果您觉得这个软件还行的话,欢迎下载使用!


         下载APK程序         下载源代码         转到eoeMarket发布页



第二部分:源码解析
 

    SeeJoPlayer不是一个完美的作品,可以说,它在很多地方都不尽如人意。当然一个完美的作品,也不是我写这款播放器的目的。我只是希望以此为引,结合大家共同的智慧开发出一款真正完美强大的Android平台下的国产视频播放器出来。

    SeeJoPlayer有许多不足之处,例如,它只支持系统默认的视频格式,因为它使用系统默认的解码器。这,一方面是因为如果通过软解码的话,播放视频的效率会很受影响,另外最主要的原因当然还是个人水平、精力有限,没办法接着往下做了。如果大家觉得这份代码还多少有些参考价值的话,不妨拿去用。只是希望当你们以此为参考,开发出真正强大的播放器出来的时候,别忘了如果能开放源码的话,一定开放出来。毕竟开源软件就好比能够进化的物种,提供你的DNA出来,让我们共同的软件变得越来越完美吧!

    好了,废话不说了。播放器的全部源码本文中已经提供了下载地址。下面,我就其中我觉得可能值得关注的地方做一些解释。

    一、VideoView与视频比例缩放:

    以前在论坛上也看到有人问过如何实现视频按比例缩放的问题。的确,如果仅仅使用VideoView可能达不到我们想要达到的效果。这就需要我们对VideoView做一些改动,简单的说就是另外写一个类似VideoView的类出来(庆幸Android是开源的)。

    我们可以很方便的获得VideoView的源代码,最简单的方法是直接在GoogleCodeSearch上找“VideoView.java”。所以重写VideoView的过程其实只是在原来的基础上进行一些修改而已,并非一个很麻烦的工作。为什么Android自带的VideoView会保持视频的长宽比而不能让我们很方便的自定义比例呢?我猜想可能Google做Android也是一个很仓促的工程,许多代码并没有考虑得太成熟。

    VideoView的源码中有这样一段代码:

 1@Override
 2    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
 3        //Log.i("@@@@", "onMeasure");
 4        int width = getDefaultSize(mVideoWidth, widthMeasureSpec);
 5        int height = getDefaultSize(mVideoHeight, heightMeasureSpec);
 6        if (mVideoWidth > 0 && mVideoHeight > 0{
 7            if ( mVideoWidth * height  > width * mVideoHeight ) {
 8                //Log.i("@@@", "image too tall, correcting");
 9                height = width * mVideoHeight / mVideoWidth;
10            }
 else if ( mVideoWidth * height  < width * mVideoHeight ) {
11                //Log.i("@@@", "image too wide, correcting");
12                width = height * mVideoWidth / mVideoHeight;
13            }
 else {
14                //Log.i("@@@", "aspect ratio is correct: " +
15                        //width+"/"+height+"="+
16                        //mVideoWidth+"/"+mVideoHeight);
17            }

18        }

19        //Log.i("@@@@@@@@@@", "setting size: " + width + 'x' + height);
20        setMeasuredDimension(width, height);
21    }

22

    这就是为什么长宽比不能改变的原因了。因为在OnMeasure的时候,就对这个长宽比进行了处理。

    我们把其中处理的代码屏蔽掉,视频大小就可以随着VideoView的长宽改变而改变了。

 1@Override
 2    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
 3        //Log.i("@@@@", "onMeasure");
 4        int width = getDefaultSize(mVideoWidth, widthMeasureSpec);
 5        int height = getDefaultSize(mVideoHeight, heightMeasureSpec);
 6        /*if (mVideoWidth > 0 && mVideoHeight > 0) {
 7            if ( mVideoWidth * height  > width * mVideoHeight ) {
 8                //Log.i("@@@", "image too tall, correcting");
 9                height = width * mVideoHeight / mVideoWidth;
10            } else if ( mVideoWidth * height  < width * mVideoHeight ) {
11                //Log.i("@@@", "image too wide, correcting");
12                width = height * mVideoWidth / mVideoHeight;
13            } else {
14                //Log.i("@@@", "aspect ratio is correct: " +
15                        //width+"/"+height+"="+
16                        //mVideoWidth+"/"+mVideoHeight);
17            }
18        }*/

19        //Log.i("@@@@@@@@@@", "setting size: " + width + 'x' + height);
20        setMeasuredDimension(width,height);
21    }


    二、视频控制菜单与播放界面的层次问题:

    看到过一些别人写的视频播放器,其中有一些朋友老是简简单单的将VideoView和控制界面放在一个LinearLayout中。这样随着控制界面的出现与否,VideoView会随之改变长宽,给人的体验并不很好。所以,我认为VideoView和控制界面最好不要放在同一个层次上。不要偷懒,使用一个FrameLayout或者PopupWindow就可以解决这个问题。例如,我就简简单单地使用了PopupWindow,这个具体实现上,就百花争鸣吧。

    三、视频文件扫描:

    视频文件的扫描,现在想来主要有两种方式:

    第一种就是直接读取媒体库中的视频文件数据库。当Android启动的时候,系统会自动扫描sdcard,并为媒体文件建立(或者更新)数据库。我们可以通过对应的URI来访问数据库,从而得到视频文件的列表:
  
 1private Uri videoListUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
 2
 3
 4
 5Cursor cursor = getContentResolver().query(videoListUri, new String[]{"_display_name","_data"}nullnullnull);
 6        int n = cursor.getCount();
 7        cursor.moveToFirst();
 8        LinkedList<MovieInfo> playList2 = new LinkedList<MovieInfo>();
 9        for(int i = 0 ; i != n ; ++i){
10            MovieInfo mInfo = new MovieInfo();
11            mInfo.displayName = cursor.getString(cursor.getColumnIndex("_display_name"));
12            mInfo.path = cursor.getString(cursor.getColumnIndex("_data"));
13            playList2.add(mInfo);
14            cursor.moveToNext();
15        }


    这种方法可能是最有效率的了,不过不知为何,媒体库中似乎没有扫描进本身支持的3GP视频格式(也可能我这里是一个特例) 。不过,正是因为这个原因,我才想到有可能需要另外一种最基本的扫描文件系统的方法来扫描视频文件。这就是文件系统的遍历:

 1    private void getVideoFile(final LinkedList<MovieInfo> list,File file){
 2        
 3        file.listFiles(new FileFilter(){
 4
 5            @Override
 6            public boolean accept(File file) {
 7                // TODO Auto-generated method stub
 8                String name = file.getName();
 9                int i = name.indexOf('.');
10                if(i != -1){
11                    name = name.substring(i);
12                    if(name.equalsIgnoreCase(".mp4")||name.equalsIgnoreCase(".3gp")){
13                        
14                        MovieInfo mi = new MovieInfo();
15                        mi.displayName = file.getName();
16                        mi.path = file.getAbsolutePath();
17                        list.add(mi);
18                        return true;
19                    }

20                }
else if(file.isDirectory()){
21                    getVideoFile(list, file);
22                }

23                return false;
24            }

25        }
);
26    }

    当然,随着Android平台下的硬件设备越来越多,越来越强大。我们有理由相信,它以后将不仅仅只支持MP4和3GP格式的视频文件,所以我们必须使用两种方式结合的方法来获得最大的视频集合作为我们的视频列表。

    四、播放过程中进度条progress的设定:

    视频开始播放了,那么一个小麻烦出现了:什么时候设定进度条才更有效率?我这里有一种方法供大家参考,那就是通过Handler自己给自己发消息来达到不断设置进度条的目的。

 1    Handler myHandler = new Handler(){
 2    
 3        @Override
 4        public void handleMessage(Message msg) {
 5            // TODO Auto-generated method stub
 6            
 7            switch(msg.what){
 8            
 9                case PROGRESS_CHANGED:
10                    
11                    int i = vv.getCurrentPosition();
12                    seekBar.setProgress(i);
13                    
14                    i/=1000;
15                    int minute = i/60;
16                    int hour = minute/60;
17                    int second = i%60;
18                    minute %= 60;
19                    playedTextView.setText(String.format("%02d:%02d:%02d", hour,minute,second));
20                    
21                    sendEmptyMessage(PROGRESS_CHANGED);
22                    break;
23
24
25
26   
    
    当然,这种方法,需要首先发送一个初始消息来启动。

    五、全屏与非全屏:

    大家都知道,一般一个Activity设置全屏的方法有两种,一是在OnCreate中:

 1@Override   
 2public void onCreate(Bundle icicle) {   
 3    super.onCreate(icicle);   
 4       
 5    requestWindowFeature(Window.FEATURE_NO_TITLE);           
 6    Window win = getWindow();   
 7    win.setFlags(WindowManager.LayoutParams.NO_STATUS_BAR_FLAG,   
 8            WindowManager.LayoutParams.NO_STATUS_BAR_FLAG);   
 9       
10    setContentView(R.layout.mylayout);  
11
12
13

    二是在AndroidManifest.xml中:

1<activity android:name=".MyActivity" 
2          android:label=""
3          android:theme="@android:style/Theme.NoTitleBar.Fullscreen">

    然而,这两种方法都不能达到我们在视频播放过程中设置全屏与否的目的。因为它们都只能在初始化的时候决定全屏与否。那么我现在要说的就是第三种方法:

1getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

1getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

    这种方法就可以在Activity运行过程中,动态地改变全屏与否。

    六、音量调节:

    音量调节的方法其实很简单,不过有人问到,我就在这里顺便说下:

1        AudioManager am = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
2        setIndex(am.getStreamVolume(AudioManager.STREAM_MUSIC));

    好了,就写这些了吧。可能这些知识有人知道,或者还有些盲点我没有讲到。欢迎大家与我联系,大家一起多多讨论交流,并且整个源码都开放出来了,大家一定可以把来龙去脉弄得一清二楚的!最后,多谢大家听我罗嗦,欢迎使用SeeJoPlayer,欢迎阅读其源码!本文也欢迎大家转载,不过转载请注明出处:http://www.blogjava.net/zh-weir/archive/2010/01/24/310617.html


         下载APK程序         下载源代码         转到eoeMarket发布页



    
    

posted on 2010-01-24 17:20 zh.weir 阅读(61913) 评论(104)  编辑  收藏 所属分类: Android项目源码

评论共2页: 1 2 下一页 

评论

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-02-09 08:28 zh.weir

@a
谢谢介绍!另外,以后的一些机器肯定会在Android原版系统的基础上进行改动,相信很快就会有支持视频硬件解码的机器出来!那么SeeJoPlayer就自动支持更多格式的视频了!  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码)[未登录] 2010-03-09 16:36 jason

怎么播放视频呢 找了半天没找到  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-03-09 21:20 zh.weir

@jason

点击视频播放器界面的左下角的按钮,会弹出扫描到的视频组成的播放列表。点击列表项就可以开始播放对应的视频了。

如果播放列表为空的话,可能是你的SD卡中没有视频,或者这种视频格式不被系统支持。  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码)[未登录] 2010-03-10 17:00 jason

麻烦再问下,就是我播视频(MP4,3GP)画面特卡
  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-03-10 19:21 zh.weir

@jason

请问下你是用的什么机器?另外是不是视频的分辨率对于这个机器来说太高了?
SeeJoPlayer采用的是系统默认的解码方式,如果这样还卡的话,可能是有其他的客观原因……  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码)[未登录] 2010-03-12 13:57 jason

就是在 android模拟器上运行的
视频都是在专业的3GP网站上下载的 格式没问题的
SDK2.1版本

不知为啥 视频基本上看不了,画面不动,声音没问题的  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-03-12 22:53 zh.weir

@jason

喔,在模拟器上如果视频的分辨率比较高的话是会出现这种情况。模拟器好像176×144的可以播,再高的可能就会有问题了……

你可以用系统自带的gallery看看,如果系统的也是一样,那就说明是模拟器不支持更高分辨率的视频……  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码)[未登录] 2010-03-13 09:35 jason

@zh.weir
谢谢啦  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码)[未登录] 2010-03-23 11:24 jason

请问,就是在service中能取activity的布局信息么  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码)[未登录] 2010-03-23 11:30 jason

我在做一个音乐播放器,在service中通过MediaPlayer对象设置进度条信息,
现在就是不知道怎么拿到布局信息  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-03-23 12:52 zh.weir

@jason

你的进度条是在Activity里面吗?你的Service和Activity同属于一个APK吗?

如果是这样的话,你可以试试将进度条声明为Activity的public static 对象,在Activity启动时就将它初始化好。那么你就应该可以直接在Service里通过调用:YourActivity.youSeekBar.setProgress(int)来设置进度了。

在Service里访问Activity的布局信息,不太直接,如果你仅仅是为了设置进度的话,个人觉得可能上面那种方法便捷一些。

还有,你上次说2.1模拟器视频图像不动的问题,我也遇到了。可能是模拟器的问题吧,2.0以上模拟器播视频似乎都有问题。  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码)[未登录] 2010-03-24 09:08 jason

非常感谢  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-03-25 15:24 game

很不错的播放器程序。。。值得学习了。
不知道阁下对android游戏是否了解。有个困难希望帮忙给点建议。如果不知道也没有关系,知道请告知下下。不胜感激。
是一个Tank的例子,图形层和精灵层都已实现,如何实现各个精灵在游戏中与其他精灵对象的碰撞情况。而图层管理类LayerManager把所有的图层粘合在一起,管理游戏中各个图层的显示跟调用。也就是layermanager、sprite、tiledlayer三者如何结合?  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码)[未登录] 2010-03-25 17:00 jason

还有个问题:就是我在service中播放音乐的时候,
mp.setDataSource(path);
mp.prepare();一到这句话就抛异常  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-03-25 22:30 zh.weir

@jason

你可以在网上搜索下MediaPlayer相关的代码,似乎需要调用MediaPlayer的静态方法MediaPlayer.create,具体我不是很清楚。  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-03-25 22:43 zh.weir

@game

对游戏不是很了解,你有相关的好的资料可以推荐下吗?

看了你的留言,你看看我的理解是不是正确哈:
1、图形层就是游戏最下面一层的图层?一般不会动的?
2、精灵层包括所有游戏中各个动作的图形?
3、LayerManager负责计算每个图形应该在哪个坐标位置显示?
4、你现在是已经有了图形层和精灵层,但是不知道如何计算每一时刻精灵显示的位置?

你的游戏是用什么写的?OpenGL?还是什么?这个LayerManager和游戏引擎有什么区别?还望你解答…… 哈哈,成了我问你了……  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-03-26 10:38 game

Y(^_^)Y哈哈~~还是您懂得比我多啊!其实我也不是很懂,刚接触,也是小菜一个,属于拿来copy型的,见笑见笑哈~
回归主题,就是一个坦克大战的demo,我也是刚看。应该不是用OpenGL,OpenGL那东西对我来说还是比较模糊的,看了半天还是没看懂。游戏引擎应该算是驱动游戏工作的吧,概念上我还是不很清楚,但是LayerManager是图层管理类,是为了轻易的对游戏中的各个Layer进行有效的管理,我想应该不算游戏引擎才对。Sprite精灵层实现了图像的转动,显示替换和翻转功能,也不应该算游戏引擎。(个人认为的,对于游戏引擎我也是门外~汗!~)具体动作是放在线程里写的coding,当然开始也做了一些初始化。不知道这样说让您是否明白??~~
我主要迷茫的就是精灵层和图形层的结合,就是说,怎样才能一起驱动这两个类,加载到游戏中去。还有就是我对view类和SurfaceView类还不是太懂,还有就是Callback类(都是类,真累!)我再琢磨琢磨,在不懂我就发代码向您请教啦~!  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码)[未登录] 2010-03-30 11:05 jason

还得在麻烦下,音乐播放器播放的时候,我打电话,这时候播放器应该暂停,直到挂断电话,然后音乐自己继续播放,这个播出电话事件怎么处理   回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码)[未登录] 2010-03-30 16:59 jason

在手机内存中存放mp3文件,是只能保存在 项目名/files/ 这个路径下面么  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-04-01 22:37 mtwu@sina.com

在nexus one 上双击后屏幕白屏,声音还在正常播放,希望完善,谢谢!支持你!  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-04-02 19:15 zh.weir

@jason

不好意思啊,这几天挺忙,没时间回你……现在终于放假闲下来了~
关于电话的的时候,真惭愧,我还没考虑过这个问题……

以前有点印象,来电时会有一个Intent,不知具体是怎么用的……
我现在确实不清楚,等我查查相关的资料,懂了之后再回答你吧……或者如果你已经解决了这个问题,也请你在这留个言,让我和大家都知道,谢啦!  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-04-02 19:35 zh.weir

@jason

为什么会有需要将音乐文件放在应用程序中呢?这是很占资源的行为啊……

关于"项目名/files/"这个文件夹,我还真没怎么听说过……好像二进制资源文件一般放在"项目名/assets/"目录下吧?我自己也不是很清楚。  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-04-02 19:37 zh.weir

@mtwu@sina.com

谢谢支持啊!不过现在有个问题。就是我根本没有nexus one来查看问题,所以这个还真有点不好办……

“双击白屏”……我记住了,我会仔细检查代码,看怎么会出现这种情况。  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-04-03 08:40 mtwu@sina.com

nexus one用户,谢谢你的回复,再补充一个现象,本身满屏的片子,*.3gp的,手机自拍的短片,播放时本身就是满屏的,双击后依旧白屏。  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-04-23 13:53 bluebird

谢谢楼主提供这么好的东西!
试了一下,发现播放视频的时候特别卡,声音挺好,视频的画面基本不动。请问在Eclipse里要怎么设置模拟器呢?  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-04-23 18:55 zh.weir

@bluebird

你是在模拟器里面播的吧?……用的是SDK多少版本的模拟器?
好像2.0及以上的模拟器都不能播视频了,有没有解决办法,我也不知道。

最好还是弄个机器来调程序吧,或者用1.6的模拟器……  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-04-24 16:29 bluebird

@zh.weir
对的,对的!我也试啦,只要把sdk换成1.5的就可以了呢~~

对了,直接输入视频的url可以播放视频吧?可是我找了好多url,都说视频格式不支持,不知道博主有没有可用的url呢,让我测试一下哈~~我试了音频的链接,是可以用的!!  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-04-24 18:48 zh.weir

@bluebird

那是因为很多视频格式都不支持吧……
我一般上3g.youku.com,优酷专门为手机做的视频网站。里面大多数视频都可以播,直接在浏览器打开就可以调用SeeJoPlayer播放了。  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-04-24 21:14 bluebird

@zh.weir
博主每天都回复留言,真是辛苦了啊!!哈哈~
我现在也在研究android开发,希望可以向博主请教一些问题。请问博主可以把联系方式(如qq)发给我吗?谢啦~~eveningpromise@yahoo.cn  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-04-24 22:03 zh.weir

@bluebird

QQ不经常在线,还是给你我的email吧。

zh.weir@gmail.com

欢迎交流!  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码)[未登录] 2010-05-10 14:52 呵呵

全屏时,左上角有一根图标的线没隐藏掉。
HTC DESIRE.
另,谢谢共享。  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-05-10 17:02 thank you

很不错,请问在模拟器下,全屏和竖屏如何切换?  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-05-10 22:31 zh.weir

@呵呵

了解了,这可能是程序的Bug,我会尽量在新版中修正,感谢你提出的宝贵建议!谢谢!  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-05-10 22:34 zh.weir

@thank you

1、在播放界面双击屏幕可在全屏模式和正常模式间切换;
2、为了给用户更好的观赏体验,我将竖屏模式给屏蔽了。因为竖屏时,视频正常播放画面很小,全屏播放又会使画面大幅度地拉伸,导致画面严重失真。所以,新版本在正常使用情况下,已经不会有竖屏的情况了。  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-05-14 18:18 kj_kang

现在的1.2版做得不错,我将它移到linux上试了,发现些小问题,主要是@Override的不合适使用,在linux上比较认真,在windows上则没问题,例如VideoPlayerActivity.java中的public boolean queueIdle(),是你内部的函数,不必要用@Override标注重用的。
另外,是报错时的显示,你用的汉字是GBK的,而不是UTF-8的,所以在linux上显示乱码。我做了些修正,用email发给你(这里好像不能加附件的),你看看是否合适。只是,要在property中将Resource的GBK字体改成UTF8才行,这样,linux和windows版本就兼容了。
顺便说一下,这个程序我在硬件平台上试了,很好用,还可以播放mkv和avi文件(因为硬件平台支持)。只是不知道为什么wmv文件不能播,那也是平台支持的啊。正在努力中。。。  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-05-15 17:02 thank you

试了下HTTP 播放很流畅,但RTSP有点问题,不知道是否是模拟器版本不支持。,我用的是SDK 1.6。
另外对于出错处理,您在错误提示方面 输出:对不起 格式不支持,应该是片面的吧,我测试的包括网络问题,协议不支持等情况
另外请问能否支持RTSP协议?
看了平台里面好像有RTSP的代码
如果想添加对RTSP流媒体协议的支持,应该怎样做啊,谢谢!!  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-05-15 20:43 zh.weir

@kj_kang

谢谢你的肯定和建议,也对你基于这份工程做更深入的开发表示崇敬~

字符编码确实是我没有引起重视,我应该将字符串放到资源文件中……
关于@Override的问题,确实存在这样的问题,只是是eclipse自动生成的辅助代码,我也不很清楚这个标记是否用对,还请指教~
  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-06-02 09:59 龙小龙

你好,博主.
我是今年才刚刚毕业的大学生,我现在也在公司从事android开发的工作,但因为经验不够,在遇到问题时不能更快地找到更快捷的解决方案.希望可以跟博主交个朋友,以请教一些问题.问博主可以把联系方式(如qq)发给我吗?谢啦.
以下是我的联系方式:
qq:343827585
我经常用的邮箱:343827585@qq.com  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码)[未登录] 2010-06-11 00:58 jack

谢谢分享,希望多出好文章,继续关注着。
http://www.getideas.cn/  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-07-30 16:16 xxxxx

您好,在网上看到您的SeeJoPlayer的视频播放器,软件界面美观大方,使用起来也十分方便!查看了您的源代码,2010.01.24 SeeJoPlayer v1.0.0版本的代码和源程序,感到有些困惑,首先有 10 个Java程序,
com\admob\android\ads这个包里面的6个Java程序是用来做什么的?可以删除吗?该软件的核心程序是VideoView.java吗?但感觉这个VideoView.java好像和其他几个Java程序没有关联啊。鄙人才疏学浅,还望高手指点一二,万分感谢!  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码)[未登录] 2010-07-30 19:48 weiwei

请问:为什么我在播放MP4电影时,只有声音,而没有影响?谢谢.  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码)[未登录] 2010-07-30 19:51 weiwei

@weiwei
请问:为什么我在播放MP4电影时,只有声音,而没有影象?谢谢.  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-07-31 14:16 zh.weir

@weiwei

不知是用什么机器进行播放的?请从片源和机器两方面找下原因。。。  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码)[未登录] 2010-08-03 18:47 weiwei

我用的是G1手机播放的.片源的后缀名为mp4.谢谢.  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-09-01 09:11 hassen

我用android1.6编译安装这个播放器,不知道为什么不能播放.3gp的文件,还请赐教,不甚感激!  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-09-03 09:50 hassen

SeeJoPlayer在1.6下不能播放网站的视频。还请赐教  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-09-03 18:57 zh.weir

@hassen

由于采用Android系统的OpenCore视频框架,所以在线视频同样存在很多限制。不能播在线视频的原因可能是网速问题,当然更有可能是视频格式不支持或者网络协议不支持等原因……
  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-09-11 18:13 gemingcao

在Android 1.6 的模拟器上不支持类似http://.../1.3gp的视频播放.
总是提示 播放格式不正确.

不知道是什么原因.望博主能帮我解惑.谢谢.

gemingcao#gmail.com  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-09-11 18:21 gemingcao

sorry 刚没有看到最后的评论.

借着@zh.weir对@hassen的评论.发布点意见.
由于采用Android系统的OpenCore视频框架,所以在线视频同样存在很多限制。不能播在线视频的原因可能是网速问题,当然更有可能是视频格式不支持或者网络协议不支持等原因……

1。网速原因不存在.我是用的1.6模拟器.是用的本机的局域网.
2。我将视频下载.然后放入1.6模拟器,能够正常播放.
3。网络协议不支持...不太懂.
4。等原因...  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-09-13 10:01 hassen

我和楼上的问题一模一样,我想对您的这个播放器进行推广,这个问题一直困扰了我好久,还请赐教,提示的错误是:
Command PlAYER_INIT completed with an error or info UNKNOWN PVMFStatus
error(200, -32)
stop cllledf in state 0

  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-09-13 19:19 kokorou

发现个不是问题的的问题
视频播放完后会自动退出程序o(∩_∩)o...  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-09-13 20:34 zh.weir

@hassen

可能是网络协议的问题吧…… 本地支持的视频格式,放在服务器上就不一定支持了。这方面我也没怎么研究过,大家多多找点相关资料吧~  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-10-27 16:15 wan

请问一下,这个程序不能打开机器上的文件吗?如果可以,怎么打开?
我将一个3gp文件放在了/data下,在地址栏:/data/test.3gp,但不能打开,放到网上就可以了,谢谢!  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2010-12-09 16:46 xingy

我最近刚开始学习android,你这个播放器功能很全我照着做了一下,我做了一个简单的应用,其中有个功能是播放器,想用你这个但是连不上老出现The application SeeJoPlayer(process com.zh_weir.videoplayer)has stopped unexpectedly. Please try again.
这个问题连接不上!想和您讨论一下!qq:542363555  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2011-03-23 20:19 freeze

博主先谢谢你提供的代码和软件。
我就是想问下这个代码里的广告移动平台AdView能不能删了?  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2011-03-23 20:20 freeze

博主,先谢谢你提供的代码和软件哈~我就是问下能不能删除代码里的AdView广告移动平台?  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2011-03-24 23:52 zh.weir

@freeze

呃。。。不好意思,最近很少上博客了。
代码可以删除啊,现在已经有很多Android的优秀播放器了,所以SeeJoPlayer也就没有再更新了。代码提供给大家学习研究之用,我应该不会再更新版本了。谢谢!  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2011-04-19 18:49 Jason2011

@zh.weir
楼主,本软件的在线视频播放为什么播不了?  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2011-04-22 20:29 钞振江

完美世界  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2011-04-25 10:57 kpanda

请问,你的http流是边下载边播放吗?  回复  更多评论   

# re:SeeJoPlayer怎么外挂字幕文件[未登录] 2011-04-27 09:30 will

SeeJoPlayer怎么加载外挂字幕文件???????????????
指教一下,不慎感激  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2011-04-28 15:35 maoling

博主,我想问一下,我修改了部分代码,为什么就执行不了surfaceholder中的surfaceCreated了?  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2011-04-30 13:41 zh.weir

@kpanda

SeeJoPlayer对http流是边下载边播放。因为他采用的Android系统自带的MediaPlayer进行播放的。具体可以参考MediaPlayer等相关源码。  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2011-04-30 13:53 zh.weir

@will

SeeJoPlayer现并不支持字幕加载。而且这个项目,现在我已经不再维护了。

如果你是SeeJoPlayer的使用者,那我建议可以选择其他一些国产的好的播放器,现在已经有了很多很好的播放器。

如果你是参考SeeJoPlayer源码的开发者,而又想实现字幕加载的功能。那我简单地说下我的思路,供你参考。

外挂字幕支持,最主要的开发工作有三部分:一是字幕文件的解析,二是字幕与视频的同步,三是显示界面。

字幕文件解析的话,主要就是正则表达,以及数据结构等问题,这方面网上已经有很多源码可以参考(主要是C++,不过算法、数据结构是共通的)。

字幕与视频的同步可以采取定时获取视频进度再查询字幕数据的方式,我以前试过,对播放效率没有太大影响。

显示的话,SeeJoPlayer这种方式是不可能将字幕合成到视频画面中的。不过,我们可以用FrameLayout将VideoView和字幕显示的View叠加起来,可以达到几乎同样的效果。

这只是我的一点思路,希望对你有所帮助!如果你有更好的办法,也希望在此留言,与我和关注SeeJoPlayer源码的朋友们一起分享,谢谢!  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2011-05-18 16:35 甲壳虫

关于SeeJoPlayer播放器如何让他同时可以播放MP3 呢?
另外如果单独做音乐播放器 如何支持APE格式不知道您有什么思路没
我看过很多都是fmmpeg解码什么的 完全是蒙的!  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码)[未登录] 2011-06-01 10:53 王鹏

在们在手机中点击 files 直接进入文件后,选择一个存在手机文件中的视频资源( 比如 [android开发].MP4 ),它会弹出一个对话列表‘使用以下内容完成操作:’然后列表里会有手机中已经装载好的各种播放器以供选择,如Rockplayer.SeeJoPlayer.Video Player等。问题就是我自己的播放器也装载在手机里了,但是没出现在这个选择列表中,我想让自己的播放器也出现在用户选择files中视频资源弹出选择播放器的上下选择菜单中。这个我还不知道怎实现,如果需要代码来实现,具体是在源代码哪个部分呢,求赐教...  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2011-06-13 15:36 zh-weir

@王鹏

请关注下Manifest.xml中对应Activity的Intent-Filter写法。  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2011-07-13 11:13 和小小

请问如何输入URL播放视频?像第一张图片那样。
QQ552144981,求指教!  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2011-07-18 10:15 穆正军

请问一下 你设置分辨率的 代码是哪一个?  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2011-07-18 10:30 穆正军

你好 非常感谢您的分享,请问 你自适应分辨率的代码在哪写的呢?  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2011-07-19 23:46 zh.weir

@和小小

邮件已收到,我今天上博客。就在博客回你吧。这样,别人有类似问题也能看到。

要有URL input功能 请保证你的seejoplayer版本在v1.2.0 beta版以上。在出现进度条及操作按钮界面时,点击右下方的第一个按钮即可弹出文本输入框。  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2011-07-19 23:48 zh.weir

@穆正军

分辨率自适应由Android系统自行拉伸处理。再写代码时只需要注意layout.xml中的尺寸属性不要写死,而要使用例如layout_weight之类的属性,以适应不同分辨率的屏幕。  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2011-08-08 15:25 rhettxiao

支持标准的rtsp视频流播放吗  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2011-08-29 10:13 xiangrenhua

您好,android开发的初学者,看了SeeJoPlayer播放器的源代码,收益匪浅。只是还有个问题想请教下您,如果我要播放其他格式的视频(如.m2ts,.mov等格式),我该在哪里做修改?  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2011-11-18 11:27 li88owert

非常感谢博主的开源精神.  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2012-03-16 14:30 sunjunliang52

我东西   回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2012-03-21 11:45 yyf

老师,您好,对于您做的SeeJoPlayer播放器,我非常的崇拜。我想请教您点问题,我现在需要利用ffmpeg做android的播放器,想在您做的播放器基础上改进,比如解码用ffmpeg等,不知道这个想法可行不可行?
祝您愉快
  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2012-04-16 14:46 aduovip

请教博主, 为什么我按照这种写法,视频播放时,只是闪一下就看不到画面了?  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2012-09-28 23:44 csst

楼主,麻烦给我也发一份源码吧,正在研究这个,感激不尽  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2012-09-28 23:45 csst

我的邮箱 253815347@qq.com
麻烦楼主了  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2012-12-08 15:12 压顶地方官

在哪控制视频控件器弹出的时机呢?经常是先出现控制器一会再跳出视频...  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2012-12-27 11:12 笑天

博主你好,感谢你的分享!
我想请教下,为什么不直接继承VideoView,然后重写需要修改的方法,而要自己写一个VideoView呢?  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2012-12-27 11:13 笑天

额,忘了留联系方式了,QQ 383635659  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2013-01-24 15:12 wang xizhang

你的源码里有自己打的jar包,能给jar包的源文件吗,谢谢了,我也是干这个的,发现你写很好,想借鉴一下我的qq是542020404  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2013-01-29 11:55 凯诺Me

楼主,这个不支持在线播放啊  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2013-03-10 09:38 tqmonkey41

楼主,这里代码里哪里一部分是实现网络播放的啊  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码)[未登录] 2013-04-12 15:11 yuyi

@xiangrenhua
  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2013-10-25 12:28 skwok

请问SeeJoPlayer支持udp媒体串流播放吗?  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2014-02-27 10:12 haiwen

楼主,麻烦给我也发一份源码吧,正在研究这个,感激不尽
我的qq:510130674, 邮件地址: 510130674@qq.com  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码)[未登录] 2014-02-27 11:01 zh.weir

@haiwen

可以直接下载啊。文中有下载地址。  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2014-03-21 09:30 张社新

你好,我想问下,竖屏是在哪修改,谢谢  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2014-03-21 10:09 张社新

多谢,已经找到  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2014-03-29 12:15 jemc

程序在打开时明显很慢,甚至卡死的情况都有。不过只要在getgetVideoFile()里面用启动线程的方式。这样程序就打开得更快了。基本上就不会卡死,放上phonegap的效果更明显  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2014-03-29 12:15 jemc

谢谢楼主的无私奉献,的确很适合新手学习。呵呵。。  回复  更多评论   

# 转发re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2015-02-03 08:27 转发

转发  回复  更多评论   

# 转发re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2015-02-03 08:27 转发

转发,很好,谢谢  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2015-07-08 11:04 灰灰

这个是bug?调出aboot框时,视频是暂停的,点击about框中的邮箱链接或者地址链接,然后返回到aboot框,视频会在aboot框后面播放。  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2015-11-09 15:35 周政

代码写的不是一般般的乱。。。  回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2016-01-14 16:10 kai.yang

楼主,麻烦给我也发一份源码吧,正在研究这个,感激不尽
我的qq:974745117, 邮件地址: 974745117@qq.com   回复  更多评论   

# re: Android平台下SeeJoPlayer视频播放器(功能介绍及源码解析,附源码) 2016-01-14 17:20 kai.yang

可以在线播放了,能自定义控制屏幕大小,进度条拖动  回复  更多评论   

评论共2页: 1 2 下一页 

只有注册用户登录后才能发表评论。


网站导航:
 

公告

大家好!欢迎光临我的 Android 技术博客!



本博客旨在交流与 Android 操作系统相关的各种技术及信息。

博客内的文章会尽量以开源的形式提供给大家,希望我们能相互交流,共同提高!

有不足之处,请不吝赐教!

我的邮箱:zh.weir@gmail.com
我的新浪微博:@囧虎张建伟

 

导航

<2016年1月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

留言簿(19)

随笔分类(24)

随笔档案(18)

文章档案(1)

搜索

最新评论

阅读排行榜

评论排行榜