TranscodeBundle - for symfony 2.6
TranscodeBundle is designed to work with Amazon Elastic Transcoder
Amazon Elastic Transcoder is media transcoding in the cloud. It is designed to be a highly scalable, easy to use and a cost effective way for developers and businesses to convert (or “transcode”) media files from their source format into versions that will playback on devices like smartphones, tablets and PCs.
Add TranscodeBundle by running the command
$ php composer.phar require codesushi/transcodebundle
Composer will install the bundle to your project's vendor/codesushi directory. You also need to install aws-sdk.
Add to your config.yml :
coshi_transcode:
media_class: #path to media class. Must to implement TranscodeableInterface
aws_access_key_id: #access key
aws_secret_key: #secret key
aws_s3_videos_bucket: #bucket name
aws_transcoder_videos_pipeline_id: #pipeline id
aws_transcoder_videos_presets:
generic: #generic presets
iphone4: #iphone4 presets
aws_transcoder_region: #region
media_provider: #must to implement TranscodeableProviderInterface
type: #repository or service
name: #name of provider
Read more about pipeline and presets
Example:
$amazonVideo = $this->getContainer()->get('coshi.amazon_transcoder.transcoder');
$amazonVideo->setVideo($video); //$video can be a Media entity (TranscodeableProviderInterface) or a s3 key
$s3Object = $amazonVideo->upload();
if (is_null($s3Object)) {
//This video has been uploaded already!
} else {
//Upload Finished!
}
$job = $amazonVideo->convert();
if (is_null($job)) {
//This video has been queued for conversion already!
} else {
//Transcoder job created! id: ' . $job['Job']['Id']
}
Instead of using a service in your code you can just to use ProcessVideosCommand for uploading and converting videos. Bundle also has its own type of events.
-tests