22#include " HAL/PlatformProcess.h"
33#include " Misc/Paths.h"
44#include " Misc/FileHelper.h"
5+ #include " Misc/Guid.h"
56#include " BH_Runnable.h"
67#include " BH_FFmpeg.h"
78
@@ -26,6 +27,9 @@ BH_VideoEncoder::BH_VideoEncoder(
2627 SegmentCheckInterval(FTimespan::FromMinutes(1 )),
2728 LastSegmentCheckTime(FDateTime::Now())
2829{
30+ // Generate a random 5-character string for segmentPrefix
31+ segmentPrefix = FGuid::NewGuid ().ToString (EGuidFormats::Digits).Left (5 ) + TEXT (" _" );
32+
2933 // check if width and height are multiples of 4
3034 if (screenWidth % 4 != 0 || screenHeight % 4 != 0 )
3135 {
@@ -51,13 +55,13 @@ BH_VideoEncoder::BH_VideoEncoder(
5155 // Remove all existing segment files
5256 IFileManager& FileManager = IFileManager::Get ();
5357 TArray<FString> SegmentFiles;
54- FileManager.FindFiles (SegmentFiles, *(segmentsDir / TEXT (" segment_ *.mp4" )), true , false );
58+ FileManager.FindFiles (SegmentFiles, *(segmentsDir / (segmentPrefix + TEXT (" *.mp4" ) )), true , false );
5559 for (const FString& SegmentFile : SegmentFiles)
5660 {
5761 FileManager.Delete (*(segmentsDir / SegmentFile));
5862 }
5963
60- outputFile = FPaths::Combine (segmentsDir, TEXT (" segment_ %06d.mp4" ));
64+ outputFile = FPaths::Combine (segmentsDir, (segmentPrefix + TEXT (" %06d.mp4" ) ));
6165 encodingSettings = TEXT (" -y -f rawvideo -pix_fmt bgra -s " ) +
6266 FString::FromInt (screenWidth) + TEXT (" x" ) + FString::FromInt (screenHeight) +
6367 TEXT (" -r " ) + FString::FromInt (targetFPS) +
@@ -291,7 +295,7 @@ FString BH_VideoEncoder::MergeSegments(int32 MaxSegments)
291295 // Get the list of segment files
292296 IFileManager& FileManager = IFileManager::Get ();
293297 TArray<FString> SegmentFiles;
294- FileManager.FindFiles (SegmentFiles, *(segmentsDir / TEXT (" segment_ *.mp4" )), true , false );
298+ FileManager.FindFiles (SegmentFiles, *(segmentsDir / (segmentPrefix + TEXT (" *.mp4" ) )), true , false );
295299
296300 // Sort and take the last MaxSegments
297301 SegmentFiles.Sort ();
@@ -371,7 +375,7 @@ void BH_VideoEncoder::RemoveOldSegments()
371375
372376 IFileManager& FileManager = IFileManager::Get ();
373377 TArray<FString> SegmentFiles;
374- FileManager.FindFiles (SegmentFiles, *(segmentsDir / TEXT (" segment_ *.mp4" )), true , false );
378+ FileManager.FindFiles (SegmentFiles, *(segmentsDir / (segmentPrefix + TEXT (" *.mp4" ) )), true , false );
375379
376380 // Sort segment files based on their numerical part
377381 SegmentFiles.Sort ([](const FString& A, const FString& B)
0 commit comments