Recherche avancée

Médias (1)

Mot : - Tags -/publier

Autres articles (21)

  • Keeping control of your media in your hands

    13 avril 2011, par

    The vocabulary used on this site and around MediaSPIP in general, aims to avoid reference to Web 2.0 and the companies that profit from media-sharing.
    While using MediaSPIP, you are invited to avoid using words like "Brand", "Cloud" and "Market".
    MediaSPIP is designed to facilitate the sharing of creative media online, while allowing authors to retain complete control of their work.
    MediaSPIP aims to be accessible to as many people as possible and development is based on expanding the (...)

  • Submit bugs and patches

    13 avril 2011

    Unfortunately a software is never perfect.
    If you think you have found a bug, report it using our ticket system. Please to help us to fix it by providing the following information : the browser you are using, including the exact version as precise an explanation as possible of the problem if possible, the steps taken resulting in the problem a link to the site / page in question
    If you think you have solved the bug, fill in a ticket and attach to it a corrective patch.
    You may also (...)

  • Contribute to a better visual interface

    13 avril 2011

    MediaSPIP is based on a system of themes and templates. Templates define the placement of information on the page, and can be adapted to a wide range of uses. Themes define the overall graphic appearance of the site.
    Anyone can submit a new graphic theme or template and make it available to the MediaSPIP community.

Sur d’autres sites (2911)

  • Difficulties saving an animation (matplotlib)

    14 avril 2020, par Ben C.

    I have a simple animation that I want to save. I followed the example : https://matplotlib.org/examples/animation/basic_example_writer.html

    



    But I get the following error : RuntimeError : Requested MovieWriter (ffmpeg) not available

    



    I installed ffmpeg and checked via ffmpeg -version that it really is installed and the path correct.

    



    Here is my code :

    



    import numpy as np
import matplotlib.animation as animation
import matplotlib.pyplot as plt

# Set up formatting for the movie files
Writer = animation.writers['ffmpeg']
writer = Writer(fps=15, metadata=dict(artist='Me'), bitrate=1800)

fig, ax = plt.subplots()

x = np.random.uniform(0,1)
y = np.random.uniform(0,1)


scat = ax.scatter(x,y, color= 'blue')
circle = plt.Circle((x,y), radius=0.1, color='blue', fill=False, lw=0.5)
ax.add_patch(circle)

def init():
    scat = ax.scatter(x, y, color = 'blue')
    circle = plt.Circle((x,y), radius=0.1, color='blue', fill=False, lw=0.5)

def animate(i):
    random = np.random.uniform(0,1)
    if random < 0.5:
        scat.set_color('red')
        circle.set_edgecolor('blue')
    else:
        scat.set_color('blue')
        circle.set_edgecolor('red')
    return circle, scat,


ani = animation.FuncAnimation(fig, animate, init_func=init(), interval=1000, blit=True)
ani.save('test.mp4', writer=writer)


    



    None of the proposed solution in RuntimeError : No MovieWriters available in Matplotlib animation worked for me. Any ideas ?

    



    Edit : I am using Windows (10)

    


  • Saving scatterplot animations with matplotlib produces blank video file

    1er avril 2013, par user2175850

    I am having a very similar problem to this question

    but the suggested solution doesn't work for me.

    I have set up an animated scatter plot using the matplotlib animation module. This works fine when it is displaying live. I would like to save it to an avi file or something similar. The code I have written to do this does not error out but the video it produces just shows a blank set of axes or a black screen. I've done several checks and the data is being run and figure updated it's just not getting saved to video...

    I tried removing "animated=True" and "blit=True" as suggested in this question but that did not fix the problem.

    I have placed the relevant code below but can provide more if necessary. Could anyone suggest what I should do to get this working ?

    def initAnimation(self):
           rs, cfgs = next(self.jumpingDataStreamIterator)    
           #self.scat = self.axAnimation.scatter(rs[0], rs[1], c=cfgs[0], marker='o')
           self.scat = self.axAnimation.scatter(rs[0], rs[1], c=cfgs[0], marker='o', animated=True)
           return self.scat,


    def updateAnimation(self, i):
       """Update the scatter plot."""
       rs, cfgs = next(self.jumpingDataStreamIterator)
       # Set x and y data...
       self.scat.set_offsets(rs[:2,].transpose())
       #self.scat = self.axAnimation.scatter(rs[0], rs[1], c=cfgs[0], animated=True)
       # Set sizes...
       #self.scat._sizes = 300 * abs(data[2])**1.5 + 100
       # Set colors..
       #self.scat.set_array(cfgs[0])
       # We need to return the updated artist for FuncAnimation to draw..
       # Note that it expects a sequence of artists, thus the trailing comma.
       matplotlib.pyplot.draw()
       return self.scat,

    def animate2d(self, steps=None, showEvery=50, size = 25):
       self.figAnimation, self.axAnimation = matplotlib.pyplot.subplots()
       self.axAnimation.set_aspect("equal")
       self.axAnimation.axis([-size, size, -size, size])
       self.jumpingDataStreamIterator = self.jumpingDataStream(showEvery)

       self.univeseAnimation = matplotlib.animation.FuncAnimation(self.figAnimation,
                               self.updateAnimation, init_func=self.initAnimation,
                               blit=True)
       matplotlib.pyplot.show()

    def animate2dVideo(self,fileName=None, steps=10000, showEvery=50, size=25):
       self.figAnimation, self.axAnimation = matplotlib.pyplot.subplots()
       self.axAnimation.set_aspect("equal")
       self.axAnimation.axis([-size, size, -size, size])
       self.Writer = matplotlib.animation.writers['ffmpeg']
       self.writer = self.Writer(fps=1, metadata=dict(artist='Universe Simulation'))
       self.jumpingDataStreamIterator = self.jumpingDataStream(showEvery)

       self.universeAnimation = matplotlib.animation.FuncAnimation(self.figAnimation,
                               self.updateAnimation, scipy.arange(1, 25), init_func=self.initAnimation)

       self.universeAnimation.save('C:/universeAnimation.mp4', writer = self.writer)
  • Windows batch - unable to assign a variable within an iterative for loop

    17 janvier 2024, par user23254772

    I am using ffprobe to get the codec_name of subtitles in media files. But when I try to get the codec extension it fails. What am I doing wrong ?

    


    I have edited this post to address the comments and include the complete batch file

    


    Re : ns.txt - this command outputs the stream number of the subtitles :

    


    C:\ffmpeg\bin\ffprobe -loglevel error -select_streams s -show_entries stream=index:stream_tags=language -of csv=p=0 -i "%~dpnx1">ns.txt


    


    and the output in the txt file is :

    


    2
