
Recherche avancée
Médias (1)
-
Bug de détection d’ogg
22 mars 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Video
Autres articles (35)
-
Support audio et vidéo HTML5
10 avril 2011MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...) -
Taille des images et des logos définissables
9 février 2011, parDans beaucoup d’endroits du site, logos et images sont redimensionnées pour correspondre aux emplacements définis par les thèmes. L’ensemble des ces tailles pouvant changer d’un thème à un autre peuvent être définies directement dans le thème et éviter ainsi à l’utilisateur de devoir les configurer manuellement après avoir changé l’apparence de son site.
Ces tailles d’images sont également disponibles dans la configuration spécifique de MediaSPIP Core. La taille maximale du logo du site en pixels, on permet (...) -
Gestion de la ferme
2 mars 2010, parLa ferme est gérée dans son ensemble par des "super admins".
Certains réglages peuvent être fais afin de réguler les besoins des différents canaux.
Dans un premier temps il utilise le plugin "Gestion de mutualisation"
Sur d’autres sites (5469)
-
how to improve edge interpolation of rotation in moviepy
15 juillet 2021, par OneWorldI tried changing the interpolation method of rotation from 'bilinear' to 'bicubic' in the below, but it didn't seem to improve the edge interpolation. (it still looks a little bit jagged)


I was wondering what I need to do to improve this ?


import moviepy.editor as mped
import sys
import numpy as np

bgrd_width = 200
bgrd_height = 200
sunset = mped.ImageClip("sunset200x100.jpg", duration=1).set_position((1, 1))
bgrd = mped.ColorClip(size=(bgrd_width, bgrd_height), color=np.array([200, 200, 200]).astype(np.uint8), duration=3).set_position((0, 0))

angle = 56
interpolation = 'bicubic'

rotated_sunset = sunset.add_mask().rotate(angle, unit='deg', expand=True, resample=interpolation).set_duration(3)
stacked_clips = mped.CompositeVideoClip([bgrd, rotated_sunset], size=[bgrd_width, bgrd_height])

stacked_clips.write_videofile(f'sunset_rotated_{angle}_{interpolation}.mp4', fps=5)




See attached comparison image of bilinear and bicubic interpolation.



Adding to this, I have seen now that the inside of the image does improve in quality with cubic, compared with nearest neighbour.




The reason for the smooth inside, and jagged asset edge is because there's no pixel to sample from outside the boundary of the image, when interpolation is applied.


I wrote some moviepy code, which adds a black margin (which actually turns transparent) and mask and then rotates. With bicubic interpolation it creates course, black lines, with a strange blend. However, with bilinear interpolation, the lines are much less apparent.


# Add margin, add mask, rotate with interpolation of transparent 2 pixel border.
original_clip = mped.ImageClip("sunset200x100.jpg")
opaque_color = np.array([255, 255, 255]).astype(np.uint8)
margin_color = np.array([0, 0, 0]).astype(np.uint8)
margin_added_clip = original_clip.margin(2, color=margin_color) # adds 2 pixel black border.
color_mask = mped.ColorClip(size=(original_clip.size), color=opaque_color).margin(2, color=margin_color)
mask = color_mask.to_mask() # converts to grayscale with values between 0 and 1
masked_clip = margin_added_clip.set_mask(mask) # adds the float mask to the clip
rotated_sunset = masked_clip.rotate(56, unit='deg', expand=True, resample="bicubic")
rotated_sunset.save_frame("sunset_rotated_56_degrees_moviepy_with_2px_mask.png") # uses imageio to save the frame.





However,


If you switch from bicubic to bilinear, it looks a lot better :-




