textureView和mediaplayer 的一个类似微视首页的视频列表问题

Android 码拜 10年前 (2015-04-25) 1312次浏览 0个评论
 

 最近公司的一个项目,项目需求是类似于微信的首页,展示一个短视频的列表通过listview 里面每个item由一个textureView作为视频播放控件,开始用的是videoview但是发现不能改变大小,滑动列表的时候会暂停播放。
所以使用textureView做,但是现在的问题是textureView加载的列表很卡,内存占用很大。不知道是不是因为每一个item的textureView使用的资源没有释放还是因为别的什么,例如当A、B、C三个条目,当滑动之后A隐藏了 所以这个时候应该释放掉中的内容, 可是应该怎么释放呢?

textureView和mediaplayer 的一个类似微视首页的视频列表问题
40分
用TextureView + MediaPlayer实现,本身性能没有问题,看一下你的代码吧,可能是有的地方没写好
textureView和mediaplayer 的一个类似微视首页的视频列表问题
引用 1 楼 youngc527 的回复:

用TextureView + MediaPlayer实现,本身性能没有问题,看一下你的代码吧,可能是有的地方没写好

我知道是有些地方没写好,但是还没有找到原因啊,第一次接触多媒体类的开发,有点晕啊,请问您做过类似的么?

public void onScrollStateChanged(AbsListView view, int scrollState) {
			// TODO Auto-generated method stub
			 View firstItem = views.get(Integer
                     .valueOf(firstVisibleIndex));
			 View firstItem1 = views.get(Integer
                     .valueOf(firstVisibleIndex)+1);
	          if (scrollState == SCROLL_STATE_IDLE) {
                 
                  if (firstItem != null) {
                          int[] location = new int[2];
                          firstItem.getLocationOnScreen(location);
                          int x = location[0];
                          int y = location[1];
                          System.out.println("====== x: " + x + "  y:" + y);
                         com.weishi.view.VideoPlayTextureView	textureView = (VideoPlayTextureView) firstItem.findViewById(R.id.videoview);
                  		 ProgressBar loading=(ProgressBar) firstItem.findViewById(R.id.loading);
                   		ImageView video=(ImageView) firstItem.findViewById(R.id.video_cover_default);
                   		ImageView videoPlay=(ImageView) firstItem.findViewById(R.id.play_controller);
                   		if (textureView.isAvailable()) {
             	               	    textureView.prepare(list.get(3));//后续处理,标记
             	               		loading.setVisibility(View.GONE);
             	               		Log.e("position2", "______________+++++++"+Integer.valueOf(firstVisibleIndex));
             	  	        		video.setVisibility(View.GONE);
             	  	        		if (textureView.getMediaState()==MediaState.PLAY) {
             
             						}else {
             							textureView.play();
             
             						}
             	  	        		}
textureView和mediaplayer 的一个类似微视首页的视频列表问题
quote]

textureView.setSurfaceTextureListener(new SurfaceTextureListener() {

							@Override
							public void onSurfaceTextureUpdated(SurfaceTexture surface) {
								// TODO Auto-generated method stub

							}

							@Override
							public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width,
									int height) {
								// TODO Auto-generated method stub

							}

							@Override
							public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
								// TODO Auto-generated method stub
								return false;
							}

							@Override
							public void onSurfaceTextureAvailable(SurfaceTexture surface, int width,
									int height) {
								// TODO Auto-generated method stub
						             textureView.prepare(list.get(3));
						             textureView.play();;
							}
						});

[/code]
这里的回调为什么接收不到呢?

textureView和mediaplayer 的一个类似微视首页的视频列表问题
楼主现在开发的怎么样了,我现在一个项目也是类似需求,也用了TextureView放在listView的item里面,但是TextureView好像没有加载,onSurfaceTextureAvailable方法触发不了,楼主找到原因了么。。
textureView和mediaplayer 的一个类似微视首页的视频列表问题
引用 4 楼 xiandan87 的回复:

楼主现在开发的怎么样了,我现在一个项目也是类似需求,也用了TextureView放在listView的item里面,但是TextureView好像没有加载,onSurfaceTextureAvailable方法触发不了,楼主找到原因了么。。

我的大致功能实现了。。TextureView要在一定条件下去展示;例如

	if (textureView.isAvailable()) {
				textureView.prepare(getPath(FileName));
				loading.setVisibility(View.GONE);
				video.setVisibility(View.GONE);
				textureView.getMediaPlayer().setOnPreparedListener(new OnPreparedListener() {
					@Override
					public void onPrepared(MediaPlayer mp) {
							Log.e("加入的mediaplayer","位置" + 0 + "mediaplayer"+ textureView.getMediaPlayer());
							textureView.play();
							videoPlay.setVisibility(View.GONE);
						}
					});
textureView和mediaplayer 的一个类似微视首页的视频列表问题
楼主,我最近也在学习类似的东西,看了你的帖子很感兴趣,不知道你的实现了没?能不能提供一份demo,非常感谢!
邮箱:452117490@qq.com
textureView和mediaplayer 的一个类似微视首页的视频列表问题
求分享下demo
textureView和mediaplayer 的一个类似微视首页的视频列表问题
384719678@qq.com 求分享demo
textureView和mediaplayer 的一个类似微视首页的视频列表问题
可以分享一下你的Demo?  1556652327@qq.com  谢谢!
textureView和mediaplayer 的一个类似微视首页的视频列表问题
我的qq 841350309 有问题可以一起讨论
textureView和mediaplayer 的一个类似微视首页的视频列表问题
有问题 可以加微视讨论群 290087364 欢迎大家讨论
textureView和mediaplayer 的一个类似微视首页的视频列表问题
382496617@qq.com,求分享demo,已经卡住了快一星期了,求大神解救
textureView和mediaplayer 的一个类似微视首页的视频列表问题
447984537@qq.com    求大大分享  或者 加QQ 调教下小弟
textureView和mediaplayer 的一个类似微视首页的视频列表问题
LZ,请问能不能给个Demo,我现在做的 onSurfaceTextureAvailable 这个方法触法不了,

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明textureView和mediaplayer 的一个类似微视首页的视频列表问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!