3


    


    Now I need to count the number of lines in this text file which will tell me how many subtitles my media file has :

    


    set "cmd=findstr /R /N "^^" ns.txt | find /C ":""
for /f %%a in ('!cmd!') do set nums=%%a
set /A nums=%nums%-1


    


    In this case nums = 2 but in ffprobe the first subtitle is s:0, so I subtract 1 from nums

    


    My iterative loop is :

    


    FOR %%i in (1,1,%nums%) DO (
C:\ffmpeg\bin\ffprobe.exe -v quiet -select_streams s:%%i -show_entries stream=%arg% -of default=noprint_wrappers=1:nokey=1 -i "%~dpnx1" >sub.txt
set /p codecs=code>

    


    Which puts the codec name in sub.txt and I create the variable codecs to store this value.

    


    Then I need to determine the appropriate container [extension] for the subtitle - here I changed my code from what I posted earlier :

    


    if !codecs! == mov_text set codecs1=srt
if !codecs! == subrip set codecs1=srt
if !codecs! == ass set codecs1=ass
if !codecs! == webvtt set codecs1=vtt
if !codecs! == ttml set codecs1=ttml
if !codecs! == dvb_subtitle set codecs1=dvbsub
if !codecs! == dvd_subtitle set codecs1=dvdsub
if !codecs! == hdmv_pgs_subtitle setcodecs1=sup
if !codecs! == xsub set codecs1=xsub


    


    Then I demux [extract] the subtitle using ffmpeg :

    


    c:\ffmpeg\bin\ffmpeg -i "%~dpnx1" -an -vn -c:s "!codecs!" "%~n1_d."!codecs1!"


    


    This is working, except I have an extra iteration, my output is :

    


    Mediafile: C:\Users\UNOIT\Desktop\Tears of Steel_2sub.mkv
subtile: Tears of Steel_2sub_d.srt
subtile: Tears of Steel_2sub_d.ass
subtile: Tears of Steel_2sub_d.ass
File 'Tears of Steel_2sub_d.ass' already exists. Overwrite? [y/N]


    


    And if the media file has only one subtitle, my ffmpeg output is :

    


    Mediafile: C:\Users\UNOIT\Desktop\_Jan2024-Media\mkv\Tears of Steel_ass.mkv
subtile: Tears of Steel_ass_d.ass
subtile: Tears of Steel_ass_d.ass
File 'Tears of Steel_ass_d.ass' already exists. Overwrite? [y/N]
subtile: Tears of Steel_ass_d.ass
File 'Tears of Steel_ass_d.ass' already exists. Overwrite? [y/N]


    


    I can choose not to overwrite the file - but obviously there is a problem with my iterative loop - maybe a subroutine would work

    


    Here is the batch file :

    


    ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
set "arg=codec_name"
set "arg1=codec_name"
set "arg2=codec_name"
echo Mediafile: %~dpnx1
C:\ffmpeg\bin\ffprobe -v quiet -loglevel error -select_streams s -show_entries stream=index:stream_tags=language -of csv=p=0 -i "%~dpnx1" >ns.txt
set "cmd=findstr /R /N "^^" ns.txt | find /C ":""
for /f %%a in ('!cmd!') do set nums=%%a
set /A nums=%nums%-1
FOR %%i in (0,1,%nums%) DO (
    C:\ffmpeg\bin\ffprobe.exe -v quiet -select_streams s:%%i -show_entries stream=%arg% -of default=noprint_wrappers=1:nokey=1 -i "%~dpnx1" >sub%%i.txt
    set /p codecs=code>