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