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
748bb8e4
Commit
748bb8e4
authored
Sep 15, 2020
by
wxf
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
统一 mp4 及 ts 录像信息定义
parent
b22a6e3d
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
56 行增加
和
32 行删除
+56
-32
api/source/mk_events_objects.cpp
+11
-11
src/Common/config.h
+2
-2
src/Record/HlsMakerImp.cpp
+1
-1
src/Record/HlsMakerImp.h
+3
-1
src/Record/MP4Recorder.cpp
+2
-2
src/Record/MP4Recorder.h
+3
-15
src/Record/RecordInfo.h
+34
-0
没有找到文件。
api/source/mk_events_objects.cpp
查看文件 @
748bb8e4
...
...
@@ -18,64 +18,64 @@
#include "Rtsp/RtspSession.h"
using
namespace
mediakit
;
///////////////////////////////////////////
MP4
Info/////////////////////////////////////////////
///////////////////////////////////////////
Record
Info/////////////////////////////////////////////
API_EXPORT
uint64_t
API_CALL
mk_mp4_info_get_start_time
(
const
mk_mp4_info
ctx
){
assert
(
ctx
);
MP4Info
*
info
=
(
MP4
Info
*
)
ctx
;
RecordInfo
*
info
=
(
Record
Info
*
)
ctx
;
return
info
->
ui64StartedTime
;
}
API_EXPORT
uint64_t
API_CALL
mk_mp4_info_get_time_len
(
const
mk_mp4_info
ctx
){
assert
(
ctx
);
MP4Info
*
info
=
(
MP4
Info
*
)
ctx
;
RecordInfo
*
info
=
(
Record
Info
*
)
ctx
;
return
info
->
ui64TimeLen
;
}
API_EXPORT
uint64_t
API_CALL
mk_mp4_info_get_file_size
(
const
mk_mp4_info
ctx
){
assert
(
ctx
);
MP4Info
*
info
=
(
MP4
Info
*
)
ctx
;
RecordInfo
*
info
=
(
Record
Info
*
)
ctx
;
return
info
->
ui64FileSize
;
}
API_EXPORT
const
char
*
API_CALL
mk_mp4_info_get_file_path
(
const
mk_mp4_info
ctx
){
assert
(
ctx
);
MP4Info
*
info
=
(
MP4
Info
*
)
ctx
;
RecordInfo
*
info
=
(
Record
Info
*
)
ctx
;
return
info
->
strFilePath
.
c_str
();
}
API_EXPORT
const
char
*
API_CALL
mk_mp4_info_get_file_name
(
const
mk_mp4_info
ctx
){
assert
(
ctx
);
MP4Info
*
info
=
(
MP4
Info
*
)
ctx
;
RecordInfo
*
info
=
(
Record
Info
*
)
ctx
;
return
info
->
strFileName
.
c_str
();
}
API_EXPORT
const
char
*
API_CALL
mk_mp4_info_get_folder
(
const
mk_mp4_info
ctx
){
assert
(
ctx
);
MP4Info
*
info
=
(
MP4
Info
*
)
ctx
;
RecordInfo
*
info
=
(
Record
Info
*
)
ctx
;
return
info
->
strFolder
.
c_str
();
}
API_EXPORT
const
char
*
API_CALL
mk_mp4_info_get_url
(
const
mk_mp4_info
ctx
){
assert
(
ctx
);
MP4Info
*
info
=
(
MP4
Info
*
)
ctx
;
RecordInfo
*
info
=
(
Record
Info
*
)
ctx
;
return
info
->
strUrl
.
c_str
();
}
API_EXPORT
const
char
*
API_CALL
mk_mp4_info_get_vhost
(
const
mk_mp4_info
ctx
){
assert
(
ctx
);
MP4Info
*
info
=
(
MP4
Info
*
)
ctx
;
RecordInfo
*
info
=
(
Record
Info
*
)
ctx
;
return
info
->
strVhost
.
c_str
();
}
API_EXPORT
const
char
*
API_CALL
mk_mp4_info_get_app
(
const
mk_mp4_info
ctx
){
assert
(
ctx
);
MP4Info
*
info
=
(
MP4
Info
*
)
ctx
;
RecordInfo
*
info
=
(
Record
Info
*
)
ctx
;
return
info
->
strAppName
.
c_str
();
}
API_EXPORT
const
char
*
API_CALL
mk_mp4_info_get_stream
(
const
mk_mp4_info
ctx
){
assert
(
ctx
);
MP4Info
*
info
=
(
MP4
Info
*
)
ctx
;
RecordInfo
*
info
=
(
Record
Info
*
)
ctx
;
return
info
->
strStreamId
.
c_str
();
}
...
...
src/Common/config.h
查看文件 @
748bb8e4
...
...
@@ -58,11 +58,11 @@ extern const string kBroadcastMediaChanged;
//录制mp4文件成功后广播
extern
const
string
kBroadcastRecordMP4
;
#define BroadcastRecordMP4Args const
MP4
Info &info
#define BroadcastRecordMP4Args const
Record
Info &info
// 录制 ts 文件后广播
extern
const
string
kBroadcastRecordTs
;
#define BroadcastRecordTsArgs const
Ts
Info &info
#define BroadcastRecordTsArgs const
Record
Info &info
//收到http api请求广播
extern
const
string
kBroadcastHttpRequest
;
...
...
src/Record/HlsMakerImp.cpp
查看文件 @
748bb8e4
...
...
@@ -117,7 +117,7 @@ void HlsMakerImp::onFlushLastSegment(uint32_t duration) {
WorkThreadPool
::
Instance
().
getExecutor
()
->
async
([
info
]()
{
struct
stat
fileData
;
stat
(
info
.
strFilePath
.
data
(),
&
fileData
);
const_cast
<
Ts
Info
&>
(
info
).
ui64FileSize
=
fileData
.
st_size
;
const_cast
<
Record
Info
&>
(
info
).
ui64FileSize
=
fileData
.
st_size
;
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastRecordTs
,
info
);
});
}
...
...
src/Record/HlsMakerImp.h
查看文件 @
748bb8e4
...
...
@@ -16,6 +16,8 @@
#include <stdlib.h>
#include "HlsMaker.h"
#include "HlsMediaSource.h"
#include "RecordInfo.h"
using
namespace
std
;
namespace
mediakit
{
...
...
@@ -67,7 +69,7 @@ private:
std
::
shared_ptr
<
FILE
>
_file
;
std
::
shared_ptr
<
char
>
_file_buf
;
HlsMediaSource
::
Ptr
_media_src
;
Ts
Info
_info
;
Record
Info
_info
;
map
<
int
/*index*/
,
string
/*file_path*/
>
_segment_file_paths
;
};
...
...
src/Record/MP4Recorder.cpp
查看文件 @
748bb8e4
...
...
@@ -73,7 +73,7 @@ void MP4Recorder::asyncClose() {
auto
info
=
_info
;
WorkThreadPool
::
Instance
().
getExecutor
()
->
async
([
muxer
,
strFileTmp
,
strFile
,
info
]()
{
//获取文件录制时间,放在关闭mp4之前是为了忽略关闭mp4执行时间
const_cast
<
MP4
Info
&>
(
info
).
ui64TimeLen
=
::
time
(
NULL
)
-
info
.
ui64StartedTime
;
const_cast
<
Record
Info
&>
(
info
).
ui64TimeLen
=
::
time
(
NULL
)
-
info
.
ui64StartedTime
;
//关闭mp4非常耗时,所以要放在后台线程执行
muxer
->
closeMP4
();
//临时文件名改成正式文件名,防止mp4未完成时被访问
...
...
@@ -81,7 +81,7 @@ void MP4Recorder::asyncClose() {
//获取文件大小
struct
stat
fileData
;
stat
(
strFile
.
data
(),
&
fileData
);
const_cast
<
MP4
Info
&>
(
info
).
ui64FileSize
=
fileData
.
st_size
;
const_cast
<
Record
Info
&>
(
info
).
ui64FileSize
=
fileData
.
st_size
;
/////record 业务逻辑//////
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastRecordMP4
,
info
);
});
...
...
src/Record/MP4Recorder.h
查看文件 @
748bb8e4
...
...
@@ -20,24 +20,12 @@
#include "Util/TimeTicker.h"
#include "Common/MediaSink.h"
#include "MP4Muxer.h"
#include "RecordInfo.h"
using
namespace
toolkit
;
namespace
mediakit
{
class
MP4Info
{
public
:
time_t
ui64StartedTime
;
//GMT标准时间,单位秒
time_t
ui64TimeLen
;
//录像长度,单位秒
off_t
ui64FileSize
;
//文件大小,单位BYTE
string
strFilePath
;
//文件路径
string
strFileName
;
//文件名称
string
strFolder
;
//文件夹路径
string
strUrl
;
//播放路径
string
strAppName
;
//应用名称
string
strStreamId
;
//流ID
string
strVhost
;
//vhost
};
#ifdef ENABLE_MP4
class
MP4Recorder
:
public
MediaSinkInterface
{
public
:
...
...
@@ -72,7 +60,7 @@ private:
string
_strFile
;
string
_strFileTmp
;
Ticker
_createFileTicker
;
MP4
Info
_info
;
Record
Info
_info
;
bool
_haveVideo
=
false
;
MP4Muxer
::
Ptr
_muxer
;
list
<
Track
::
Ptr
>
_tracks
;
...
...
src/Record/RecordInfo.h
0 → 100644
查看文件 @
748bb8e4
/*
* Copyright (c) 2020 The ZLMediaKit project authors. All Rights Reserved.
*
* This file is part of ZLMediaKit(https://github.com/xia-chu/ZLMediaKit).
*
* Use of this source code is governed by MIT license that can be found in the
* LICENSE file in the root of the source tree. All contributing project authors
* may be found in the AUTHORS file in the root of the source tree.
*/
#ifndef RECORDINFO_H_
#define RECORDINFO_H_
#include "Common/config.h"
namespace
mediakit
{
class
RecordInfo
{
public
:
time_t
ui64StartedTime
;
// GMT 标准时间,单位秒
time_t
ui64TimeLen
;
// 录像长度,需要注意 mp4 单位是秒,而 hls ts 单位是毫秒
off_t
ui64FileSize
;
// 文件大小,单位 BYTE
string
strFilePath
;
// 文件路径
string
strFileName
;
// 文件名称
string
strFolder
;
// 文件夹路径
string
strUrl
;
// 播放路径
string
strAppName
;
// 应用名称
string
strStreamId
;
// 流 ID
string
strVhost
;
// vhost
};
}
// namespace mediakit
#endif // RECORDINFO_H_
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论