Recherche avancée

Médias (1)

Mot : - Tags -/epub

Autres articles (39)

  • Use, discuss, criticize

    13 avril 2011, par

    Talk to people directly involved in MediaSPIP’s development, or to people around you who could use MediaSPIP to share, enhance or develop their creative projects.
    The bigger the community, the more MediaSPIP’s potential will be explored and the faster the software will evolve.
    A discussion list is available for all exchanges between users.

  • 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 (...)

  • Organiser par catégorie

    17 mai 2013, par

    Dans MédiaSPIP, une rubrique a 2 noms : catégorie et rubrique.
    Les différents documents stockés dans MédiaSPIP peuvent être rangés dans différentes catégories. On peut créer une catégorie en cliquant sur "publier une catégorie" dans le menu publier en haut à droite ( après authentification ). Une catégorie peut être rangée dans une autre catégorie aussi ce qui fait qu’on peut construire une arborescence de catégories.
    Lors de la publication prochaine d’un document, la nouvelle catégorie créée sera proposée (...)

Sur d’autres sites (4557)

  • First HLS segment overlapping when renditions have different framerates

    7 septembre 2023, par drajvver

    I have a multi resolution m3u8 file, created from 1080p60 source file. Resolutions lower than 720p are converted to 30fps, while 720p+ stay at 60fps.

    


    The problem is that the first segment is broken between 30 and 60fps renditions, causing an overlap, which is detected by hls.js as a gap between segments for some reason.

    


    I have checked the segment files manually and it looks like they are fine, except for single audio frame missing between them, 60fps one has 187 'frames', while 30fps one has 186 'frames'.

    


    Videos are segmented in separate ffmpeg runs, but using the same settings, differing only in FPS, resolution and bitrate. Source file is always the same.

    


    Encoding parameters are : -async 30 -fps_mode cfr -vf "scale=640:-2,framerate=fps=30" -ac 2 -preset faster -crf 23 -b:a 128k -maxrate 1160k -bufsize 1600k -force_key_frames "expr:if(isnan(prev_forced_n),1,eq(n,prev_forced_n+30))" -g 30 -keyint_min 30 -sc_threshold 0 -hls_time 4 -hls_list_size 0 -hls_playlist_type vod -hls_flags independent_segments+discont_start -max_muxing_queue_size 9999 -profile:v main -pix_fmt yuv420p -fflags +genpts -r 30 - it's the same for 60fps, just with different resolution, bitrate and 30 gets replaced by 60

    


    Is there a way to fix this ?

    


    Thanks !

    


    first segment gap
