重命名前确保关闭mp4文件:#416

This commit is contained in:
xiongziliang 2020-07-16 10:40:30 +08:00
parent c507e8a772
commit bdb28c53de
3 changed files with 9 additions and 2 deletions

View File

@ -93,6 +93,7 @@ void MP4File::openFile(const char *file,const char *mode) {
//创建智能指针
_file.reset(fp,[file_buf](FILE *fp) {
fflush(fp);
fclose(fp);
});
}

View File

@ -25,6 +25,8 @@ namespace mediakit{
class MP4Muxer : public MediaSinkInterface, public MP4File{
public:
typedef std::shared_ptr<MP4Muxer> Ptr;
MP4Muxer(const char *file);
~MP4Muxer() override;
@ -42,9 +44,13 @@ public:
*/
void resetTracks() override ;
/**
* ()
*/
void closeMP4();
private:
void openMP4();
void closeMP4();
void stampSync();
private:

View File

@ -75,7 +75,7 @@ void MP4Recorder::asyncClose() {
//获取文件录制时间放在关闭mp4之前是为了忽略关闭mp4执行时间
const_cast<MP4Info&>(info).ui64TimeLen = ::time(NULL) - info.ui64StartedTime;
//关闭mp4非常耗时所以要放在后台线程执行
const_cast<MP4Muxer::Ptr &>(muxer).reset();
muxer->closeMP4();
//临时文件名改成正式文件名防止mp4未完成时被访问
rename(strFileTmp.data(),strFile.data());
//获取文件大小