新增支持mjpeg负载的mp4文件点播 (#2898)

This commit is contained in:
imp_rayjay 2023-10-12 17:26:53 +08:00 committed by GitHub
parent 67bc0273b4
commit eedf262059
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -16,8 +16,10 @@
#include "Extension/AAC.h" #include "Extension/AAC.h"
#include "Extension/G711.h" #include "Extension/G711.h"
#include "Extension/Opus.h" #include "Extension/Opus.h"
using namespace toolkit; #include "Extension/JPEG.h"
using namespace std; using namespace std;
using namespace toolkit;
namespace mediakit { namespace mediakit {
@ -105,8 +107,9 @@ void MP4Demuxer::onVideoTrack(uint32_t track, uint8_t object, int width, int hei
video->inputFrame(std::make_shared<H264FrameNoCacheAble>((char *)config, size, 0, 0,4)); video->inputFrame(std::make_shared<H264FrameNoCacheAble>((char *)config, size, 0, 0,4));
} }
} }
}
break; break;
}
case MOV_OBJECT_HEVC: { case MOV_OBJECT_HEVC: {
auto video = std::make_shared<H265Track>(); auto video = std::make_shared<H265Track>();
_track_to_codec.emplace(track,video); _track_to_codec.emplace(track,video);
@ -120,11 +123,16 @@ void MP4Demuxer::onVideoTrack(uint32_t track, uint8_t object, int width, int hei
video->inputFrame(std::make_shared<H265FrameNoCacheAble>((char *) config, size, 0, 0,4)); video->inputFrame(std::make_shared<H265FrameNoCacheAble>((char *) config, size, 0, 0,4));
} }
} }
break;
} }
case MOV_OBJECT_JPEG: {
auto video = std::make_shared<JPEGTrack>();
_track_to_codec.emplace(track,video);
break; break;
default: }
WarnL << "不支持该编码类型的MP4,已忽略:" << getObjectName(object);
break; default: WarnL << "不支持该编码类型的MP4,已忽略:" << getObjectName(object); break;
} }
} }
@ -243,6 +251,11 @@ Frame::Ptr MP4Demuxer::makeFrame(uint32_t track_id, const Buffer::Ptr &buf, int6
break; break;
} }
case CodecJPEG: {
ret = std::make_shared<JPEGFrame>(buf, (uint64_t)dts, 0, DATA_OFFSET);
break;
}
case CodecAAC: { case CodecAAC: {
AACTrack::Ptr track = dynamic_pointer_cast<AACTrack>(it->second); AACTrack::Ptr track = dynamic_pointer_cast<AACTrack>(it->second);
assert(track); assert(track);
@ -283,4 +296,4 @@ uint64_t MP4Demuxer::getDurationMS() const {
} }
}//namespace mediakit }//namespace mediakit
#endif// ENABLE_MP4 #endif// ENABLE_MP4