Fix #47 : MediaTypeInterface::save adds filters depending on the codec

This commit is contained in:
Romain Neutron 2013-08-05 14:19:12 +02:00
commit ef237a8f76
4 changed files with 162 additions and 13 deletions

View file

@ -69,21 +69,24 @@ class Audio extends AbstractStreamableMedia
$commands = array('-y', '-i', $this->pathfile);
$this->addFilter(new SimpleFilter($format->getExtraParams(), 10));
$filters = clone $this->filters;
$filters->add(new SimpleFilter($format->getExtraParams(), 10));
if ($this->driver->getConfiguration()->has('ffmpeg.threads')) {
$this->addFilter(new SimpleFilter(array('-threads', $this->driver->getConfiguration()->get('ffmpeg.threads'))));
$filters->add(new SimpleFilter(array('-threads', $this->driver->getConfiguration()->get('ffmpeg.threads'))));
}
if (null !== $format->getAudioCodec()) {
$this->addFilter(new SimpleFilter(array('-acodec', $format->getAudioCodec())));
$filters->add(new SimpleFilter(array('-acodec', $format->getAudioCodec())));
}
foreach ($this->filters as $filter) {
foreach ($filters as $filter) {
$commands = array_merge($commands, $filter->apply($this, $format));
}
$commands[] = '-b:a';
$commands[] = $format->getAudioKiloBitrate() . 'k';
if (null !== $format->getAudioKiloBitrate()) {
$commands[] = '-b:a';
$commands[] = $format->getAudioKiloBitrate() . 'k';
}
$commands[] = $outputPathfile;
try {