Improve:app get thumbnail file.

This commit is contained in:
Fancy code 2024-07-20 17:24:14 +08:00
parent f5366a4bcf
commit 1a06ed0494
8 changed files with 46 additions and 17 deletions

View File

@ -17,6 +17,7 @@
#include "IFilesManager.h" #include "IFilesManager.h"
#include "ILog.h" #include "ILog.h"
#include "IStorageManager.h" #include "IStorageManager.h"
#include "MediaTask.h"
#include "StatusCode.h" #include "StatusCode.h"
#include <vector> #include <vector>
AppMonitor::AppMonitor() : mMicStatus(SwitchStatus::END) AppMonitor::AppMonitor() : mMicStatus(SwitchStatus::END)
@ -170,7 +171,10 @@ StatusCode AppMonitor::UploadFile(AppUploadFile &param)
} }
StatusCode AppMonitor::GetThumbnail(AppGetThumbnail &param) StatusCode AppMonitor::GetThumbnail(AppGetThumbnail &param)
{ {
param.mThumbnail = "./34a396526922a33e97906920dbfef2a5.jpg"; // param.mThumbnail = "./34a396526922a33e97906920dbfef2a5.jpg";
const std::string webServerDocumentRoot = IAppManager::GetInstance()->GetFilesSavingRootPath();
const std::string thumbnailFile = MediaTask::GetThumbnailNameByTargetName(param.mFile);
param.mThumbnail = RemovePrefix(thumbnailFile, webServerDocumentRoot);
return CreateStatusCode(STATUS_CODE_OK); return CreateStatusCode(STATUS_CODE_OK);
} }
SdCardStatus AppMonitor::SdCardStatusConvert(const StorageEvent &event) SdCardStatus AppMonitor::SdCardStatusConvert(const StorageEvent &event)

View File

@ -62,23 +62,23 @@ std::string MediaTask::GetTargetNameForSaving(void)
} }
std::string MediaTask::GetThumbnailNameForSaving(const std::string &targetName) std::string MediaTask::GetThumbnailNameForSaving(const std::string &targetName)
{ {
std::string thumbnailName = targetName; return MediaTask::GetThumbnailNameByTargetName(targetName);
size_t dot_pos = thumbnailName.find_last_of('.'); // std::string thumbnailName = targetName;
if (dot_pos != std::string::npos) { // size_t dot_pos = thumbnailName.find_last_of('.');
std::string extension = thumbnailName.substr(dot_pos); // if (dot_pos != std::string::npos) {
if (extension == ".mp4") { // std::string extension = thumbnailName.substr(dot_pos);
thumbnailName.replace(dot_pos, extension.length(), ".jpeg"); // if (extension == ".mp4") {
LogInfo("GetThumbnailNameForSaving: %s\n", thumbnailName.c_str()); // thumbnailName.replace(dot_pos, extension.length(), "-thumbnail.jpeg");
return thumbnailName; // LogInfo("GetThumbnailNameForSaving: %s\n", thumbnailName.c_str());
} // return thumbnailName;
} // }
LogError("TargetName is not a mp4 file.\n"); // }
std::string unknowFile = "unknow"; // LogError("TargetName is not a mp4 file.\n");
return unknowFile; // std::string unknowFile = "unknow";
// return unknowFile;
} }
int MediaTask::GetVideoDuration_ms(void) int MediaTask::GetVideoDuration_ms(void)
{ {
return 1000 * 60;
return DEFAULT_VIDEO_DURATION_MS; return DEFAULT_VIDEO_DURATION_MS;
} }
void MediaTask::Response(const std::vector<MediaTaskResponse> &response) void MediaTask::Response(const std::vector<MediaTaskResponse> &response)
@ -95,4 +95,20 @@ void MediaTask::Response(const std::vector<MediaTaskResponse> &response)
.mCreateTime_s = mCreateTime_s, .mCreateTime_s = mCreateTime_s,
}; };
iniator->TaskResponse(info); iniator->TaskResponse(info);
}
std::string MediaTask::GetThumbnailNameByTargetName(const std::string &targetName)
{
std::string thumbnailName = targetName;
size_t dot_pos = thumbnailName.find_last_of('.');
if (dot_pos != std::string::npos) {
std::string extension = thumbnailName.substr(dot_pos);
if (extension == ".mp4") {
thumbnailName.replace(dot_pos, extension.length(), "-thumbnail.jpeg");
LogInfo("GetThumbnailNameForSaving: %s\n", thumbnailName.c_str());
return thumbnailName;
}
}
LogError("TargetName is not a mp4 file.\n");
std::string unknowFile = "unknow";
return unknowFile;
} }

