Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
ZLMediaKit
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
张翔宇
ZLMediaKit
Commits
37dc3c29
Commit
37dc3c29
authored
6 years ago
by
xiongziliang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完成Rtmp Metedata对象
parent
1e0db964
显示空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
198 行增加
和
1 行删除
+198
-1
src/Common/Factory.cpp
+12
-0
src/Common/Factory.h
+8
-0
src/RtmpMuxer/RtmpMetedata.cpp
+31
-0
src/RtmpMuxer/RtmpMetedata.h
+146
-0
src/RtspMuxer/RtspSdp.h
+1
-1
没有找到文件。
src/Common/Factory.cpp
查看文件 @
37dc3c29
...
...
@@ -208,6 +208,18 @@ RtmpCodec::Ptr Factory::getRtmpCodecByTrack(const Track::Ptr &track) {
}
}
AMFValue
Factory
::
getAmfByCodecId
(
CodecId
codecId
)
{
switch
(
codecId
){
case
CodecAAC
:{
return
AMFValue
(
"mp4a"
);
}
case
CodecH264
:{
return
AMFValue
(
"avc1"
);
}
default
:
return
AMFValue
(
AMF_NULL
);
}
}
}
//namespace mediakit
...
...
This diff is collapsed.
Click to expand it.
src/Common/Factory.h
查看文件 @
37dc3c29
...
...
@@ -111,6 +111,14 @@ public:
* @return
*/
static
RtmpCodec
::
Ptr
getRtmpCodecByTrack
(
const
Track
::
Ptr
&
track
);
/**
* 根据codecId获取rtmp的codec描述
* @param codecId
* @return
*/
static
AMFValue
getAmfByCodecId
(
CodecId
codecId
);
};
...
...
This diff is collapsed.
Click to expand it.
src/RtmpMuxer/RtmpMetedata.cpp
0 → 100644
查看文件 @
37dc3c29
/*
* MIT License
*
* Copyright (c) 2016 xiongziliang <771730766@qq.com>
*
* This file is part of ZLMediaKit(https://github.com/xiongziliang/ZLMediaKit).
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
#include "RtmpMetedata.h"
namespace
mediakit
{
}
//
namespace
mediakit
\ No newline at end of file
This diff is collapsed.
Click to expand it.
src/RtmpMuxer/RtmpMetedata.h
0 → 100644
查看文件 @
37dc3c29
/*
* MIT License
*
* Copyright (c) 2016 xiongziliang <771730766@qq.com>
*
* This file is part of ZLMediaKit(https://github.com/xiongziliang/ZLMediaKit).
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
#ifndef ZLMEDIAKIT_RTMPMETEDATA_H
#define ZLMEDIAKIT_RTMPMETEDATA_H
#include "RtmpMuxer/H264RtmpCodec.h"
#include "RtmpMuxer/AACRtmpCodec.h"
#include "Util/base64.h"
#include "Player/Track.h"
#include "Rtmp/amf.h"
#include "Common/Factory.h"
namespace
mediakit
{
/**
* rtmp metedata基类,用于描述rtmp格式信息
*/
class
Metedata
:
public
CodecInfo
{
public
:
typedef
std
::
shared_ptr
<
Metedata
>
Ptr
;
Metedata
()
:
_metedata
(
AMF_OBJECT
){}
virtual
~
Metedata
(){}
const
AMFValue
&
getMetedata
()
const
{
return
_metedata
;
}
protected
:
AMFValue
_metedata
;
};
/**
* metedata中除音视频外的其他描述部分
*/
class
TitleMete
:
public
Metedata
{
public
:
TitleMete
(
float
dur_sec
=
0
,
uint64_t
fileSize
=
0
,
const
map
<
string
,
string
>
&
header
=
map
<
string
,
string
>
()){
_metedata
.
set
(
"duration"
,
dur_sec
);
_metedata
.
set
(
"fileSize"
,
0
);
_metedata
.
set
(
"server"
,
"ZLMediaKit"
);
for
(
auto
&
pr
:
header
){
_metedata
.
set
(
pr
.
first
,
pr
.
second
);
}
}
/**
* 返回音频或视频类型
* @return
*/
TrackType
getTrackType
()
const
override
{
return
TrackInvalid
;
}
/**
* 返回编码器id
* @return
*/
CodecId
getCodecId
()
const
override
{
return
CodecInvalid
;
}
};
class
VideoMete
:
public
Metedata
{
public
:
VideoMete
(
const
VideoTrack
::
Ptr
&
video
,
int
datarate
=
5000
){
_metedata
.
set
(
"width"
,
video
->
getVideoWidth
());
_metedata
.
set
(
"height"
,
video
->
getVideoHeight
());
_metedata
.
set
(
"videodatarate"
,
datarate
);
_metedata
.
set
(
"framerate"
,
video
->
getVideoFps
());
_metedata
.
set
(
"videocodecid"
,
Factory
::
getAmfByCodecId
(
video
->
getCodecId
()));
//h.264
}
virtual
~
VideoMete
(){}
};
class
AudioMete
:
public
Metedata
{
public
:
AudioMete
(
const
AudioTrack
::
Ptr
&
audio
,
int
datarate
=
160
){
_metedata
.
set
(
"audiodatarate"
,
datarate
);
_metedata
.
set
(
"audiosamplerate"
,
audio
->
getAudioSampleRate
());
_metedata
.
set
(
"audiosamplesize"
,
audio
->
getAudioSampleBit
());
_metedata
.
set
(
"audiochannels"
,
audio
->
getAudioChannel
());
_metedata
.
set
(
"stereo"
,
audio
->
getAudioChannel
()
>
1
);
_metedata
.
set
(
"audiocodecid"
,
Factory
::
getAmfByCodecId
(
audio
->
getCodecId
()));
//aac
}
virtual
~
AudioMete
(){}
};
}
//namespace mediakit
#endif //ZLMEDIAKIT_RTMPMETEDATA_H
This diff is collapsed.
Click to expand it.
src/RtspMuxer/RtspSdp.h
查看文件 @
37dc3c29
...
...
@@ -34,7 +34,7 @@
namespace
mediakit
{
/**
* sdp基类
*
rtsp
sdp基类
*/
class
Sdp
:
public
CodecInfo
{
public
:
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论