您的位置:首页 > 编程语言 > Python开发

<Python核心编程(第二版)>第五章练习题二

2012-07-20 19:32 489 查看
一、 在项目中要播放网络视频文件,视频文件格式是Mp4,因为以前进行过相关开发,所以没有想太多,拿到网络地址就在模拟器上进行运行
代码如下

vv.setVideoURI(Uri.parse("http://192.168.0.228:8080/WorkLogServer/WebRoot/test.mp4"));

vv.setMediaController(new MediaController(this));

vv.start();

本以为没有问题,结果发现怎么也不能播放,异常报告如下

D/MediaPlayer(585): Couldn't open file on client side, trying server side

D/MediaPlayer(585): getMetadata

E/MediaPlayer(585): error (1, -2147483648)

E/MediaPlayer(585): Attempt to call getDuration without a valid mediaplayer

E/MediaPlayer(585): error (-38, 0)

E/MediaPlayer(585): Attempt to call getDuration without a valid mediaplayer

E/MediaPlayer(585): error (-38, 0)

E/MediaPlayer(585): Error (1,-2147483648)

D/VideoView(585): Error: 1,-2147483648

E/MediaPlayer(585): Error (-38,0)

D/VideoView(585): Error: -38,0

E/MediaPlayer(585): Error (-38,0)

D/VideoView(585): Error: -38,0

于是在网上查资料要进行转码,转码工具MP4box进行hint,当我把网络上的MP4视频文件进行转码后发现还是不能播放。因此以为我的转码工具不够,或者是我转码方式不对,
Mp4box下载http://down.51cto.com/data/775652
于是我安装了ffmpeg转码系统。悲剧再次来临。把转码好的MP4视频文件放在网络服务器上访问还是不能播放。
ffmpeg下载:http://down.51cto.com/data/775659
再次以为是播放代码不支持,因此使用了暴风、SeeJoPlayer等播放器在模拟器你进行播放,发现还是不行。不管是本地还是网络都不能播放。
很无奈之下选择使用真机试一下,发现本地和网络都可以播放。于是问题就被搁浅了。模拟器为什么不能播放MP4的视频文件。求大神们给解答一下。。。

二、在低版本android2.2中播放视频时出现了E/MediaPlayer(21034): error (1, -18)
使用格式工厂进行移动设备转码解决,注意只能转码成支持当前真机分辨率下的格式以及大小
最终低版本的视频播放解决方案成为完整。无论是高版本和低版本都可以进行视频播放了。
注:视频文件转码又成为了解决方案的又一个问题。

一年多了,我现在才有时间写这个篇博客的解决办法
其实已经有很多公司提供了视频解码库支持。比如vitamio 还有百度服务等都提供这个方面的技术支持。如果你懂这个可以使用开源的ffmeg设计自己的底层适配解码库。当然你得懂c、c++等相关方面的技术。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: