diff --git a/README.md b/README.md
index 77248c1..0eb7d00 100644
--- a/README.md
+++ b/README.md
@@ -65,6 +65,16 @@ foreach ($audios as $audio) {
}
```
+### Get subtitles information from media information container
+
+```php
+$subtitles = $mediaInfoContainer->getSubtitles();
+
+foreach ($subtitles as $subtitle) {
+ // ... do something
+}
+```
+
### Get images information from media information container
```php
diff --git a/src/Container/MediaInfoContainer.php b/src/Container/MediaInfoContainer.php
index 4e6ead3..52db1af 100644
--- a/src/Container/MediaInfoContainer.php
+++ b/src/Container/MediaInfoContainer.php
@@ -6,6 +6,7 @@
use Mhor\MediaInfo\Type\Audio;
use Mhor\MediaInfo\Type\General;
use Mhor\MediaInfo\Type\Image;
+use Mhor\MediaInfo\Type\Subtitle;
use Mhor\MediaInfo\Type\Video;
class MediaInfoContainer
@@ -14,6 +15,7 @@ class MediaInfoContainer
const AUDIO_CLASS = 'Mhor\MediaInfo\Type\Audio';
const IMAGE_CLASS = 'Mhor\MediaInfo\Type\Image';
const VIDEO_CLASS = 'Mhor\MediaInfo\Type\Video';
+ const SUBTITLE_CLASS = 'Mhor\MediaInfo\Type\Subtitle';
/**
* @var string
@@ -35,6 +37,11 @@ class MediaInfoContainer
*/
private $videos = array();
+ /**
+ * @var Subtitle[]
+ */
+ private $subtitles = array();
+
/**
* @var Image[]
*/
@@ -88,6 +95,14 @@ public function getVideos()
return $this->videos;
}
+ /**
+ * @return Subtitle[]
+ */
+ public function getSubtitles()
+ {
+ return $this->subtitles;
+ }
+
/**
* @param General $general
*/
@@ -115,6 +130,9 @@ public function add(AbstractType $trackType)
case self::GENERAL_CLASS:
$this->setGeneral($trackType);
break;
+ case self::SUBTITLE_CLASS:
+ $this->addSubtitle($trackType);
+ break;
default:
throw new \Exception('Unknow type');
}
@@ -143,4 +161,12 @@ private function addImage(Image $image)
{
$this->images[] = $image;
}
+
+ /**
+ * @param Subtitle $subtitle
+ */
+ private function addSubtitle(Subtitle $subtitle)
+ {
+ $this->subtitles[] = $subtitle;
+ }
}
diff --git a/src/Factory/TypeFactory.php b/src/Factory/TypeFactory.php
index 6b75a89..64c06ed 100644
--- a/src/Factory/TypeFactory.php
+++ b/src/Factory/TypeFactory.php
@@ -6,6 +6,7 @@
use Mhor\MediaInfo\Type\Audio;
use Mhor\MediaInfo\Type\General;
use Mhor\MediaInfo\Type\Image;
+use Mhor\MediaInfo\Type\Subtitle;
use Mhor\MediaInfo\Type\Video;
class TypeFactory
@@ -14,6 +15,7 @@ class TypeFactory
const IMAGE = 'Image';
const GENERAL = 'General';
const VIDEO = 'Video';
+ const SUBTITLE = 'Text';
/**
* @param $type
@@ -31,6 +33,8 @@ public function create($type)
return new General();
case self::VIDEO:
return new Video();
+ case self::SUBTITLE:
+ return new Subtitle();
default:
throw new \Exception('Type doesn\'t exist');
}
diff --git a/src/Type/Subtitle.php b/src/Type/Subtitle.php
new file mode 100644
index 0000000..79374a6
--- /dev/null
+++ b/src/Type/Subtitle.php
@@ -0,0 +1,7 @@
+addTrackType('Audio', array());
+ $mediaInfoContainerBuilder->addTrackType(TypeFactory::AUDIO, array());
$mediaContainer = $mediaInfoContainerBuilder->build();
$audios = $mediaContainer->getAudios();
$this->assertEquals(0, count($audios[0]->get()));
- $mediaInfoContainerBuilder->addTrackType('Video', array());
+ $mediaInfoContainerBuilder->addTrackType(TypeFactory::VIDEO, array());
$mediaContainer = $mediaInfoContainerBuilder->build();
$videos = $mediaContainer->getVideos();
$this->assertEquals(0, count($videos[0]->get()));
- $mediaInfoContainerBuilder->addTrackType('General', array());
+ $mediaInfoContainerBuilder->addTrackType(TypeFactory::GENERAL, array());
$mediaContainer = $mediaInfoContainerBuilder->build();
$this->assertEquals(0, count($mediaContainer->getGeneral()->get()));
- $mediaInfoContainerBuilder->addTrackType('Image', array());
+ $mediaInfoContainerBuilder->addTrackType(TypeFactory::IMAGE, array());
$mediaContainer = $mediaInfoContainerBuilder->build();
$images = $mediaContainer->getImages();
$this->assertEquals(0, count($images[0]->get()));
+
+ $mediaInfoContainerBuilder->addTrackType(TypeFactory::SUBTITLE, array());
+ $mediaContainer = $mediaInfoContainerBuilder->build();
+ $subtitles = $mediaContainer->getSubtitles();
+ $this->assertEquals(0, count($subtitles[0]->get()));
}
/**
diff --git a/test/Parser/MediaInfoOutputParserTest.php b/test/Parser/MediaInfoOutputParserTest.php
index bf35a82..9d68eed 100644
--- a/test/Parser/MediaInfoOutputParserTest.php
+++ b/test/Parser/MediaInfoOutputParserTest.php
@@ -45,6 +45,7 @@ public function testGetMediaInfoContainer()
$this->assertEquals(20974464, $audios[0]->get('samples_count'));
$this->assertEquals(null, $audios[0]->get('test'));
- $this->assertEquals(34, count($mediaInfoContainer->getGeneral()->get()));
+ $subtitles = $mediaInfoContainer->getSubtitles();
+ $this->assertEquals(16, count($subtitles[0]->get()));
}
}
diff --git a/test/fixtures/mediainfo-output.xml b/test/fixtures/mediainfo-output.xml
index 72a1ec3..c637365 100644
--- a/test/fixtures/mediainfo-output.xml
+++ b/test/fixtures/mediainfo-output.xml
@@ -97,6 +97,34 @@
18.1 MiB (98%)
0.98404
-
+