diff --git a/lib/mp4.cpp b/lib/mp4.cpp index 85ded767..736acbd4 100644 --- a/lib/mp4.cpp +++ b/lib/mp4.cpp @@ -1,7 +1,8 @@ -#include "mp4.h" #include //for malloc and free #include //for memcpy #include //for htonl and friends +#include "mp4.h" +#include "json.h" /// Contains all MP4 format related code. namespace MP4{ @@ -363,12 +364,16 @@ void ASRT::WriteContent( ) { SetPayload((uint32_t)4,Box::uint32_to_uint8((isUpdate ? 1 : 0))); } -std::string GenerateLiveBootstrap( uint32_t CurMediaTime ) { +std::string GenerateLiveBootstrap( JSON::Value & metadata ) { AFRT afrt; afrt.SetUpdate(false); afrt.SetTimeScale(1000); afrt.AddQualityEntry(""); - afrt.AddFragmentRunEntry(1, 0 , 4000); //FirstFragment, FirstFragmentTimestamp,Fragment Duration in milliseconds + if (!metadata.isMember("video") || !metadata["video"].isMember("keyms")){ + afrt.AddFragmentRunEntry(1, 0, 1000); //FirstFragment, FirstFragmentTimestamp,Fragment Duration in milliseconds + }else{ + afrt.AddFragmentRunEntry(1, 0, metadata["video"]["keyms"].asInt()); //FirstFragment, FirstFragmentTimestamp,Fragment Duration in milliseconds + } afrt.WriteContent(); ASRT asrt; diff --git a/lib/mp4.h b/lib/mp4.h index 0ef24659..2543fed0 100644 --- a/lib/mp4.h +++ b/lib/mp4.h @@ -2,6 +2,7 @@ #include #include #include +#include "json.h" /// Contains all MP4 format related code. namespace MP4{ @@ -125,7 +126,7 @@ namespace MP4{ Box * Container; };//ASRT Box - std::string GenerateLiveBootstrap( uint32_t CurMediaTime ); + std::string GenerateLiveBootstrap( JSON::Value & metadata ); std::string mdatFold(std::string data); };