-
Is there a possibility to rotate a dynamically added text using fluent-ffmpeg ?
6 mai 2019, par Bedrule PaulI’m trying to rotate a dynamically added text on a video using fluent-ffmpeg with node. I found a lot of options on their documentation regarding font size, font color, position, but nothing about text rotation. Is there any possibility to rotate only text ?
input: 'output_part1.mp4',
filters: [{
filter: 'drawtext',
options: {
text: 'HY',
fontfile: 'Canting_Regular_DEMO.ttf',
x: 'main_w / 2 - text_w / 2',
y: '475',
fontcolor: defaultColor,
fontsize: 142,
enable: 'between(t, 0 , 5.75)',
//ex: angle: '45'
}
}] -
Evolution #4471 (Nouveau) : singulier_ou_pluriel pour l’arabe
13 avril 2020, par George KandalaftVoici le filtre singulier_ou_pluriel adapté à l’arabe (qui a plusieurs formes de pluriels suivant le nombre d’objets) :
- <span class="CodeRay"><span class="comment">/**
- * Afficher un message "un truc"/("deux trucs" pour l'arabe)/"N trucs"
- * Les items sont à indiquer comme pour la fonction _T() sous la forme :
- * "module:chaine"
- *
- * @param int $nb : le nombre
- * @param string $chaine_un : l'item de langue si $nb vaut un (ou $nb > 10 pour l'arabe)
- * @param string $chaine_plusieurs : l'item de lanque si $nb > 1 ($nb est compris entre 3 et 10 pour l'arabe)
- * @param string $var : La variable à remplacer par $nb dans l'item de langue (facultatif, défaut "nb")
- * @param array $vars : Les autres variables nécessaires aux chaines de langues (facultatif)
- * @return string : la chaine de langue finale en utilisant la fonction _T()
- */</span>
- <span class="keyword">function</span> <span class="function">ar_singulier_ou_pluriel</span>(<span class="local-variable">$nb</span>, <span class="local-variable">$chaine_un</span>, <span class="local-variable">$chaine_plusieurs</span>, <span class="local-variable">$var</span> = <span class="string"><span class="delimiter">'</span><span class="content">nb</span><span class="delimiter">'</span></span>, <span class="local-variable">$vars</span> = <span class="predefined">array</span>()) {
- <span class="keyword">if</span> (!<span class="local-variable">$nb</span> = <span class="predefined">intval</span>(<span class="local-variable">$nb</span>)) {
- <span class="keyword">return</span> <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>;
- }
- <span class="keyword">if</span> (!<span class="predefined">is_array</span>(<span class="local-variable">$vars</span>)) {
- <span class="keyword">return</span> <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>;
- }
- <span class="local-variable">$vars</span>[<span class="local-variable">$var</span>] = <span class="local-variable">$nb</span>;
- <span class="keyword">if</span> (<span class="predefined">$GLOBALS</span>[<span class="string"><span class="delimiter">'</span><span class="content">spip_lang</span><span class="delimiter">'</span></span>] == <span class="string"><span class="delimiter">'</span><span class="content">ar</span><span class="delimiter">'</span></span>) {
- <span class="local-variable">$fem</span> = <span class="predefined">substr</span>(<span class="local-variable">$chaine_un</span>, -<span class="integer">2</span>);
- <span class="keyword">switch</span> (<span class="predefined-constant">true</span>) {
- <span class="keyword">case</span> (<span class="local-variable">$nb</span> == <span class="integer">1</span>):
- <span class="keyword">if</span> (<span class="local-variable">$fem</span> == <span class="string"><span class="delimiter">'</span><span class="content">ة</span><span class="delimiter">'</span></span>) {
- <span class="local-variable">$chaine_un</span> = <span class="local-variable">$chaine_un</span> . <span class="string"><span class="delimiter">'</span><span class="content"> واحدة</span><span class="delimiter">'</span></span>;
- } <span class="keyword">else</span> {
- <span class="local-variable">$chaine_un</span> = <span class="local-variable">$chaine_un</span> . <span class="string"><span class="delimiter">'</span><span class="content"> واحد</span><span class="delimiter">'</span></span>;
- }
- <span class="keyword">return</span> _T(<span class="local-variable">$chaine_un</span>, <span class="local-variable">$vars</span>);
- <span class="keyword">break</span>;
- <span class="keyword">case</span> (<span class="local-variable">$nb</span> == <span class="integer">2</span>):
- <span class="keyword">if</span> (<span class="local-variable">$fem</span> == <span class="string"><span class="delimiter">'</span><span class="content">ة</span><span class="delimiter">'</span></span>) {
- <span class="local-variable">$chaine_deux</span> = <span class="predefined">rtrim</span>(<span class="local-variable">$chaine_un</span>, <span class="local-variable">$fem</span>) . <span class="string"><span class="delimiter">'</span><span class="content">تان</span><span class="delimiter">'</span></span>;
- } <span class="keyword">else</span> {
- <span class="local-variable">$chaine_deux</span> = <span class="local-variable">$chaine_un</span> . <span class="string"><span class="delimiter">'</span><span class="content">ان</span><span class="delimiter">'</span></span>;
- }
- <span class="keyword">return</span> _T(<span class="local-variable">$chaine_deux</span>, <span class="local-variable">$vars</span>);
- <span class="keyword">break</span>;
- <span class="keyword">case</span> (<span class="local-variable">$nb</span> ><span class="integer">2</span> && <span class="local-variable">$nb</span> < <span class="integer">11</span>):
- <span class="keyword">return</span> _T(<span class="local-variable">$chaine_plusieurs</span>, <span class="local-variable">$vars</span>);
- <span class="keyword">break</span>;
- <span class="keyword">default</span>:
- <span class="local-variable">$chaine_un</span> = <span class="local-variable">$nb</span> . <span class="string"><span class="delimiter">'</span><span class="content"> </span><span class="delimiter">'</span></span> . <span class="local-variable">$chaine_un</span>;
- <span class="keyword">return</span> _T(<span class="local-variable">$chaine_un</span>, <span class="local-variable">$vars</span>);
- }
- } <span class="keyword">else</span> {
- <span class="keyword">if</span> (<span class="local-variable">$nb</span> > <span class="integer">1</span>) {
- <span class="keyword">return</span> _T(<span class="local-variable">$chaine_plusieurs</span>, <span class="local-variable">$vars</span>);
- } <span class="keyword">else</span> {
- <span class="keyword">return</span> _T(<span class="local-variable">$chaine_un</span>, <span class="local-variable">$vars</span>);
- }
- }
- }
- </span>