
Recherche avancée
Médias (1)
-
SPIP - plugins - embed code - Exemple
2 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
Autres articles (100)
-
MediaSPIP 0.1 Beta version
25 avril 2011, parMediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
The zip file provided here only contains the sources of MediaSPIP in its standalone version.
To get a working installation, you must manually install all-software dependencies on the server.
If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...) -
Multilang : améliorer l’interface pour les blocs multilingues
18 février 2011, parMultilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela. -
Websites made with MediaSPIP
2 mai 2011, parThis page lists some websites based on MediaSPIP.
Sur d’autres sites (8346)
-
Evolution #4271 (Nouveau) : valider_url_distante => pouvoir déclarer des domaines distants et pas ...
21 janvier 2019, par - EquipementBonjour,
La fonction valider_url_distante permet de déclarer des hosts distants :
- <span class="CodeRay"><span class="local-variable">$known_hosts</span> = pipeline(<span class="string"><span class="delimiter">'</span><span class="content">declarer_hosts_distants</span><span class="delimiter">'</span></span>, <span class="local-variable">$known_hosts</span>);
- </span>
C’est très bien, mais avec plusieurs centaines de hosts à déclarer (dont la liste varie dans le temps), cela devient compliqué à gérer.
Serait-il possible d’avoir, en plus, la possibilité de déclarer des domaines distants ?
Une première piste serait de pouvoir déclarer .example.com dans le pipeline pour inclure tous les *.example.com au lieu des les énumérer un par un.
Une seconde piste consisterait à s’inspirer de la function need_proxy (via une constante avec la même syntaxe que pour le http_noproxy) :
// Pour mémoire code actuel à conserver ...
- <span class="CodeRay"> <span class="local-variable">$is_known_host</span> = <span class="predefined-constant">false</span>;
- <span class="keyword">foreach</span> (<span class="local-variable">$known_hosts</span> <span class="keyword">as</span> <span class="local-variable">$known_host</span>) {
- <span class="local-variable">$parse_known</span> = <span class="predefined">parse_url</span>(<span class="local-variable">$known_host</span>);
- <span class="keyword">if</span> (<span class="local-variable">$parse_known</span>
- <span class="keyword">and</span> <span class="predefined">strtolower</span>(<span class="local-variable">$parse_known</span>[<span class="string"><span class="delimiter">'</span><span class="content">host</span><span class="delimiter">'</span></span>]) === <span class="predefined">strtolower</span>(<span class="local-variable">$parsed_url</span>[<span class="string"><span class="delimiter">'</span><span class="content">host</span><span class="delimiter">'</span></span>])) {
- <span class="local-variable">$is_known_host</span> = <span class="predefined-constant">true</span>;
- <span class="keyword">break</span>;
- }
- }
- </span>
// ... que l’on pourrait faire suivre de ce code (complètement inspiré de function need_proxy) :
- <span class="CodeRay"> <span class="keyword">if</span> (!<span class="local-variable">$is_known_host</span>) {
- <span class="local-variable">$known_domaines</span> = _DECLARER_DOMAINES_DISTANTS;
- <span class="local-variable">$known_domaines</span> = <span class="predefined">str_replace</span>(<span class="string"><span class="delimiter">"</span><span class="char">\n</span><span class="delimiter">"</span></span>, <span class="string"><span class="delimiter">"</span><span class="content"> </span><span class="delimiter">"</span></span>, <span class="local-variable">$known_domaines</span>);
- <span class="local-variable">$known_domaines</span> = <span class="predefined">str_replace</span>(<span class="string"><span class="delimiter">"</span><span class="char">\r</span><span class="delimiter">"</span></span>, <span class="string"><span class="delimiter">"</span><span class="content"> </span><span class="delimiter">"</span></span>, <span class="local-variable">$known_domaines</span>);
- <span class="local-variable">$known_domaines</span> = <span class="string"><span class="delimiter">"</span><span class="content"> </span><span class="local-variable">$known_domaines</span><span class="content"> </span><span class="delimiter">"</span></span>;
- <span class="local-variable">$domain</span> = <span class="predefined">strtolower</span>(<span class="local-variable">$parsed_url</span>[<span class="string"><span class="delimiter">'</span><span class="content">host</span><span class="delimiter">'</span></span>]);
- <span class="keyword">if</span> (<span class="predefined">strpos</span>(<span class="local-variable">$known_domaines</span>, <span class="string"><span class="delimiter">"</span><span class="content"> </span><span class="local-variable">$domain</span><span class="content"> </span><span class="delimiter">"</span></span>) !== <span class="predefined-constant">false</span>){
- <span class="local-variable">$is_known_host</span> = <span class="predefined-constant">true</span>;
- }
- <span class="keyword">while</span> (<span class="predefined">strpos</span>(<span class="local-variable">$domain</span>, <span class="string"><span class="delimiter">'</span><span class="content">.</span><span class="delimiter">'</span></span>) !== <span class="predefined-constant">false</span>) {
- <span class="local-variable">$domain</span> = <span class="predefined">explode</span>(<span class="string"><span class="delimiter">'</span><span class="content">.</span><span class="delimiter">'</span></span>, <span class="local-variable">$domain</span>);
- <span class="predefined">array_shift</span>(<span class="local-variable">$domain</span>);
- <span class="local-variable">$domain</span> = <span class="predefined">implode</span>(<span class="string"><span class="delimiter">'</span><span class="content">.</span><span class="delimiter">'</span></span>, <span class="local-variable">$domain</span>);
- <span class="keyword">if</span> (<span class="predefined">strpos</span>(<span class="local-variable">$known_domaines</span>, <span class="string"><span class="delimiter">"</span><span class="content"> .</span><span class="local-variable">$domain</span><span class="content"> </span><span class="delimiter">"</span></span>) !== <span class="predefined-constant">false</span>) {
- <span class="local-variable">$is_known_host</span> = <span class="predefined-constant">true</span>;
- }
- }
- }
- </span>
Cordialement
Equipement -
Merge commit ’67351924fa91dea4339109100a4c0689f006581f’
30 mars 2017, par Clément BœschMerge commit ’67351924fa91dea4339109100a4c0689f006581f’
* commit ’67351924fa91dea4339109100a4c0689f006581f’ :
Drop unreachable break and return statementsMerged-by : Clément Bœsch <cboesch@gopro.com>
-
Is it possible to merge multiple FFMPEG commands (cuts, slow down, watermark) into one in order to increase performance ?
14 novembre 2022, par Nectarie PFI wrote a small piece of software in PHP, using FFMPEG commands via shell exec. The final purpose is to take a 7 seconds MP4 file from a GoPro and transform it in order to achieve a sort of boomerang effect :


