调整rtmp 的音视频chunkID以及其他细节

This commit is contained in:
xzl 2017-05-27 11:26:49 +08:00
parent c3231d2156
commit e3c1fb3648
4 changed files with 13 additions and 13 deletions

View File

@ -46,7 +46,8 @@ using namespace ZL::Util;
#define CHUNK_SERVER_REQUEST 2 /*服务器像客户端发出请求时的chunkID*/ #define CHUNK_SERVER_REQUEST 2 /*服务器像客户端发出请求时的chunkID*/
#define CHUNK_CLIENT_REQUEST_BEFORE 3 /*客户端在createStream前,向服务器发出请求的chunkID*/ #define CHUNK_CLIENT_REQUEST_BEFORE 3 /*客户端在createStream前,向服务器发出请求的chunkID*/
#define CHUNK_CLIENT_REQUEST_AFTER 4 /*客户端在createStream后,向服务器发出请求的chunkID*/ #define CHUNK_CLIENT_REQUEST_AFTER 4 /*客户端在createStream后,向服务器发出请求的chunkID*/
#define CHUNK_MEDIA 6 /*媒体chunkID*/ #define CHUNK_AUDIO 6 /*音频chunkID*/
#define CHUNK_VIDEO 7 /*视频chunkID*/
#define FLV_KEY_FRAME 1 #define FLV_KEY_FRAME 1
#define FLV_INTER_FRAME 2 #define FLV_INTER_FRAME 2

View File

