
Recherche avancée
Médias (1)
-
La conservation du net art au musée. Les stratégies à l’œuvre
26 mai 2011
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (101)
-
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. -
Le profil des utilisateurs
12 avril 2011, parChaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...)
Sur d’autres sites (10321)
-
avcodec/videotoolbox : Fix undefined symbol with minimal configuration
4 janvier 2022, par Limin Wangavcodec/videotoolbox : Fix undefined symbol with minimal configuration
Please reproduced with the following minimal configure command :
./configure —enable-shared —disable-all —enable-avcodec —enable-decoder=h264 —enable-hwaccel=h264_videotoolboxYou'll get below error :
Undefined symbols for architecture x86_64 :
"_ff_videotoolbox_vpcc_extradata_create", referenced from :
_videotoolbox_start in videotoolbox.o
ld : symbol(s) not found for architecture x86_64
clang : error : linker command failed with exit code 1 (use -v to see invocation)Reported-by : Cameron Gutman <aicommander@gmail.com>
Tested-by : Cameron Gutman <aicommander@gmail.com>
Signed-off-by : Limin Wang <lance.lmwang@gmail.com> -
avcodec/aaccoder : Add minimal bias in search_for_ms()
31 mai 2021, par Michael Niedermayer -
moviepy black border around png when compositing into an MP4
27 août 2022, par OneWorldcompositing a png into an MP4 video creates a black border around the edge.


This is using moviepy 1.0.0


Code below reproduces the MP4 with the attached red text png.




import numpy as np
import moviepy.editor as mped
def composite_txtpng_on_colour():
 bg_color = mped.ColorClip(size=[400, 300], color=np.array([0, 255, 0]).astype(np.uint8),
 duration=2).set_position((0, 0))
 text_png_postition = [5, 5]
 text_png = mped.ImageClip("./txtpng.png", duration=3).set_position((text_png_postition))

 canvas_size = bg_color.size
 stacked_clips = mped.CompositeVideoClip([bg_color, text_png], size=canvas_size).set_duration(2)
 stacked_clips.write_videofile('text_with_black_border_video.mp4', fps=24)

composite_txtpng_on_colour()



The result is an MP4 that can be played in VLC player. A screenshot of the black edge can be seen below :-




Any suggestions to remove the black borders would be much appreciated.


Update : It looks like moviepy does a blit instead of alpha compositing.


def blit(im1, im2, pos=None, mask=None, ismask=False):
 """ Blit an image over another. Blits ``im1`` on ``im2`` as position ``pos=(x,y)``, using the
 ``mask`` if provided. If ``im1`` and ``im2`` are mask pictures
 (2D float arrays) then ``ismask`` must be ``True``.
 """
 if pos is None:
 pos = [0, 0]

 # xp1,yp1,xp2,yp2 = blit area on im2
 # x1,y1,x2,y2 = area of im1 to blit on im2
 xp, yp = pos
 x1 = max(0, -xp)
 y1 = max(0, -yp)
 h1, w1 = im1.shape[:2]
 h2, w2 = im2.shape[:2]
 xp2 = min(w2, xp + w1)
 yp2 = min(h2, yp + h1)
 x2 = min(w1, w2 - xp)
 y2 = min(h1, h2 - yp)
 xp1 = max(0, xp)
 yp1 = max(0, yp)

 if (xp1 >= xp2) or (yp1 >= yp2):
 return im2

 blitted = im1[y1:y2, x1:x2]

 new_im2 = +im2

 if mask is None:
 new_im2[yp1:yp2, xp1:xp2] = blitted
 else:
 mask = mask[y1:y2, x1:x2]
 if len(im1.shape) == 3:
 mask = np.dstack(3 * [mask])
 blit_region = new_im2[yp1:yp2, xp1:xp2]
 new_im2[yp1:yp2, xp1:xp2] = (1.0 * mask * blitted + (1.0 - mask) * blit_region)
 
 return new_im2.astype('uint8') if (not ismask) else new_im2



and so, Rotem is right.


new_im2[yp1:yp2, xp1:xp2] = (1.0 * mask * blitted + (1.0 - mask) * blit_region)



is


(alpha * img_rgb + (1.0 - alpha) * bg)



and this is how moviepy composites. And this is why we see black at the edges.