Rename interfaces
This commit is contained in:
		
					parent
					
						
							
								e7918c03f7
							
						
					
				
			
			
				commit
				
					
						78bb1bd86e
					
				
			
		
					 13 changed files with 162 additions and 67 deletions
				
			
		|  | @ -176,11 +176,17 @@ class FFMpeg extends Binary | ||||||
|             . escapeshellarg($this->pathfile) |             . escapeshellarg($this->pathfile) | ||||||
|             . ' ' . $format->getExtraParams() |             . ' ' . $format->getExtraParams() | ||||||
|             . ' -threads ' . $threads |             . ' -threads ' . $threads | ||||||
|             . ' -acodec ' . $format->getAudioCodec() |  | ||||||
|             . ' -ab ' . $format->getKiloBitrate() . 'k ' |             . ' -ab ' . $format->getKiloBitrate() . 'k ' | ||||||
|             . ' -ac 2 -ar ' . $format->getAudioSampleRate() |  | ||||||
|             . ' ' . escapeshellarg($outputPathfile); |             . ' ' . escapeshellarg($outputPathfile); | ||||||
| 
 | 
 | ||||||
|  |         if ($format instanceof Audio\Transcodable) { | ||||||
|  |             $cmd .= ' -acodec ' . $format->getAudioCodec(); | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         if ($format instanceof Audio\Resamplable) { | ||||||
|  |             $cmd .= ' -ac 2 -ar ' . $format->getAudioSampleRate(); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         $process = new Process($cmd); |         $process = new Process($cmd); | ||||||
| 
 | 
 | ||||||
|         $this->logger->addInfo(sprintf('FFmpeg executes command %s', $cmd)); |         $this->logger->addInfo(sprintf('FFmpeg executes command %s', $cmd)); | ||||||
|  | @ -226,8 +232,7 @@ class FFMpeg extends Binary | ||||||
| 
 | 
 | ||||||
|             $result = $this->prober->probeStreams($this->pathfile); |             $result = $this->prober->probeStreams($this->pathfile); | ||||||
| 
 | 
 | ||||||
|             $originalWidth = $format->getWidth(); |             $originalWidth = $originalHeight = null; | ||||||
|             $originalHeight = $format->getHeight(); |  | ||||||
| 
 | 
 | ||||||
|             foreach ($result as $stream) { |             foreach ($result as $stream) { | ||||||
|                 foreach ($stream as $info) { |                 foreach ($stream as $info) { | ||||||
|  | @ -242,23 +247,35 @@ class FFMpeg extends Binary | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|  |             if ($originalHeight !== null && $originalWidth !== null) { | ||||||
|                 list($width, $height) = $format->getComputedDimensions($originalWidth, $originalHeight); |                 list($width, $height) = $format->getComputedDimensions($originalWidth, $originalHeight); | ||||||
| 
 | 
 | ||||||
|             $width = $this->getMultiple($format->getWidth(), 16); |                 $width = $this->getMultiple($width, 16); | ||||||
|             $height = $this->getMultiple($format->getHeight(), 16); |                 $height = $this->getMultiple($height, 16); | ||||||
| 
 | 
 | ||||||
|                 $cmd_part2 .= ' -s ' . $width . 'x' . $height; |                 $cmd_part2 .= ' -s ' . $width . 'x' . $height; | ||||||
|             } |             } | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
|         $cmd_part2 .= ' -r ' . $format->getFrameRate() |         if ($format instanceof Video\Resamplable) { | ||||||
|             . ' -vcodec ' . $format->getVideoCodec() |             $cmd_part2 .= ' -r ' . $format->getFrameRate(); | ||||||
|             . ' -b ' . $format->getKiloBitrate() . 'k -g 25 -bf 3' |         } | ||||||
|  | 
 | ||||||
|  |         if ($format instanceof Video\Transcodable) { | ||||||
|  |             $cmd_part2 .= ' -vcodec ' . $format->getVideoCodec(); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         $cmd_part2 .= ' -b ' . $format->getKiloBitrate() . 'k -g 25 -bf 3' | ||||||
|             . ' -threads ' . $threads |             . ' -threads ' . $threads | ||||||
|             . ' -refs 6 -b_strategy 1 -coder 1 -qmin 10 -qmax 51 ' |             . ' -refs 6 -b_strategy 1 -coder 1 -qmin 10 -qmax 51 ' | ||||||
|             . ' -sc_threshold 40 -flags +loop -cmp +chroma' |             . ' -sc_threshold 40 -flags +loop -cmp +chroma' | ||||||
|             . ' -me_range 16 -subq 7 -i_qfactor 0.71 -qcomp 0.6 -qdiff 4 ' |             . ' -me_range 16 -subq 7 -i_qfactor 0.71 -qcomp 0.6 -qdiff 4 ' | ||||||
|             . ' -trellis 1 -qscale 1 ' |             . ' -trellis 1 -qscale 1 ' | ||||||
|             . '-acodec ' . $format->getAudioCodec() . ' -ab 92k '; |             . ' -ab 92k '; | ||||||
|  | 
 | ||||||
|  |         if ($format instanceof Audio\Transcodable) { | ||||||
|  |             $cmd_part2 .= '-acodec ' . $format->getAudioCodec(); | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
|         $tmpFile = new \SplFileInfo(tempnam(sys_get_temp_dir(), 'temp') . '.' . pathinfo($outputPathfile, PATHINFO_EXTENSION)); |         $tmpFile = new \SplFileInfo(tempnam(sys_get_temp_dir(), 'temp') . '.' . pathinfo($outputPathfile, PATHINFO_EXTENSION)); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -19,13 +19,6 @@ namespace FFMpeg\Format; | ||||||
| interface Audio | interface Audio | ||||||
| { | { | ||||||
| 
 | 
 | ||||||
|     /** |  | ||||||
|      * Returns the audio codec |  | ||||||
|      * |  | ||||||
|      * @return string |  | ||||||
|      */ |  | ||||||
|     public function getAudioCodec(); |  | ||||||
| 
 |  | ||||||
|     /** |     /** | ||||||
|      * Get the kiloBitrate value |      * Get the kiloBitrate value | ||||||
|      * |      * | ||||||
|  | @ -33,4 +26,12 @@ interface Audio | ||||||
|      */ |      */ | ||||||
|     public function getKiloBitrate(); |     public function getKiloBitrate(); | ||||||
|      |      | ||||||
|  |     /** | ||||||
|  |      * Give som extra parameters to add to ffmpeg commandline | ||||||
|  |      * Parameters MUST be escaped | ||||||
|  |      *  | ||||||
|  |      * @return string | ||||||
|  |      */ | ||||||
|  |     public function getExtraParams(); | ||||||
|  | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -18,7 +18,7 @@ use FFMpeg\Exception\InvalidArgumentException; | ||||||
|  * |  * | ||||||
|  * @author Romain Neutron imprec@gmail.com |  * @author Romain Neutron imprec@gmail.com | ||||||
|  */ |  */ | ||||||
| abstract class DefaultAudio implements ResamplableAudio, InteractiveAudio | abstract class DefaultAudio implements Resamplable, Interactive | ||||||
| { | { | ||||||
|     protected $audioCodec; |     protected $audioCodec; | ||||||
|     protected $audioSampleRate = 44100; |     protected $audioSampleRate = 44100; | ||||||
|  |  | ||||||
|  | @ -11,8 +11,6 @@ | ||||||
| 
 | 
 | ||||||
| namespace FFMpeg\Format\Audio; | namespace FFMpeg\Format\Audio; | ||||||
| 
 | 
 | ||||||
| use FFMpeg\Format\Audio as BaseAudio; |  | ||||||
| 
 |  | ||||||
| /** | /** | ||||||
|  * The interactive audio interface. This provide a method to list available |  * The interactive audio interface. This provide a method to list available | ||||||
|  * codecs. This is usefull to build interactive development and switch between |  * codecs. This is usefull to build interactive development and switch between | ||||||
|  | @ -20,7 +18,7 @@ use FFMpeg\Format\Audio as BaseAudio; | ||||||
|  * |  * | ||||||
|  * @author Romain Neutron imprec@gmail.com |  * @author Romain Neutron imprec@gmail.com | ||||||
|  */ |  */ | ||||||
| interface InteractiveAudio extends BaseAudio | interface Interactive extends Transcodable | ||||||
| { | { | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|  | @ -20,7 +20,7 @@ use FFMpeg\Format\Audio as BaseAudio; | ||||||
|  * |  * | ||||||
|  * @author Romain Neutron imprec@gmail.com |  * @author Romain Neutron imprec@gmail.com | ||||||
|  */ |  */ | ||||||
| interface ResamplableAudio extends BaseAudio | interface Resamplable extends BaseAudio | ||||||
| { | { | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
							
								
								
									
										28
									
								
								src/FFMpeg/Format/Audio/Transcodable.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/FFMpeg/Format/Audio/Transcodable.php
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | ||||||
|  | <?php | ||||||
|  | 
 | ||||||
|  | /* | ||||||
|  |  * This file is part of PHP-FFmpeg. | ||||||
|  |  * | ||||||
|  |  * (c) Alchemy <info@alchemy.fr> | ||||||
|  |  * | ||||||
|  |  * For the full copyright and license information, please view the LICENSE | ||||||
|  |  * file that was distributed with this source code. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | namespace FFMpeg\Format\Audio; | ||||||
|  | 
 | ||||||
|  | use FFMpeg\Format\Audio as BaseAudio; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * @author Romain Neutron imprec@gmail.com | ||||||
|  |  */ | ||||||
|  | interface Transcodable extends BaseAudio | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Returns the audio codec | ||||||
|  |      * | ||||||
|  |      * @return string | ||||||
|  |      */ | ||||||
|  |     public function getAudioCodec(); | ||||||
|  | } | ||||||
							
								
								
									
										43
									
								
								src/FFMpeg/Format/Dimension.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								src/FFMpeg/Format/Dimension.php
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,43 @@ | ||||||
|  | <?php | ||||||
|  | 
 | ||||||
|  | /* | ||||||
|  |  * This file is part of PHP-FFmpeg. | ||||||
|  |  * | ||||||
|  |  * (c) Alchemy <info@alchemy.fr> | ||||||
|  |  * | ||||||
|  |  * For the full copyright and license information, please view the LICENSE | ||||||
|  |  * file that was distributed with this source code. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | namespace FFMpeg\Format; | ||||||
|  | 
 | ||||||
|  | use FFMpeg\Exception\InvalidArgumentException; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * @author Romain Neutron imprec@gmail.com | ||||||
|  |  */ | ||||||
|  | class Dimension | ||||||
|  | { | ||||||
|  |     protected $width; | ||||||
|  |     protected $height; | ||||||
|  | 
 | ||||||
|  |     public function __construct($width, $height) | ||||||
|  |     { | ||||||
|  |         if ($width <= 0 || $height <= 0) { | ||||||
|  |             throw InvalidArgumentException('Width and height should be positive integer'); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         $this->width = (int) $width; | ||||||
|  |         $this->height = (int) $height; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public function getWidth() | ||||||
|  |     { | ||||||
|  |         return $this->width; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public function getHeight() | ||||||
|  |     { | ||||||
|  |         return $this->height; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -19,10 +19,4 @@ namespace FFMpeg\Format; | ||||||
| interface Video extends Audio | interface Video extends Audio | ||||||
| { | { | ||||||
|      |      | ||||||
|     /** |  | ||||||
|      * Returns the video codec |  | ||||||
|      * |  | ||||||
|      * @return string |  | ||||||
|      */ |  | ||||||
|     public function getVideoCodec(); |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -12,6 +12,7 @@ | ||||||
| namespace FFMpeg\Format\Video; | namespace FFMpeg\Format\Video; | ||||||
| 
 | 
 | ||||||
| use FFMpeg\Format\Audio\DefaultAudio; | use FFMpeg\Format\Audio\DefaultAudio; | ||||||
|  | use FFMpeg\Format\Dimension; | ||||||
| use FFMpeg\Exception\InvalidArgumentException; | use FFMpeg\Exception\InvalidArgumentException; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  | @ -19,7 +20,7 @@ use FFMpeg\Exception\InvalidArgumentException; | ||||||
|  * |  * | ||||||
|  * @author Romain Neutron imprec@gmail.com |  * @author Romain Neutron imprec@gmail.com | ||||||
|  */ |  */ | ||||||
| abstract class DefaultVideo extends DefaultAudio implements InteractiveVideo, ResamplableVideo, ResizableVideo | abstract class DefaultVideo extends DefaultAudio implements Interactive, Resamplable, Resizable | ||||||
| { | { | ||||||
|     const RESIZEMODE_FIT = 'fit'; |     const RESIZEMODE_FIT = 'fit'; | ||||||
|     const RESIZEMODE_INSET = 'inset'; |     const RESIZEMODE_INSET = 'inset'; | ||||||
|  | @ -33,7 +34,10 @@ abstract class DefaultVideo extends DefaultAudio implements InteractiveVideo, Re | ||||||
|     protected $kiloBitrate = 1000; |     protected $kiloBitrate = 1000; | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * {@inheritdoc} |      * Returns the width setting. | ||||||
|  |      * The return of this method should not depend on a media file size | ||||||
|  |      * | ||||||
|  |      * @return integer | ||||||
|      */ |      */ | ||||||
|     public function getWidth() |     public function getWidth() | ||||||
|     { |     { | ||||||
|  | @ -41,7 +45,10 @@ abstract class DefaultVideo extends DefaultAudio implements InteractiveVideo, Re | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * {@inheritdoc} |      * Returns the height setting | ||||||
|  |      * The return of this method should not depend on a media file size | ||||||
|  |      * | ||||||
|  |      * @return integer | ||||||
|      */ |      */ | ||||||
|     public function getHeight() |     public function getHeight() | ||||||
|     { |     { | ||||||
|  | @ -95,7 +102,7 @@ abstract class DefaultVideo extends DefaultAudio implements InteractiveVideo, Re | ||||||
|                 break; |                 break; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         return array($width, $height); |         return new Dimension($width, $height); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|  | @ -121,7 +128,9 @@ abstract class DefaultVideo extends DefaultAudio implements InteractiveVideo, Re | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * {@inheritdoc} |      * Get the current resize mode name | ||||||
|  |      * | ||||||
|  |      * @return string | ||||||
|      */ |      */ | ||||||
|     public function getResizeMode() |     public function getResizeMode() | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -11,8 +11,6 @@ | ||||||
| 
 | 
 | ||||||
| namespace FFMpeg\Format\Video; | namespace FFMpeg\Format\Video; | ||||||
| 
 | 
 | ||||||
| use FFMpeg\Format\Video as BaseVideo; |  | ||||||
| 
 |  | ||||||
| /** | /** | ||||||
|  * The interactive video interface. This provide a method to list available |  * The interactive video interface. This provide a method to list available | ||||||
|  * codecs. This is usefull to build interactive development and switch between |  * codecs. This is usefull to build interactive development and switch between | ||||||
|  | @ -20,7 +18,7 @@ use FFMpeg\Format\Video as BaseVideo; | ||||||
|  * |  * | ||||||
|  * @author Romain Neutron imprec@gmail.com |  * @author Romain Neutron imprec@gmail.com | ||||||
|  */ |  */ | ||||||
| interface InteractiveVideo extends BaseVideo | interface Interactive extends Transcodable | ||||||
| { | { | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|  | @ -20,7 +20,7 @@ use FFMpeg\Format\Video as BaseVideo; | ||||||
|  * |  * | ||||||
|  * @author Romain Neutron imprec@gmail.com |  * @author Romain Neutron imprec@gmail.com | ||||||
|  */ |  */ | ||||||
| interface ResamplableVideo extends BaseVideo | interface Resamplable extends BaseVideo | ||||||
| { | { | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|  | @ -12,6 +12,7 @@ | ||||||
| namespace FFMpeg\Format\Video; | namespace FFMpeg\Format\Video; | ||||||
| 
 | 
 | ||||||
| use FFMpeg\Format\Video as BaseVideo; | use FFMpeg\Format\Video as BaseVideo; | ||||||
|  | use FFMpeg\Format\Dimension; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * The resizable video interface |  * The resizable video interface | ||||||
|  | @ -20,39 +21,16 @@ use FFMpeg\Format\Video as BaseVideo; | ||||||
|  * |  * | ||||||
|  * @author Romain Neutron imprec@gmail.com |  * @author Romain Neutron imprec@gmail.com | ||||||
|  */ |  */ | ||||||
| interface ResizableVideo extends BaseVideo | interface Resizable extends BaseVideo | ||||||
| { | { | ||||||
| 
 | 
 | ||||||
|     /** |  | ||||||
|      * Returns the width setting. |  | ||||||
|      * The return of this method should not depend on a media file size |  | ||||||
|      * |  | ||||||
|      * @return integer |  | ||||||
|      */ |  | ||||||
|     public function getWidth(); |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Returns the height setting |  | ||||||
|      * The return of this method should not depend on a media file size |  | ||||||
|      * |  | ||||||
|      * @return integer |  | ||||||
|      */ |  | ||||||
|     public function getHeight(); |  | ||||||
| 
 |  | ||||||
|     /** |     /** | ||||||
|      * Returns the computed dimensions for the resize, after operation. |      * Returns the computed dimensions for the resize, after operation. | ||||||
|      * This method return the actual dimensions that FFmpeg will use. |      * This method return the actual dimensions that FFmpeg will use. | ||||||
|      * |      * | ||||||
|      * @param  integer $originalWidth |      * @param  integer $originalWidth | ||||||
|      * @param  integer $originalHeight |      * @param  integer $originalHeight | ||||||
|      * @return array   An indexed array containing the width and the height |      * @return Dimension  A dimension | ||||||
|      */ |      */ | ||||||
|     public function getComputedDimensions($originalWidth, $originalHeight); |     public function getComputedDimensions($originalWidth, $originalHeight); | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Get the current resize mode name |  | ||||||
|      * |  | ||||||
|      * @return string |  | ||||||
|      */ |  | ||||||
|     public function getResizeMode(); |  | ||||||
| } | } | ||||||
							
								
								
									
										29
									
								
								src/FFMpeg/Format/Video/Transcodable.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								src/FFMpeg/Format/Video/Transcodable.php
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,29 @@ | ||||||
|  | <?php | ||||||
|  | 
 | ||||||
|  | /* | ||||||
|  |  * This file is part of PHP-FFmpeg. | ||||||
|  |  * | ||||||
|  |  * (c) Alchemy <info@alchemy.fr> | ||||||
|  |  * | ||||||
|  |  * For the full copyright and license information, please view the LICENSE | ||||||
|  |  * file that was distributed with this source code. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | namespace FFMpeg\Format\Video; | ||||||
|  | 
 | ||||||
|  | use FFMpeg\Format\Video as BaseVideo; | ||||||
|  | use FFMpeg\Format\Dimension; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * @author Romain Neutron imprec@gmail.com | ||||||
|  |  */ | ||||||
|  | interface Transcodable extends BaseVideo | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Returns the video codec | ||||||
|  |      * | ||||||
|  |      * @return string | ||||||
|  |      */ | ||||||
|  |     public function getVideoCodec(); | ||||||
|  | } | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue