Example #1
0
 public function parse($content)
 {
     $data = $this->content2Data($content);
     $version = 3;
     $mediaSequence = 0;
     extract($data);
     // to $version, $mediaSequence, $targetDuration
     $playlist = new Playlist();
     foreach ($data['playlist'] as $index => $row) {
         $mediaSegment = new MediaSegment($row['uri'], $row['duration'], $mediaSequence + $index, !empty($row['isDiscontinuity']));
         $playlist->add($mediaSegment);
     }
     return new M3u8($playlist, $version, $targetDuration);
 }
Example #2
0
 public function generate(ChannelInterface $channel, \DateTime $startsAt = null)
 {
     $targetDuration = $this->options['target_duration'];
     if (null === $startsAt) {
         $startsAt = new \DateTime();
     }
     $segments = $this->manager->findPlaying($channel, $startsAt, $targetDuration * 3);
     $playlist = new Playlist($segments);
     $first = $playlist->getFirst();
     if (null === $first) {
         return;
     }
     $age = $first->getEndsAt()->getTimestamp() - $startsAt->getTimestamp() + 1;
     $playlist->setAge($age);
     $discontinuitySequence = $first->getProgram()->getSequence();
     if ($first->isDiscontinuity()) {
         --$discontinuitySequence;
     }
     return new M3u8($playlist, $this->options['version'], $targetDuration, $discontinuitySequence);
 }