crtmpserver svn.717 记录

来源:互联网 发布:sheme数据库方案例子 编辑:程序博客网 时间:2024/05/16 02:04

crtmpserver svn.717 的一些记录,操作系统为win 7 64bit。

下载后打开vs2010工程,把crtmpserver设为启动项目(默认启动项目是common),编译crtmpserver工程,出现错误:

3>e:\project\crtmpserver-717\sources\thelib\src\protocols\liveflv\innetliveflvstream.cpp(111): error C2593: “operator =”不明确3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(149): 可能是“Variant &Variant::operator =(const char *)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(145): 或       “Variant &Variant::operator =(const double &)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(144): 或       “Variant &Variant::operator =(const uint64_t &)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(143): 或       “Variant &Variant::operator =(const uint32_t &)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(142): 或       “Variant &Variant::operator =(const uint16_t &)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(141): 或       “Variant &Variant::operator =(const uint8_t &)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(140): 或       “Variant &Variant::operator =(const int64_t &)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(139): 或       “Variant &Variant::operator =(const int32_t &)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(138): 或       “Variant &Variant::operator =(const int16_t &)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(137): 或       “Variant &Variant::operator =(const int8_t &)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(136): 或       “Variant &Variant::operator =(const bool &)”3>          尝试匹配参数列表“(Variant, int)”时3>e:\project\crtmpserver-717\sources\thelib\src\protocols\liveflv\innetliveflvstream.cpp(114): error C2593: “operator =”不明确3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(149): 可能是“Variant &Variant::operator =(const char *)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(145): 或       “Variant &Variant::operator =(const double &)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(144): 或       “Variant &Variant::operator =(const uint64_t &)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(143): 或       “Variant &Variant::operator =(const uint32_t &)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(142): 或       “Variant &Variant::operator =(const uint16_t &)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(141): 或       “Variant &Variant::operator =(const uint8_t &)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(140): 或       “Variant &Variant::operator =(const int64_t &)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(139): 或       “Variant &Variant::operator =(const int32_t &)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(138): 或       “Variant &Variant::operator =(const int16_t &)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(137): 或       “Variant &Variant::operator =(const int8_t &)”3>          e:\project\crtmpserver-717\sources\common\include\utils\misc\variant.h(136): 或       “Variant &Variant::operator =(const bool &)”3>          尝试匹配参数列表“(Variant, int)”时

去crtmpserver  google group查了下发现【这里】提到解决方法,其实就是

sources/thelib/src/protocols/liveflv/innetliveflvstream.cpp And replace line 111 with: info["audio"]["droppedPacketsCount"] = (uint64_t)0; And line 114 with: info["video"]["droppedPacketsCount"] = (uint64_t)0; 

再次编译,出现另外的问题

defaultprotocolfactory.obj : error LNK2019: riferimento al simbolo esterno "public: __thiscall NATTraversalProtocol::NATTraversalProtocol(void)" (??0NATTraversalProtocol@@QAE@XZ) non risolto nella funzione "public: virtual class BaseProtocol * __thiscall DefaultProtocolFactory::SpawnProtocol(unsigned __int64,class Variant &)" (?SpawnProtocol@DefaultProtocolFactory@@UAEPAVBaseProtocol@@_KAAVVariant@@@ Z) outboundconnectivity.obj : error LNK2019: riferimento al simbolo esterno "public: void __thiscall NATTraversalProtocol::SetOutboundAddress(struct sockaddr_in *)" (?SetOutboundAddress@NATTraversalProtocol@@QAEXPAUsockaddr_in@@@Z) non risolto nella funzione "public: bool __thiscall OutboundConnectivity::RegisterUDPVideoClient(unsigned long,struct sockaddr_in &,struct sockaddr_in &)" (?RegisterUDPVideoClient@OutboundConnectivity@@QAE_NKAAUsockaddr_in@@0@Z) 

前面那个帖子也说道解决方法

i think you can fix this by including this header: sources/thelib/include/protocols/rtp/nattraversalprotocol.h and this source: sources/thelib/src/protocols/rtp/nattraversalprotocol.cpp 


现在编译和连接都没问题了,开始debug,crtmpserver.exe启动时需要加载配置文件,就是那个crtmpserver.lua,

crtmpserver.exe crtmpserver.lua

在vs2010启动调试的话要做一点修改。在crtmpserver工程属性的调试页,命令参数填上crtmpserver.lua,工作目录修改为crtmpserver.exe所在的目录(不然会出现各种路劲找不到文件的问题)。

启动调试,发现没找到libeay32.dll, crtmpserver要用到SSL,请下载openssl-win32,然后把libeay32.dll和ssleay32.dll扔去crtmpserver.exe所在目录。

再次启动调试,发现一瞬间就退出了,经过debug,都是配置文件(crtmpserver.lua)的问题。把crtmpserver.lua的94、95行注释掉:

--sslKey="server.key",--sslCert="server.crt"


这两个文件可以用openssl生成,具体不说了。

再次启动,成功。


关于crtmpserver里rtmp的auth

authentication={rtmp={type="adobe",encoderAgents={"FMLE/3.0 (compatible; FMSc/1.0)","My user agent",},usersFile="users.lua"}}


users.lua格式(放到applications\flvplayback\目录下):

users={         user1="pass1",         user2="pass2" } 








原创粉丝点击