MPlayer上支持RTSP流媒体(live555作为流媒体播放器)

    条件: 在中天CK810的CPU上运行linux12.04操作系统以tft传输方式加载uImage;

考虑到针对性,一开始mplayer的编译选项并不是mplayer官网上下载下来的configure,很多条件都是disable的,链接文件和链接库也是有自己的指定位置 -Ixx -Lxx 

  (1)查找player播放RTSP流的命令 mplayer rtsp://192.168.1.2:/video.264 板子和电脑之间使用网线进行连接;

  (2)在同一台电脑上使用live555播放,mplayer可以接收到;但是在板子上运行之后就会出现Server returned 404:Not found;用wireshark进行抓包的时候根本就没有相关RTP或者RTSP的数据包出现只有TCP和NFS的数据包,最后发现原因在于配置文件时--disable-networking;

  (3)之后再次配置编译运行的时候终端出现了Server returned 405:Method Not Allowed;跟踪源码发现程序在执行过程中跳到了HTTP相关的函数中去,405代码时HTTP 标准的状态码,大概花了一天的时间和电脑上的配置文件进行比较发现了是因为 --disable-live了;

  (4)在enable-live配置选项打开之后,编译就出现了错误:fatal error:liveMedia.hh:No Such file or directory;原来编译的时候还要将live555的头文件和库文件的位置写到配置脚本文件build-mp4g.sh中去。

  (5)上述步骤完成之后,编译还是有问题,连operator new()这个标准C++方法都是undefined;最后在有经验的同事的帮助下找到了原因,Mplayer是用C语言编写的,在Makefile文件中无论.c文件还是.cpp文件最后都是通过CC也就是中天的交叉编译器csky-abiv2-linux-gcc来实现的,同样最后的链接也是它,所有就在Makefile中将gcc改为了g++。

  (6)终于编译成功了,还以为一切都OK了,但是板子上出现了这样一个错误:Can't loading stdc++.so.6;将交叉编译好的标准的C++库cp到../rootfs/usr/lib下面后,终于可以运行MPlayer,但是在程序的最后出现了:MPlayer interrupted by signal 11 in module:decode_video;最后在有经验的同事在板子上使用gdbserver,在PC端使用gdb进行了调试,最后将错误定位live555源文件中的传参数的时候传了一个空指针,导致出现了段错误。

  (7)经过这一系列的错误发现和改正之后,终于在板子上MPlayer可以播放RTSP流了,前前后后差不多花了一个礼拜的时间,这一个礼拜心里真的是很煎熬,这也算是我在士兰实习的第一个要自己去完成的任务,也想证明一下我自己吧,结果现实还是太残忍,真的有太多的不会,现在大四的我也发现了企业工作和大学学习有很多很多的不同,而经过这次的实践其实大学里学习成绩好并不能证明很多东西,对于技术这种工作还是自学能力要比较强的,对于开源软件的阅读也是程序猿的必修课,虽然这一个礼拜我的心里压力很大,但是我对自己还是很有信心的,士兰的氛围也是蛮不错的,我想我的选择也是没有错的,我也希望能够在这家公司呆上至少三年,慢慢成长。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值