android网络编程之网络视频播放

一、 在项目中要播放网络视频文件,视频文件格式是Mp4,因为以前进行过相关开发,所以没有想太多,拿到网络地址就在模拟器上进行运行

代码如下


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

  2. vv.setMediaController(new MediaController(this));

  3. vv.start();


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



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

  2. D/MediaPlayer(585): getMetadata

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

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

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

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

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

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

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

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

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

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

  13. 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++等相关方面的技术。




你可能感兴趣的:(android,网络编程,视频播放,网络视频)