33#include " HAL/PlatformProcess.h"
44#include " Misc/Paths.h"
55#include " Misc/FileHelper.h"
6+ #include " Misc/Guid.h"
67#include " BH_Runnable.h"
78#include " BH_FFmpeg.h"
89
@@ -27,6 +28,9 @@ BH_VideoEncoder::BH_VideoEncoder(
2728 SegmentCheckInterval(FTimespan::FromSeconds(15 )),
2829 LastSegmentCheckTime(FDateTime::Now())
2930{
31+ // Generate a random 5-character string for segmentPrefix
32+ segmentPrefix = FGuid::NewGuid ().ToString (EGuidFormats::Digits).Left (5 ) + TEXT (" _" );
33+
3034 // check if width and height are multiples of 4
3135 if (screenWidth % 4 != 0 || screenHeight % 4 != 0 )
3236 {
@@ -52,13 +56,13 @@ BH_VideoEncoder::BH_VideoEncoder(
5256 // Remove all existing segment files
5357 IFileManager& FileManager = IFileManager::Get ();
5458 TArray<FString> SegmentFiles;
55- FileManager.FindFiles (SegmentFiles, *(segmentsDir / TEXT (" segment_ *.mp4" )), true , false );
59+ FileManager.FindFiles (SegmentFiles, *(segmentsDir / (segmentPrefix + TEXT (" *.mp4" ) )), true , false );
5660 for (const FString& SegmentFile : SegmentFiles)
5761 {
5862 FileManager.Delete (*(segmentsDir / SegmentFile));
5963 }
6064
61- outputFile = FPaths::Combine (segmentsDir, TEXT (" segment_ %06d.mp4" ));
65+ outputFile = FPaths::Combine (segmentsDir, (segmentPrefix + TEXT (" %06d.mp4" ) ));
6266 encodingSettings = TEXT (" -y -f rawvideo -pix_fmt bgra -s " ) +
6367 FString::FromInt (screenWidth) + TEXT (" x" ) + FString::FromInt (screenHeight) +
6468 TEXT (" -r " ) + FString::FromInt (targetFPS) +
@@ -292,7 +296,7 @@ FString BH_VideoEncoder::MergeSegments(int32 MaxSegments)
292296 // Get the list of segment files
293297 IFileManager& FileManager = IFileManager::Get ();
294298 TArray<FString> SegmentFiles;
295- FileManager.FindFiles (SegmentFiles, *(segmentsDir / TEXT (" segment_ *.mp4" )), true , false );
299+ FileManager.FindFiles (SegmentFiles, *(segmentsDir / (segmentPrefix + TEXT (" *.mp4" ) )), true , false );
296300
297301 // Sort and take the last MaxSegments
298302 SegmentFiles.Sort ();
@@ -372,7 +376,7 @@ void BH_VideoEncoder::RemoveOldSegments()
372376
373377 IFileManager& FileManager = IFileManager::Get ();
374378 TArray<FString> SegmentFiles;
375- FileManager.FindFiles (SegmentFiles, *(segmentsDir / TEXT (" segment_ *.mp4" )), true , false );
379+ FileManager.FindFiles (SegmentFiles, *(segmentsDir / (segmentPrefix + TEXT (" *.mp4" ) )), true , false );
376380
377381 // Sort segment files based on their numerical part
378382 SegmentFiles.Sort ([](const FString& A, const FString& B)
0 commit comments