- 

- crop the video to 1080 width/height




ffmpeg -i ./files/video_small/$latestVideo -filter:v \"crop=1080:1080:420:0\" ./files/video_small/outcrop_$cod.mp4 2>&1");



- 

- first second should run normally




ffmpeg.exe -t 1 -i ./files/video_small/outcrop_$cod.mp4 ./files/video_small/out1_$cod.mp4 2>&1");



- 

- the next two seconds will run at slow motion with a 2x factor




ffmpeg.exe -ss 00:00:01 -t 2 -i ./files/video_small/outcrop_$cod.mp4 -filter_complex \"[0:v]setpts=2*PTS[v]\" -map \"[v]\" ./files/video_small/out2_$cod.mp4 2>&1");



- 

- the next second will speed up at 4x factor




ffmpeg.exe -ss 00:00:03 -t 1 -i ./files/video_small/outcrop_$cod.mp4 -filter_complex \"[0:v]setpts=0.25*PTS[v]\" -map \"[v]\" ./files/video_small/out3_$cod.mp4 2>&1");



- 

- the next 2 seconds again slow motion




ffmpeg.exe -ss 00:00:04 -t 2 -i ./files/video_small/outcrop_$cod.mp4 -filter_complex \"[0:v]setpts=2*PTS[v]\" -map \"[v]\" ./files/video_small/out4_$cod.mp4 2>&1");



- 

- final second again normal speed




ffmpeg.exe -ss 00:00:06 -i ./files/video_small/outcrop_$cod.mp4 ./files/video_small/out5_$cod.mp4 2>&1");



- 

- concatenate the above parts to achieve the modified clip




ffmpeg.exe -f concat -i ./files/video_small/files_$cod.txt -c copy ./files/video_small/output1_$cod.mp4 2>&1");



- 

- then append the resulting clip in reverse




ffmpeg -i ./files/video_small/output1_$cod.mp4 -filter_complex \"[0:v]reverse,fifo[r];[0:v][r] concat=n=2:v=1 [v]\" -map \"[v]\" ./files/video_small/output2_$cod.mp4 2>&1");



- 

- add watermark




ffmpeg -i ./files/video_small/output2_$cod.mp4 -i ./files/watermark-video1080.png -filter_complex \"[0:v][1:v]overlay=(W-w)/2:10[outv]\" -map [outv] -c:v libx264 -crf 22 -preset veryfast ./files/video_small/output3_$cod.mp4 2>&1");



- 

- add audio (we can discard the original audio in any of the above steps)




ffmpeg -i ./files/video_small/output3_$cod.mp4 -i ./files/video_small/sound-hip-hop.mp3 -map 0 -map 1:a -c:v copy -shortest ./files/video_small/output_final_$latestVideo 2>&1");



Right now it runs ok, but I have a problem with performance, the whole process lasts about 50 seconds on my 8th gen i7.


I am very new to the capabilities of ffmpeg and I was wondering if any of the below commands can be optimized or if any of the steps can be merged into one, as I can see the syntax is quite powerful.


Thanks !


I was expecting this to run a little bit faster, ideally half the time it takes right now.
As far as I have observed, the longest part is appending the resulting clip in reverse, perhaps I am adding something too heavy and unnecessary in the reverse filter.