@ -126,13 +126,16 @@ inline void RtmpPlayer::send_connect() {
AMFValue obj(AMF_OBJECT); AMFValue obj(AMF_OBJECT);
obj.set("app", m_strApp); obj.set("app", m_strApp);
obj.set("tcUrl", m_strTcUrl); obj.set("tcUrl", m_strTcUrl);
//未使用代理
obj.set("fpad", false); obj.set("fpad", false);
//参考librtmp,什么作用?
obj.set("capabilities", 15); obj.set("capabilities", 15);
//SUPPORT_VID_CLIENT_SEEK 支持seek
obj.set("videoFunction", 1); obj.set("videoFunction", 1);
//只支持aac //只支持aac
obj.set("audioCodecs", 3191); obj.set("audioCodecs", (double)(0x0400));
//只支持H264 //只支持H264
obj.set("videoCodecs", 252); obj.set("videoCodecs", (double)(0x0080));
sendInvoke("connect", obj); sendInvoke("connect", obj);
addOnResultCB([this](AMFDecoder &dec){ addOnResultCB([this](AMFDecoder &dec){
//TraceL << "connect result"; //TraceL << "connect result";

View File

@ -81,17 +81,13 @@ void RtmpSession::onCmd_connect(AMFDecoder &dec) {
m_strApp = params["app"].as_string(); m_strApp = params["app"].as_string();
bool ok = true; //(app == APP_NAME); bool ok = true; //(app == APP_NAME);
AMFValue version(AMF_OBJECT); AMFValue version(AMF_OBJECT);
version.set("fmsVer", "ZLMediaKit"); version.set("fmsVer", "FMS/3,0,1,123");
version.set("capabilities", 255.0); version.set("capabilities", 31.0);
version.set("mode", 1.0);
AMFValue status(AMF_OBJECT); AMFValue status(AMF_OBJECT);
status.set("level", ok ? "status" : "error"); status.set("level", ok ? "status" : "error");
status.set("code", ok ? "NetConnection.Connect.Success" : "NetConnection.Connect.InvalidApp"); status.set("code", ok ? "NetConnection.Connect.Success" : "NetConnection.Connect.InvalidApp");
status.set("description", ok ? "Connection succeeded." : "InvalidApp."); status.set("description", ok ? "Connection succeeded." : "InvalidApp.");
status.set("objectEncoding", amfVer); status.set("objectEncoding", amfVer);
AMFValue data(AMF_ECMA_ARRAY);
data.set("version","0.0.0.1");
status.set("data", data);
sendReply(ok ? "_result" : "_error", version, status); sendReply(ok ? "_result" : "_error", version, status);
if (!ok) { if (!ok) {
throw std::runtime_error("Unsupported application: " + m_strApp); throw std::runtime_error("Unsupported application: " + m_strApp);

View File

@ -82,7 +82,7 @@ void RtspToRtmpMediaSource::makeVideoConfigPkt() {
m_rtmpPkt.strBuf.append(m_pps); m_rtmpPkt.strBuf.append(m_pps);
m_rtmpPkt.bodySize = m_rtmpPkt.strBuf.size(); m_rtmpPkt.bodySize = m_rtmpPkt.strBuf.size();
m_rtmpPkt.chunkId = CHUNK_MEDIA; m_rtmpPkt.chunkId = CHUNK_VIDEO;
m_rtmpPkt.streamId = STREAM_MEDIA; m_rtmpPkt.streamId = STREAM_MEDIA;
m_rtmpPkt.timeStamp = 0; m_rtmpPkt.timeStamp = 0;
m_rtmpPkt.typeId = MSG_VIDEO; m_rtmpPkt.typeId = MSG_VIDEO;
@ -116,7 +116,7 @@ void RtspToRtmpMediaSource::onGetH264(const H264Frame& frame) {
m_rtmpPkt.strBuf.append(&frame.data[4], frame.data.size() - 4); m_rtmpPkt.strBuf.append(&frame.data[4], frame.data.size() - 4);
m_rtmpPkt.bodySize = m_rtmpPkt.strBuf.size(); m_rtmpPkt.bodySize = m_rtmpPkt.strBuf.size();
m_rtmpPkt.chunkId = CHUNK_MEDIA; m_rtmpPkt.chunkId = CHUNK_VIDEO;
m_rtmpPkt.streamId = STREAM_MEDIA; m_rtmpPkt.streamId = STREAM_MEDIA;
m_rtmpPkt.timeStamp = frame.timeStamp; m_rtmpPkt.timeStamp = frame.timeStamp;
m_rtmpPkt.typeId = MSG_VIDEO; m_rtmpPkt.typeId = MSG_VIDEO;
@ -135,7 +135,7 @@ void RtspToRtmpMediaSource::onGetAdts(const AdtsFrame& frame) {
m_rtmpPkt.strBuf.append((char *) frame.data + 7, frame.aac_frame_length - 7); m_rtmpPkt.strBuf.append((char *) frame.data + 7, frame.aac_frame_length - 7);
m_rtmpPkt.bodySize = m_rtmpPkt.strBuf.size(); m_rtmpPkt.bodySize = m_rtmpPkt.strBuf.size();
m_rtmpPkt.chunkId = CHUNK_MEDIA; m_rtmpPkt.chunkId = CHUNK_AUDIO;
m_rtmpPkt.streamId = STREAM_MEDIA; m_rtmpPkt.streamId = STREAM_MEDIA;
m_rtmpPkt.timeStamp = frame.timeStamp; m_rtmpPkt.timeStamp = frame.timeStamp;
m_rtmpPkt.typeId = MSG_AUDIO; m_rtmpPkt.typeId = MSG_AUDIO;
@ -175,7 +175,7 @@ void RtspToRtmpMediaSource::makeAudioConfigPkt() {
m_rtmpPkt.strBuf.append(m_pParser->getAudioCfg()); m_rtmpPkt.strBuf.append(m_pParser->getAudioCfg());
m_rtmpPkt.bodySize = m_rtmpPkt.strBuf.size(); m_rtmpPkt.bodySize = m_rtmpPkt.strBuf.size();
m_rtmpPkt.chunkId = CHUNK_MEDIA; m_rtmpPkt.chunkId = CHUNK_AUDIO;
m_rtmpPkt.streamId = STREAM_MEDIA; m_rtmpPkt.streamId = STREAM_MEDIA;
m_rtmpPkt.timeStamp = 0; m_rtmpPkt.timeStamp = 0;
m_rtmpPkt.typeId = MSG_AUDIO; m_rtmpPkt.typeId = MSG_AUDIO;