mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-10 19:43:16 +00:00
Merge branch 'master' into PHRAS-2375-port41-preview-pdf-on-pdfjs
This commit is contained in:
44
AUTHORS
44
AUTHORS
@@ -1,27 +1,39 @@
|
||||
** Phraseanet is written and maintained by the Phraseanet Developer Team **
|
||||
|
||||
Benoît Burnichon
|
||||
Jean-Yves Gaulier
|
||||
Andrey Kalinovsky
|
||||
Nicolas Legoff
|
||||
Romain Neutron
|
||||
- Jean-Yves Gaulier
|
||||
- Milos M
|
||||
- Mike NG
|
||||
- Xavier Rousset
|
||||
- Aina Sitraka
|
||||
- Filip Vilic
|
||||
|
||||
|
||||
** Proudly Powered by Alchemy **
|
||||
|
||||
Nicolas Amendola
|
||||
Nathanaël Attar
|
||||
Aurélie Bachelet
|
||||
Anthony Cabot
|
||||
Moctar Diouf
|
||||
Jennifer Guérin
|
||||
Nicolas Honoré
|
||||
Nicolas Maillat
|
||||
Guillaume Maubert
|
||||
Jonathan Schneider
|
||||
- Aurélie Bachelet
|
||||
- Laetitia Bianchi
|
||||
- Anthony Cabot
|
||||
- Moctar Diouf
|
||||
- Jennifer Guérin
|
||||
- Félix Noir
|
||||
- Nicolas Maillat
|
||||
- Guillaume Maubert
|
||||
|
||||
|
||||
** They gave some love to Phraseanet **
|
||||
|
||||
Ysoline Gresille
|
||||
- Nicolas Amendola
|
||||
- Nathanaël Attar
|
||||
- Florian Blouet
|
||||
- Benoît Burnichon
|
||||
- Thibaud Fabre
|
||||
- Ysoline Gresille
|
||||
- Nicolas Honoré
|
||||
- Andrey Kalinovsky
|
||||
- Nicolas Legoff
|
||||
- Romain Neutron
|
||||
- Jonathan Schneider
|
||||
|
||||
|
||||
Phraseanet c/o Alchemy
|
||||
30 Place Saint Georges
|
||||
|
@@ -1,3 +1,7 @@
|
||||
#version 4.0
|
||||
- Krzysztof Szulski Security
|
||||
- Ideepix Docker Deploiement
|
||||
|
||||
#version 3.7
|
||||
|
||||
- Pieter Demonie (Dutch localization)
|
||||
|
10
composer.lock
generated
10
composer.lock
generated
@@ -4334,16 +4334,16 @@
|
||||
},
|
||||
{
|
||||
"name": "media-alchemyst/media-alchemyst",
|
||||
"version": "0.5.1",
|
||||
"version": "0.5.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/alchemy-fr/Media-Alchemyst.git",
|
||||
"reference": "b82bb891640cb1ce5d5523235047c34c64194514"
|
||||
"reference": "5d2fe6dd95215804202ecf0466fd9cfaeedd0140"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/alchemy-fr/Media-Alchemyst/zipball/b82bb891640cb1ce5d5523235047c34c64194514",
|
||||
"reference": "b82bb891640cb1ce5d5523235047c34c64194514",
|
||||
"url": "https://api.github.com/repos/alchemy-fr/Media-Alchemyst/zipball/5d2fe6dd95215804202ecf0466fd9cfaeedd0140",
|
||||
"reference": "5d2fe6dd95215804202ecf0466fd9cfaeedd0140",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -4404,7 +4404,7 @@
|
||||
"video",
|
||||
"video processing"
|
||||
],
|
||||
"time": "2016-03-16T13:11:52+00:00"
|
||||
"time": "2019-01-25T12:09:11+00:00"
|
||||
},
|
||||
{
|
||||
"name": "monolog/monolog",
|
||||
|
@@ -145,6 +145,7 @@ class SubdefsController extends Controller
|
||||
$options[Audio::OPTION_AUDIOBITRATE] = $config["audio"]["definitions"][$preset][Audio::OPTION_AUDIOBITRATE];
|
||||
$options[Audio::OPTION_AUDIOSAMPLERATE] = $config["audio"]["definitions"][$preset][Audio::OPTION_AUDIOSAMPLERATE];
|
||||
$options[Audio::OPTION_ACODEC] = $config["audio"]["definitions"][$preset][Audio::OPTION_ACODEC];
|
||||
$options[Audio::OPTION_AUDIOCHANNEL] = $config["audio"]["definitions"][$preset][Audio::OPTION_AUDIOCHANNEL];
|
||||
foreach ($config["audio"]["definitions"][$preset][Subdef::OPTION_DEVICE] as $devices) {
|
||||
$options[Subdef::OPTION_DEVICE][] = $devices;
|
||||
}
|
||||
@@ -211,7 +212,7 @@ class SubdefsController extends Controller
|
||||
{
|
||||
$mapping = [
|
||||
Type::TYPE_IMAGE => [Subdef::TYPE_IMAGE, Subdef::TYPE_PDF],
|
||||
Type::TYPE_VIDEO => [Subdef::TYPE_IMAGE, Subdef::TYPE_VIDEO, Subdef::TYPE_ANIMATION],
|
||||
Type::TYPE_VIDEO => [Subdef::TYPE_IMAGE, Subdef::TYPE_VIDEO, Subdef::TYPE_ANIMATION, Subdef::TYPE_AUDIO],
|
||||
Type::TYPE_AUDIO => [Subdef::TYPE_IMAGE, Subdef::TYPE_AUDIO],
|
||||
Type::TYPE_DOCUMENT => [Subdef::TYPE_IMAGE, Subdef::TYPE_FLEXPAPER, Subdef::TYPE_PDF],
|
||||
Type::TYPE_FLASH => [Subdef::TYPE_IMAGE]
|
||||
@@ -525,29 +526,44 @@ class SubdefsController extends Controller
|
||||
],
|
||||
Subdef::TYPE_AUDIO => [
|
||||
"definitions" => [
|
||||
"Low AAC 96 kbit/s" => [
|
||||
"Low MP3 96 kbit/s" => [
|
||||
Audio::OPTION_AUDIOBITRATE => "100",
|
||||
Audio::OPTION_AUDIOSAMPLERATE => "8000",
|
||||
Audio::OPTION_ACODEC => "libmp3lame",
|
||||
Subdef::OPTION_DEVICE => ["all"]
|
||||
],
|
||||
"Normal AAC 128 kbit/s" => [
|
||||
"Normal MP3 128 kbit/s" => [
|
||||
Audio::OPTION_AUDIOBITRATE => "180",
|
||||
Audio::OPTION_AUDIOSAMPLERATE => "44100",
|
||||
Audio::OPTION_ACODEC => "libmp3lame",
|
||||
Subdef::OPTION_DEVICE => ["all"]
|
||||
],
|
||||
"High AAC 320 kbit/s" => [
|
||||
"High MP3 320 kbit/s" => [
|
||||
Audio::OPTION_AUDIOBITRATE => "230",
|
||||
Audio::OPTION_AUDIOSAMPLERATE => "50000",
|
||||
Audio::OPTION_ACODEC => "libmp3lame",
|
||||
Subdef::OPTION_DEVICE => ["all"]
|
||||
],
|
||||
"Wave Mono 16 kHz" => [
|
||||
Audio::OPTION_AUDIOBITRATE => "256",
|
||||
Audio::OPTION_AUDIOSAMPLERATE => "16000",
|
||||
Audio::OPTION_ACODEC => "pcm_s16le",
|
||||
Audio::OPTION_AUDIOCHANNEL => "mono",
|
||||
Subdef::OPTION_DEVICE => ["all"]
|
||||
],
|
||||
"Wave Mono 8 kHz" => [
|
||||
Audio::OPTION_AUDIOBITRATE => "128",
|
||||
Audio::OPTION_AUDIOSAMPLERATE => "8000",
|
||||
Audio::OPTION_ACODEC => "pcm_s16le",
|
||||
Audio::OPTION_AUDIOCHANNEL => "mono",
|
||||
Subdef::OPTION_DEVICE => ["all"]
|
||||
],
|
||||
],
|
||||
"form" => [
|
||||
Audio::OPTION_AUDIOBITRATE => "slide",
|
||||
Audio::OPTION_AUDIOSAMPLERATE => "select",
|
||||
Audio::OPTION_ACODEC => "select",
|
||||
Audio::OPTION_AUDIOCHANNEL => "select",
|
||||
Subdef::OPTION_DEVICE => "checkbox",
|
||||
],
|
||||
],
|
||||
|
@@ -201,6 +201,8 @@ class FilesystemService
|
||||
return 'ogg';
|
||||
case 'libmp3lame':
|
||||
return 'mp3';
|
||||
case 'pcm_s16le':
|
||||
return 'wav';
|
||||
}
|
||||
|
||||
return null;
|
||||
|
@@ -19,6 +19,7 @@ class Audio extends Provider
|
||||
const OPTION_THREADS = 'threads';
|
||||
const OPTION_ACODEC = 'acodec';
|
||||
const OPTION_AUDIOSAMPLERATE = 'audiosamplerate';
|
||||
const OPTION_AUDIOCHANNEL = 'audiochannel';
|
||||
|
||||
public function __construct(TranslatorInterface $translator)
|
||||
{
|
||||
@@ -29,9 +30,12 @@ class Audio extends Provider
|
||||
47250, 48000, 50000, 50400, 88200, 96000
|
||||
];
|
||||
|
||||
$audioChannel = ['mono', 'stereo'];
|
||||
|
||||
$this->registerOption(new OptionType\Range($this->translator->trans('Audio Birate'), self::OPTION_AUDIOBITRATE, 32, 320, 128, 32));
|
||||
$this->registerOption(new OptionType\Enum($this->translator->trans('AudioSamplerate'), self::OPTION_AUDIOSAMPLERATE, $AVaudiosamplerate));
|
||||
$this->registerOption(new OptionType\Enum($this->translator->trans('Audio Codec'), self::OPTION_ACODEC, ['libmp3lame', 'flac'], 'libmp3lame'));
|
||||
$this->registerOption(new OptionType\Enum($this->translator->trans('Audio Codec'), self::OPTION_ACODEC, ['libmp3lame', 'flac', 'pcm_s16le'], 'libmp3lame'));
|
||||
$this->registerOption(new OptionType\Enum($this->translator->trans('Audio channel'), self::OPTION_AUDIOCHANNEL, $audioChannel));
|
||||
}
|
||||
|
||||
public function getType()
|
||||
@@ -53,7 +57,21 @@ class Audio extends Provider
|
||||
$this->spec->setAudioCodec($this->getOption(self::OPTION_ACODEC)->getValue());
|
||||
$this->spec->setAudioSampleRate($this->getOption(self::OPTION_AUDIOSAMPLERATE)->getValue());
|
||||
$this->spec->setAudioKiloBitrate($this->getOption(self::OPTION_AUDIOBITRATE)->getValue());
|
||||
$this->spec->setAudioChannels($this->getChannelNumber($this->getOption(self::OPTION_AUDIOCHANNEL)->getValue()));
|
||||
|
||||
return $this->spec;
|
||||
}
|
||||
|
||||
private function getChannelNumber($audioChannel)
|
||||
{
|
||||
switch($audioChannel)
|
||||
{
|
||||
case 'mono':
|
||||
return 1;
|
||||
case 'stereo':
|
||||
return 2;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -44,7 +44,7 @@ class databox_subdef
|
||||
SubdefType::TYPE_DOCUMENT => [SubdefSpecs::TYPE_IMAGE, SubdefSpecs::TYPE_FLEXPAPER, SubdefSpecs::TYPE_PDF],
|
||||
SubdefType::TYPE_FLASH => [SubdefSpecs::TYPE_IMAGE],
|
||||
SubdefType::TYPE_IMAGE => [SubdefSpecs::TYPE_IMAGE, SubdefSpecs::TYPE_PDF],
|
||||
SubdefType::TYPE_VIDEO => [SubdefSpecs::TYPE_IMAGE, SubdefSpecs::TYPE_VIDEO, SubdefSpecs::TYPE_ANIMATION],
|
||||
SubdefType::TYPE_VIDEO => [SubdefSpecs::TYPE_IMAGE, SubdefSpecs::TYPE_VIDEO, SubdefSpecs::TYPE_ANIMATION, SubdefSpecs::TYPE_AUDIO],
|
||||
SubdefType::TYPE_UNKNOWN => [SubdefSpecs::TYPE_IMAGE],
|
||||
];
|
||||
const CLASS_THUMBNAIL = 'thumbnail';
|
||||
@@ -156,6 +156,10 @@ class databox_subdef
|
||||
if ($sd->audiosamplerate) {
|
||||
$audio->setOptionValue(Audio::OPTION_AUDIOSAMPLERATE, (int) $sd->audiosamplerate);
|
||||
}
|
||||
if ($sd->audiochannel) {
|
||||
$audio->setOptionValue(Audio::OPTION_AUDIOCHANNEL, (string) $sd->audiochannel);
|
||||
}
|
||||
|
||||
return $audio;
|
||||
}
|
||||
/**
|
||||
|
@@ -148,7 +148,7 @@
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview" downloadable="false">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>flexpaper</mediatype>
|
||||
<mediatype>pdf</mediatype>
|
||||
<writeDatas>no</writeDatas>
|
||||
<devices>screen</devices>
|
||||
<label lang="fr">Prévisualisation</label>
|
||||
|
@@ -148,7 +148,7 @@
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview" downloadable="false">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>flexpaper</mediatype>
|
||||
<mediatype>pdf</mediatype>
|
||||
<writeDatas>no</writeDatas>
|
||||
<devices>screen</devices>
|
||||
<label lang="fr">Prévisualisation</label>
|
||||
|
@@ -148,7 +148,7 @@
|
||||
</subdef>
|
||||
<subdef class="preview" name="preview" downloadable="false">
|
||||
<path>{{datapathnoweb}}{{basename}}/subdefs</path>
|
||||
<mediatype>flexpaper</mediatype>
|
||||
<mediatype>pdf</mediatype>
|
||||
<writeDatas>no</writeDatas>
|
||||
<devices>screen</devices>
|
||||
<label lang="fr">Prévisualisation</label>
|
||||
|
Reference in New Issue
Block a user