mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-06-14 12:05:58 +08:00
统一成员变量命名风格
This commit is contained in:
@@ -62,14 +62,14 @@ Mp4Maker::Mp4Maker(const string& strPath,
|
||||
const string &strStreamId,
|
||||
const PlayerBase::Ptr &pPlayer) {
|
||||
DebugL << strPath;
|
||||
m_pPlayer = pPlayer;
|
||||
m_strPath = strPath;
|
||||
_pPlayer = pPlayer;
|
||||
_strPath = strPath;
|
||||
|
||||
/////record 业务逻辑//////
|
||||
m_info.strAppName = strApp;
|
||||
m_info.strStreamId = strStreamId;
|
||||
m_info.strVhost = strVhost;
|
||||
m_info.strFolder = strPath;
|
||||
_info.strAppName = strApp;
|
||||
_info.strStreamId = strStreamId;
|
||||
_info.strVhost = strVhost;
|
||||
_info.strFolder = strPath;
|
||||
//----record 业务逻辑----//
|
||||
}
|
||||
Mp4Maker::~Mp4Maker() {
|
||||
@@ -80,22 +80,22 @@ void Mp4Maker::inputH264(void *pData, uint32_t ui32Length, uint32_t ui32TimeStam
|
||||
switch (iType) {
|
||||
case 1: //P
|
||||
case 5: { //IDR
|
||||
if (m_strLastVideo.size()) {
|
||||
int64_t iTimeInc = (int64_t)ui32TimeStamp - (int64_t)m_ui32LastVideoTime;
|
||||
if (_strLastVideo.size()) {
|
||||
int64_t iTimeInc = (int64_t)ui32TimeStamp - (int64_t)_ui32LastVideoTime;
|
||||
iTimeInc = MAX(0,MIN(iTimeInc,500));
|
||||
if(iTimeInc == 0 || iTimeInc == 500){
|
||||
WarnL << "abnormal time stamp increment:" << ui32TimeStamp << " " << m_ui32LastVideoTime;
|
||||
WarnL << "abnormal time stamp increment:" << ui32TimeStamp << " " << _ui32LastVideoTime;
|
||||
}
|
||||
_inputH264((char *) m_strLastVideo.data(), m_strLastVideo.size(), iTimeInc, m_iLastVideoType);
|
||||
_inputH264((char *) _strLastVideo.data(), _strLastVideo.size(), iTimeInc, _iLastVideoType);
|
||||
}
|
||||
//m_strLastVideo.assign(("\x0\x0\x0\x2\x9\xf0"), 6);
|
||||
//_strLastVideo.assign(("\x0\x0\x0\x2\x9\xf0"), 6);
|
||||
uint32_t *p = (uint32_t *) pData;
|
||||
*p = htonl(ui32Length - 4);
|
||||
m_strLastVideo.assign((char *) pData, ui32Length);
|
||||
_strLastVideo.assign((char *) pData, ui32Length);
|
||||
memcpy(pData, "\x00\x00\x00\x01", 4);
|
||||
|
||||
m_ui32LastVideoTime = ui32TimeStamp;
|
||||
m_iLastVideoType = iType;
|
||||
_ui32LastVideoTime = ui32TimeStamp;
|
||||
_iLastVideoType = iType;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -103,28 +103,28 @@ void Mp4Maker::inputH264(void *pData, uint32_t ui32Length, uint32_t ui32TimeStam
|
||||
}
|
||||
}
|
||||
void Mp4Maker::inputAAC(void *pData, uint32_t ui32Length, uint32_t ui32TimeStamp){
|
||||
if (m_strLastAudio.size()) {
|
||||
int64_t iTimeInc = (int64_t)ui32TimeStamp - (int64_t)m_ui32LastAudioTime;
|
||||
if (_strLastAudio.size()) {
|
||||
int64_t iTimeInc = (int64_t)ui32TimeStamp - (int64_t)_ui32LastAudioTime;
|
||||
iTimeInc = MAX(0,MIN(iTimeInc,500));
|
||||
if(iTimeInc == 0 || iTimeInc == 500){
|
||||
WarnL << "abnormal time stamp increment:" << ui32TimeStamp << " " << m_ui32LastAudioTime;
|
||||
WarnL << "abnormal time stamp increment:" << ui32TimeStamp << " " << _ui32LastAudioTime;
|
||||
}
|
||||
_inputAAC((char *)m_strLastAudio.data(), m_strLastAudio.size(), iTimeInc);
|
||||
_inputAAC((char *)_strLastAudio.data(), _strLastAudio.size(), iTimeInc);
|
||||
}
|
||||
m_strLastAudio.assign((char *)pData, ui32Length);
|
||||
m_ui32LastAudioTime = ui32TimeStamp;
|
||||
_strLastAudio.assign((char *)pData, ui32Length);
|
||||
_ui32LastAudioTime = ui32TimeStamp;
|
||||
}
|
||||
|
||||
void Mp4Maker::_inputH264(void* pData, uint32_t ui32Length, uint32_t ui32Duration, int iType) {
|
||||
GET_CONFIG_AND_REGISTER(uint32_t,recordSec,Config::Record::kFileSecond);
|
||||
|
||||
if(iType == 5 && (m_hMp4 == MP4_INVALID_FILE_HANDLE || m_ticker.elapsedTime() > recordSec * 1000)){
|
||||
if(iType == 5 && (_hMp4 == MP4_INVALID_FILE_HANDLE || _ticker.elapsedTime() > recordSec * 1000)){
|
||||
//在I帧率处新建MP4文件
|
||||
//如果文件未创建或者文件超过10分钟则创建新文件
|
||||
createFile();
|
||||
}
|
||||
if (m_hVideo != MP4_INVALID_TRACK_ID) {
|
||||
MP4WriteSample(m_hMp4, m_hVideo, (uint8_t *) pData, ui32Length,ui32Duration * 90,0,iType == 5);
|
||||
if (_hVideo != MP4_INVALID_TRACK_ID) {
|
||||
MP4WriteSample(_hMp4, _hVideo, (uint8_t *) pData, ui32Length,ui32Duration * 90,0,iType == 5);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -134,39 +134,39 @@ void Mp4Maker::_inputAAC(void* pData, uint32_t ui32Length, uint32_t ui32Duration
|
||||
//todo(xzl) 修复此处
|
||||
|
||||
//
|
||||
// if (!m_pPlayer->containVideo() && (m_hMp4 == MP4_INVALID_FILE_HANDLE || m_ticker.elapsedTime() > recordSec * 1000)) {
|
||||
// if (!_pPlayer->containVideo() && (_hMp4 == MP4_INVALID_FILE_HANDLE || _ticker.elapsedTime() > recordSec * 1000)) {
|
||||
// //在I帧率处新建MP4文件
|
||||
// //如果文件未创建或者文件超过10分钟则创建新文件
|
||||
// createFile();
|
||||
// }
|
||||
// if (m_hAudio != MP4_INVALID_TRACK_ID) {
|
||||
// auto duration = ui32Duration * m_pPlayer->getAudioSampleRate() /1000.0;
|
||||
// MP4WriteSample(m_hMp4, m_hAudio, (uint8_t*)pData + 7, ui32Length - 7,duration,0,false);
|
||||
// if (_hAudio != MP4_INVALID_TRACK_ID) {
|
||||
// auto duration = ui32Duration * _pPlayer->getAudioSampleRate() /1000.0;
|
||||
// MP4WriteSample(_hMp4, _hAudio, (uint8_t*)pData + 7, ui32Length - 7,duration,0,false);
|
||||
// }
|
||||
}
|
||||
|
||||
void Mp4Maker::createFile() {
|
||||
if(!m_pPlayer->isInited()){
|
||||
if(!_pPlayer->isInited()){
|
||||
return;
|
||||
}
|
||||
closeFile();
|
||||
|
||||
auto strDate = timeStr("%Y-%m-%d");
|
||||
auto strTime = timeStr("%H-%M-%S");
|
||||
auto strFileTmp = m_strPath + strDate + "/." + strTime + ".mp4";
|
||||
auto strFile = m_strPath + strDate + "/" + strTime + ".mp4";
|
||||
auto strFileTmp = _strPath + strDate + "/." + strTime + ".mp4";
|
||||
auto strFile = _strPath + strDate + "/" + strTime + ".mp4";
|
||||
|
||||
/////record 业务逻辑//////
|
||||
m_info.ui64StartedTime = ::time(NULL);
|
||||
m_info.strFileName = strTime + ".mp4";
|
||||
m_info.strFilePath = strFile;
|
||||
_info.ui64StartedTime = ::time(NULL);
|
||||
_info.strFileName = strTime + ".mp4";
|
||||
_info.strFilePath = strFile;
|
||||
|
||||
GET_CONFIG_AND_REGISTER(string,appName,Config::Record::kAppName);
|
||||
|
||||
m_info.strUrl = m_info.strVhost + "/"
|
||||
_info.strUrl = _info.strVhost + "/"
|
||||
+ appName + "/"
|
||||
+ m_info.strAppName + "/"
|
||||
+ m_info.strStreamId + "/"
|
||||
+ _info.strAppName + "/"
|
||||
+ _info.strStreamId + "/"
|
||||
+ strDate + "/"
|
||||
+ strTime + ".mp4";
|
||||
//----record 业务逻辑----//
|
||||
@@ -176,36 +176,36 @@ void Mp4Maker::createFile() {
|
||||
#else
|
||||
File::createfile_path(strFileTmp.data(), 0);
|
||||
#endif
|
||||
m_hMp4 = MP4Create(strFileTmp.data());
|
||||
if (m_hMp4 == MP4_INVALID_FILE_HANDLE) {
|
||||
_hMp4 = MP4Create(strFileTmp.data());
|
||||
if (_hMp4 == MP4_INVALID_FILE_HANDLE) {
|
||||
WarnL << "创建MP4文件失败:" << strFileTmp;
|
||||
return;
|
||||
}
|
||||
//MP4SetTimeScale(m_hMp4, 90000);
|
||||
m_strFileTmp = strFileTmp;
|
||||
m_strFile = strFile;
|
||||
m_ticker.resetTime();
|
||||
//MP4SetTimeScale(_hMp4, 90000);
|
||||
_strFileTmp = strFileTmp;
|
||||
_strFile = strFile;
|
||||
_ticker.resetTime();
|
||||
|
||||
//todo(xzl) 修复此处
|
||||
|
||||
// if(m_pPlayer->containVideo()){
|
||||
// auto &sps = m_pPlayer->getSps();
|
||||
// auto &pps = m_pPlayer->getPps();
|
||||
// m_hVideo = MP4AddH264VideoTrack(m_hMp4, 90000, MP4_INVALID_DURATION,
|
||||
// m_pPlayer->getVideoWidth(), m_pPlayer->getVideoHeight(),
|
||||
// if(_pPlayer->containVideo()){
|
||||
// auto &sps = _pPlayer->getSps();
|
||||
// auto &pps = _pPlayer->getPps();
|
||||
// _hVideo = MP4AddH264VideoTrack(_hMp4, 90000, MP4_INVALID_DURATION,
|
||||
// _pPlayer->getVideoWidth(), _pPlayer->getVideoHeight(),
|
||||
// sps[5], sps[6], sps[7], 3);
|
||||
// if(m_hVideo !=MP4_INVALID_TRACK_ID){
|
||||
// MP4AddH264SequenceParameterSet(m_hMp4, m_hVideo, (uint8_t *)sps.data() + 4, sps.size() - 4);
|
||||
// MP4AddH264PictureParameterSet(m_hMp4, m_hVideo, (uint8_t *)pps.data() + 4, pps.size() - 4);
|
||||
// if(_hVideo !=MP4_INVALID_TRACK_ID){
|
||||
// MP4AddH264SequenceParameterSet(_hMp4, _hVideo, (uint8_t *)sps.data() + 4, sps.size() - 4);
|
||||
// MP4AddH264PictureParameterSet(_hMp4, _hVideo, (uint8_t *)pps.data() + 4, pps.size() - 4);
|
||||
// }else{
|
||||
// WarnL << "添加视频通道失败:" << strFileTmp;
|
||||
// }
|
||||
// }
|
||||
// if(m_pPlayer->containAudio()){
|
||||
// m_hAudio = MP4AddAudioTrack(m_hMp4, m_pPlayer->getAudioSampleRate(), MP4_INVALID_DURATION, MP4_MPEG4_AUDIO_TYPE);
|
||||
// if (m_hAudio != MP4_INVALID_TRACK_ID) {
|
||||
// auto &cfg = m_pPlayer->getAudioCfg();
|
||||
// MP4SetTrackESConfiguration(m_hMp4, m_hAudio,(uint8_t *)cfg.data(), cfg.size());
|
||||
// if(_pPlayer->containAudio()){
|
||||
// _hAudio = MP4AddAudioTrack(_hMp4, _pPlayer->getAudioSampleRate(), MP4_INVALID_DURATION, MP4_MPEG4_AUDIO_TYPE);
|
||||
// if (_hAudio != MP4_INVALID_TRACK_ID) {
|
||||
// auto &cfg = _pPlayer->getAudioCfg();
|
||||
// MP4SetTrackESConfiguration(_hMp4, _hAudio,(uint8_t *)cfg.data(), cfg.size());
|
||||
// }else{
|
||||
// WarnL << "添加音频通道失败:" << strFileTmp;
|
||||
// }
|
||||
@@ -213,24 +213,24 @@ void Mp4Maker::createFile() {
|
||||
}
|
||||
|
||||
void Mp4Maker::closeFile() {
|
||||
if (m_hMp4 != MP4_INVALID_FILE_HANDLE) {
|
||||
if (_hMp4 != MP4_INVALID_FILE_HANDLE) {
|
||||
{
|
||||
TimeTicker();
|
||||
MP4Close(m_hMp4,MP4_CLOSE_DO_NOT_COMPUTE_BITRATE);
|
||||
MP4Close(_hMp4,MP4_CLOSE_DO_NOT_COMPUTE_BITRATE);
|
||||
}
|
||||
rename(m_strFileTmp.data(),m_strFile.data());
|
||||
m_hMp4 = MP4_INVALID_FILE_HANDLE;
|
||||
m_hVideo = MP4_INVALID_TRACK_ID;
|
||||
m_hAudio = MP4_INVALID_TRACK_ID;
|
||||
rename(_strFileTmp.data(),_strFile.data());
|
||||
_hMp4 = MP4_INVALID_FILE_HANDLE;
|
||||
_hVideo = MP4_INVALID_TRACK_ID;
|
||||
_hAudio = MP4_INVALID_TRACK_ID;
|
||||
|
||||
/////record 业务逻辑//////
|
||||
m_info.ui64TimeLen = ::time(NULL) - m_info.ui64StartedTime;
|
||||
_info.ui64TimeLen = ::time(NULL) - _info.ui64StartedTime;
|
||||
//获取文件大小
|
||||
struct stat fileData;
|
||||
stat(m_strFile.data(), &fileData);
|
||||
m_info.ui64FileSize = fileData.st_size;
|
||||
stat(_strFile.data(), &fileData);
|
||||
_info.ui64FileSize = fileData.st_size;
|
||||
//----record 业务逻辑----//
|
||||
NoticeCenter::Instance().emitEvent(Config::Broadcast::kBroadcastRecordMP4,m_info,*this);
|
||||
NoticeCenter::Instance().emitEvent(Config::Broadcast::kBroadcastRecordMP4,_info,*this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user