View File

@ -46,6 +46,9 @@ public:
int GetVideoDuration_ms(void) override; int GetVideoDuration_ms(void) override;
void Response(const std::vector<MediaTaskResponse> &response) override; void Response(const std::vector<MediaTaskResponse> &response) override;
public:
static std::string GetThumbnailNameByTargetName(const std::string &targetName);
private: private:
const MediaTaskType mType; const MediaTaskType mType;
const InternalStateEvent mBindEvent; const InternalStateEvent mBindEvent;

View File

@ -20,6 +20,8 @@
#include "IMissionManager.h" #include "IMissionManager.h"
#include "IStateMachine.h" #include "IStateMachine.h"
#include "IStorageManager.h" #include "IStorageManager.h"
#include "LedControl.h"
#include "LedsHandle.h"
#include "MissionStateMachine.h" #include "MissionStateMachine.h"
#include "StatusCode.h" #include "StatusCode.h"
#include <functional> #include <functional>

View File

@ -93,10 +93,10 @@ void CameraHalTest::MockReportMediaStream(void)
{ {
mTaskRuning = true; mTaskRuning = true;
if (nullptr != mReadH264File) { if (nullptr != mReadH264File) {
IStartReadFile(mReadH264File, TEST_SOURCE_PATH "/support_test/video_sync.h264"); IStartReadFile(mReadH264File, TEST_SOURCE_PATH "/support_test/chip.h264");
} }
if (nullptr != mReadG711aFile) { if (nullptr != mReadG711aFile) {
IStartReadFile(mReadG711aFile, TEST_SOURCE_PATH "/support_test/audio_sync.g711a"); IStartReadFile(mReadG711aFile, TEST_SOURCE_PATH "/support_test/chip.g711a");
} }
while (mTaskRuning) { while (mTaskRuning) {
std::unique_lock<std::mutex> lock(mMutex); std::unique_lock<std::mutex> lock(mMutex);

1
test/support_test/chip.g711a Executable file

File diff suppressed because one or more lines are too long

BIN
test/support_test/chip.h264 Executable file

Binary file not shown.

View File

@ -170,6 +170,9 @@ void FfmpegMuxStreamV2::GetAVPacketDataCallback(AVPacket *pkt)
} }
void FfmpegMuxStreamV2::CalculatingDuration(const unsigned long long &pts_us) void FfmpegMuxStreamV2::CalculatingDuration(const unsigned long long &pts_us)
{ {
// LogInfo("mFileMuxingDuration ms: %lld, mOutputFileInfo->mDuration_ms: %lld\n",
// mFileMuxingDuration_us / 1000,
// mOutputFileInfo->mDuration_ms);
mFileMuxingDuration_us = pts_us - mStartPts; mFileMuxingDuration_us = pts_us - mStartPts;
if (mFileMuxingDuration_us / 1000 >= mOutputFileInfo->mDuration_ms) { if (mFileMuxingDuration_us / 1000 >= mOutputFileInfo->mDuration_ms) {
LogInfo("Muxing file finished, duration: %lld ms\n", mFileMuxingDuration_us / 1000); LogInfo("Muxing file finished, duration: %lld ms\n", mFileMuxingDuration_us / 1000);