Have a loop run for X amount of time

Yeah, That's what I've used for my timing portion.

I still cannot get the timing right once I push the button. This doesn't work how I want, but if it hasen't been running for 10 seconds yet, it sort of does what I want. haha.

void loop()

{
 
  EVAL = digitalRead(EBUTT);

  if(EVAL == HIGH) {
    delay(10);
       
    while(millis() < EndTime) 
    {
       digitalWrite(ELED, HIGH);
       digitalWrite(FLED, LOW);
    }
      // Still need to tell it to stay in this state for VIDEO LENGTH
  
        unsigned long FStartTime = millis();
        
      if(FStartTime - Zero > FEndTime)
    {
        Zero = FStartTime;
      
      if (FSTATE == LOW)
        FSTATE = LOW;
       else
        FSTATE = LOW;
   
       digitalWrite(FLED, FSTATE);
        

    }  
  } 
  else 
  {
     unsigned long ECurrentFlashMillis = millis();
 
     if(ECurrentFlashMillis - EPrevFlashMillis > Einterval) 
     {
      EPrevFlashMillis = ECurrentFlashMillis;
 
       if (ESTATE == LOW)
        ESTATE = HIGH;
       else
        ESTATE = LOW;
   
       digitalWrite(ELED, ESTATE); 
     }   
         
      unsigned long FCurrentFlashMillis = millis();
 
        if(FCurrentFlashMillis - FPrevFlashMillis > Finterval) 
    {
        FPrevFlashMillis = FCurrentFlashMillis;
 
       if (FSTATE == LOW)
        FSTATE = HIGH;
       else
        FSTATE = LOW;
   
       digitalWrite(FLED, FSTATE); 
     } 
  }
}