segment info

    


  • mmaldec : limit internal buffering

    28 janvier 2016, par wm4
    mmaldec : limit internal buffering
    

    This uses a new MMAL feature, which limits the number of extra frames
    that can be buffered within the decoder. VIDEO_MAX_NUM_CALLBACKS can
    be defined as positive or negative number. Positive numbers are
    absolute, and can lead to deadlocks if the user underestimates the
    number of required buffers. Negative numbers specify the number of extra
    buffers, e.g. -1 means no extra buffer, (-1-N) means N extra buffers.

    Set a gratuitous default of -11 (N=10). This is much lower than the
    firmware default, which appears to be 96.

    This is backwards compatible, but needs a symbol only present in newer
    firmware headers. (It’s an enum item, so it requires a check in
    configure.)

    • [DH] configure
    • [DH] libavcodec/mmaldec.c
  • even though my code is running without an error, it does not generate plot or video. I have xming runing

    23 octobre 2017, par Amin Abbasi

    This is my first code and I am really new to coding. I am trying to create a video or just plot my code.Eeven though my code is running without an error, I can’t get the video or the plot to generate. I have xming running and I have plotted a sample to make sure it not a computer Issue. I have also tried the following on GitHub but no success :
    https://jakevdp.github.io/blog/2013/05/19/a-javascript-viewer-for-matplotlib-animations/

    # -*- coding: utf-8 -*-
    import numpy as np
    def solver(I, V, f, c, L, dt, cc, T, user_action=None):
       """Solve u_tt=c^2*u_xx + f on (0,L)x(0,T]."""
       Nt = int(round(T/dt))
       t = np.linspace(0, Nt*dt, Nt+1) # Mesh points in time
       dx = dt*c/float(cc)
       Nx = int(round(L/dx))
       x = np.linspace(0, L, Nx+1) # Mesh points in space
       C2 = cc**2 # Help variable in the scheme
       # Make sure dx and dt are compatible with x and t
       dx = x[1] - x[0]
       dt = t[1] - t[0]
       if f is None or f == 0 :
           f = lambda x, t: 0
       if V is None or V == 0:
           V = lambda x: 0
       u       = np.zeros(Nx+1) # Solution array at new time level
       u_n     = np.zeros(Nx+1) # Solution at 1 time level back
       u_nm1   = np.zeros(Nx+1) # Solution at 2 time levels back
       import time; t0 = time.clock() # Measure CPU time
       # Load initial condition into u_n
       for i in range(0,Nx+1):
           u_n[i] = I(x[i])
       if user_action is not None:
           user_action(u_n, x, t, 0)
       # Special formula for first time step
       n = 0
       for i in range(1, Nx):
           u[i] = u_n[i] + dt*V(x[i]) + \
               0.5*C2*(u_n[i-1] - 2*u_n[i] + u_n[i+1]) + \
               0.5*dt**2*f(x[i], t[n])
       u[0] = 0; u[Nx] = 0
       if user_action is not None:
           user_action(u, x, t, 1)
       # Switch variables before next step
       u_nm1[:] = u_n; u_n[:] = u
       for n in range(1, Nt):
           # Update all inner points at time t[n+1]
           for i in range(1, Nx):
               u[i] = - u_nm1[i] + 2*u_n[i] + \
                       C2*(u_n[i-1] - 2*u_n[i] + u_n[i+1]) + \
                       dt**2*f(x[i], t[n])
           # Insert boundary conditions
           u[0] = 0; u[Nx] = 0
           if user_action is not None:
               if user_action(u, x, t, n+1):
                   break
           # Switch variables before next step
           u_nm1[:] = u_n; u_n[:] = u
       cpu_time = time.clock() - t0
       return u, x, t,
    def test_quadratic():
       """Check that u(x,t)=x(L-x)(1+t/2) is exactly reproduced."""
       def u_exact(x, t):
           return x*(L-x)*(1 + 0.5*t)
       def I(x):
           return u_exact(x, 0)
       def V(x):
           return 0.5*u_exact(x, 0)
       def f(x, t):
           return 2*(1 + 0.5*t)*c**2
       L = 2.5
       c = 1.5
       cc = 0.75
       Nx = 6 # Very coarse mesh for this exact test
       dt = cc*(L/Nx)/c
       T = 18
       def assert_no_error(u, x, t, n):
           u_e = u_exact(x, t[n])
           diff = np.abs(u - u_e).max()
           tol = 1E-13
           assert diff < tol
       solver(I, V, f, c, L, dt, cc, T,
               user_action=assert_no_error)
    def viz(
       I, V, f, c, L, dt, C, T,umin, umax, animate=True, tool='matplotlib'):
       """Run solver and visualize u at each time level."""
       def plot_u_st(u, x, t, n):
           """user_action function for solver."""
           plt.plot(x, u, 'r-')
    #                 xlabel='x', ylabel='u',
    #                 axis=[0, L, umin, umax],
    #                 title='t=%f' % t[n], show=True)
           # Let the initial condition stay on the screen for 2
           # seconds, else insert a pause of 0.2 s between each plot
           time.sleep(2) if t[n] == 0 else time.sleep(0.2)
           plt.savefig('frame_%04d.png' % n) # for movie making
       class PlotMatplotlib:
           def __call__(self, u, x, t, n):
               """user_action function for solver."""
               if n == 0:
                   plt.ion()
                   self.lines = plt.plot(x, u, 'r-')
                   plt.xlabel('x'); plt.ylabel('u')
                   plt.axis([0, L, umin, umax])
                   plt.legend(['t=%f' % t[n]], loc='lower left')
               else:
                   self.lines[0].set_ydata(u)
                   plt.legend(['t=%f' % t[n]], loc='lower left')
                   plt.draw()
               time.sleep(2) if t[n] == 0 else time.sleep(0.2)
               plt.savefig('tmp_%04d.png' % n) # for movie making
       if tool == 'matplotlib':
           import matplotlib.pyplot as plt
           plot_u = PlotMatplotlib()
       elif tool == 'scitools':
           import scitools.std as plt # scitools.easyviz interface
           plot_u = plot_u_st
       import time, glob, os
       # Clean up old movie frames
       for filename in glob.glob('tmp_*.png'):
           os.remove(filename)
       # Call solver and do the simulaton
       user_action = plot_u if animate else None
       u, x, t, cpu = solver_function(
           I, V, f, c, L, dt, C, T, user_action)
       # Make video files
       fps = 4 # frames per second
       codec2ext = dict(flv='flv', libx264='mp4', libvpx='webm',
                        libtheora='ogg') # video formats
       filespec = 'tmp_%04d.png'
       movie_program = 'ffmpeg' # or 'avconv'
       for codec in codec2ext:
           ext = codec2ext[codec]
           cmd = '%(movie_program)s -r %(fps)d -i %(filespec)s '\
                 '-vcodec %(codec)s movie.%(ext)s' % vars()
           os.system(cmd)
       if tool == 'scitools':
           # Make an HTML play for showing the animation in a browser
           plt.movie('tmp_*.png', encoder='html', fps=fps,
                     output_file='movie.html')
       return cpu