Add metadata to audio files - feature
This commit is contained in:
parent
f9b1dec600
commit
8cfb17682f
4 changed files with 130 additions and 0 deletions
42
src/FFMpeg/Filters/Audio/AddMetadataFilter.php
Normal file
42
src/FFMpeg/Filters/Audio/AddMetadataFilter.php
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
namespace FFMpeg\Filters\Audio;
|
||||
|
||||
use FFMpeg\Filters\Audio\AudioFilterInterface;
|
||||
use FFMpeg\Format\AudioInterface;
|
||||
use FFMpeg\Media\Audio;
|
||||
|
||||
class AddMetadataFilter implements AudioFilterInterface
|
||||
{
|
||||
/** @var Array */
|
||||
private $metaArr;
|
||||
|
||||
function __construct($data = null)
|
||||
{
|
||||
$this->metaArr = $data;
|
||||
}
|
||||
|
||||
public function getPriority()
|
||||
{
|
||||
//must be of high priority in case theres a second input stream (artwork) to register with audio
|
||||
return 9;
|
||||
}
|
||||
|
||||
public function apply(Audio $audio, AudioInterface $format)
|
||||
{
|
||||
if (is_null($this->metaArr))
|
||||
return ['-map_metadata', '-1', '-vn'];
|
||||
|
||||
$metadata = [];
|
||||
|
||||
if (array_key_exists("artwork", $this->metaArr)) {
|
||||
array_push($metadata, "-i", $this->metaArr['artwork'], "-map", "0", "-map", "1");
|
||||
unset($this->metaArr['artwork']);
|
||||
}
|
||||
|
||||
foreach ($this->metaArr as $k => $v) {
|
||||
array_push($metadata, "-metadata", "$k=$v");
|
||||
}
|
||||
|
||||
return $metadata;
|
||||
}
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace FFMpeg\Filters\Audio;
|
||||
|
||||
use FFMpeg\Filters\Audio\AddMetadataFilter;
|
||||
use FFMpeg\Media\Audio;
|
||||
|
||||
class AudioFilters
|
||||
|
|
@ -26,4 +27,25 @@ class AudioFilters
|
|||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add metadata to an audio file. If no arguments are given then filter
|
||||
* will remove all metadata from the audio file
|
||||
* @param Array|Null $data If array must contain one of these key/value pairs:
|
||||
* - "title": Title metadata
|
||||
* - "artist": Artist metadata
|
||||
* - "composer": Composer metadata
|
||||
* - "album": Album metadata
|
||||
* - "track": Track metadata
|
||||
* - "artwork": Song artwork. String of file path
|
||||
* - "year": Year metadata
|
||||
* - "genre": Genre metadata
|
||||
* - "description": Description metadata
|
||||
*/
|
||||
public function addMetadata($data = null)
|
||||
{
|
||||
$this->media->addFilter(new AddMetadataFilter($data));
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue