基于Linux电视棒实现DLNA和airplay功能

出发点:Android电视棒实现DLNA功能采用JAVA版本的cyberlink的话,缺点明显,SSDP协议设备发现有延时(有时还发现不了设备)体验差,基于Linux电视棒可以控制硬件成本在100元以下,而且c语言实现的cyberlink DLNA协议栈不存在设备发现不了的情况,本文记录记录linux下实现dlna碰到的一揽子问题

1. DLNA的DMR方案

方案1: MediaGateForCC (http://www.cybergarage.org/twiki/bin/view/Main/MediaGateForCC) 交叉编译,基于gstreamer实现播放器

Cyberlink协议栈需要依赖xml库, 可以选择xerces和libxml2, xerces是apatch提供的一个比较庞大的xml解析库,嵌入式设备不考虑。 

1) 编译libxml2

./configure --prefix=/home/work/mylib --host=mips-linux-gnu --build=i686 --target=mips-linux-gnu CC=mips-linux-gnu-gcc -EL CFLAGS=-I/home/work/mylib/include LDFLAGS=-L/home/work/mylib/lib

2)编译MediaGateForCC

 ./configure --prefix=/home/work/mylib --host=mips-linux-gnu --build=i686 --target=mips-linux-gnu CC=mips-linux-gnu-gcc -EL --enable-libxml2 CFLAGS=-I/home/work/mylib/include CPPFLAGS=-I/home/work/mylib/include LDFLAGS=-L/home/work/mylib/lib 

错误1:LibXml2Parser.cpp中Node *newChildNode = convertToCLinkFormat( doc, child, depth  1)改成Node *newChildNode = convertToCLinkFormat( doc, child, depth );

错误2:ControlPoint.cpp中Device **dev = new (Device(*[devCnt])); 改成 Device **dev = new Device* [devCnt];

编译成功

3) CyberLink中没有实现Media Renderer的AVTransport和RenderingControl服务,以下是补充的AVTransport..h和RenderingControl.h

class AVT : public ActionListener, public QueryListener
{

	CyberUtil::Mutex mutex;
	int maxConnectionID;

	
	
	// Constants
	

public:

	static const char *DESCRIPTION;

	static const char *SERVICE_TYPE;

	static const char * TRANSPORTSTATE ;
	static	const char *  TRANSPORTSTATUS ;
	static	const char *  PLAYBACKSTORAGEMEDIUM;
	static	const char *  RECORDSTORAGEMEDIUM;
	static	const char *  POSSIBLEPLAYBACKSTORAGEMEDIA;
	static	const char *  POSSIBLERECORDSTORAGEMEDIA;
	static	const char *  CURRENTPLAYMODE ;
	static	const char *  TRANSPORTPLAYSPEED;
	static	const char *  RECORDMEDIUMWRITESTATUS ;
	static	const char *  CURRENTRECORDQUALITYMODE ;
	static	const char *  POSSIBLERECORDQUALITYMODES;
	static	const char *  NUMBEROFTRACKS;
	static	const char *  CURRENTTRACK;
	static	const char *  CURRENTTRACKDURATION;
	static	const char *  CURRENTMEDIADURATION;
	static	const char *  CURRENTTRACKMETADATA;
	
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值