Chinaunix首页 | 论坛 | 博客
  • 博客访问: 318709
  • 博文数量: 71
  • 博客积分: 1450
  • 博客等级: 上尉
  • 技术积分: 762
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-14 13:31
文章分类

全部博文(71)

文章存档

2014年(3)

2013年(8)

2011年(9)

2010年(38)

2009年(13)

我的朋友

分类:

2010-03-02 15:53:10

http://blog.sina.com.cn/s/blog_5be1061c0100b8yg.html

   上个星期做了TCPMP的播放器,音频和图片很容易就搞定了,毕竟做了很多版本了,但在视频播放器上转了很久,总有些视频文件播放时要就不显示,要就花屏.开始以为是开发平台速度引起的(CPU 400M+DSP),后来用别人的播放器又可以正常播放,摸索了很久,终开找到原因了,和大家分享.

 

TCPMP花屏现象解决方法


现象:
1.完全不能播放,但不是硬件引起的原因
     
解决方法:设置显示大小时要注意比例,一般为4:3 或 15:9,还有几种,但比例一定要对,要不可能不能正常播放视频文件。

play* VideoPlayer;
#define VIDEO_VIEWPORT_X             130
#define VIDEO_VIEWPORT_Y             22
#define VIDEO_VIEWPORT_HEIGHT        178
#define VIDEO_VIEWPORT_WIDTH         340
rect Viewport;
Viewport.x = VIDEO_VIEWPORT_X;
Viewport.y = VIDEO_VIEWPORT_Y;
Viewport.Height = VIDEO_VIEWPORT_HEIGHT;
Viewport.Width = VIDEO_VIEWPORT_WIDTH;

VideoPlayer->Set(VideoPlayer,PLAYER_SKIN_VIEWPORT,&Viewport,sizeof(rect));
VideoPlayer->Set(VideoPlayer,PLAYER_UPDATEVIDEO,NULL,0);

2.有的视频可以播放,有的视频文件播放时有声音,但是看不见图像,一屏的雪花点或条纹。
    
解决方法:和视频驱动的缓存方式有关,在TCPMP中有两种缓存方式:帧缓存和GDI缓存.在有如上现象时把帧缓存改成GDI缓存.
play* VideoPlayer;
#define VIDEO_DRIVER_RAWFPS           0
#define VIDEO_DRIVER_GDI              1
#define VIDEO_DRIVER_NOVIDEO          2

//启用GDI缓冲视频驱动
int VideoAccel=0;
VideoPlayer->Set(VideoPlayer,PLAYER_VIDEO_ACCEL,&VideoAccel,sizeof(VideoAccel));
VideoPlayer->Set(VideoPlayer,PLAYER_VOUTPUTID,ARRAYBEGIN(VOutput_Video,int)+VIDEO_DRIVER_GDI,sizeof(int));

阅读(902) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~