Recherche avancée

Médias (3)

Mot : - Tags -/image

Autres articles (110)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

  • ANNEXE : Les plugins utilisés spécifiquement pour la ferme

    5 mars 2010, par

    Le site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation ; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs ; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3) ; le plugin champs extras v2 nécessité par inscription3 (...)

Sur d’autres sites (9519)

  • How to use ffmpeg to create a video from images with timestamps

    16 juin 2023, par 肉蛋充肌

    I am attempting to record videos from a camera (basler pylon). Each frame has a timestamp provided by the camera. I want to write every frame into a video file one by one and set the interval time between two consecutive frames (in other words, fps) to match the interval time of their timestamps.I found an example code that uses ffmpeg to write the frame with a specified fps, but I am unsure how to modify the code to change it from specifying fps to using the timestamp of the frame. As I don't know anything about ffmpeg, could someone show me how to modify the code to achieve this ? It should be noted that since I immediately write every image I obtain into a video, the solution of first obtaining all the images and then merging them into a video may not be feasible.

    


    class FFMPEG_VideoWriter:
    def __init__(
            self,
            filename,  # Use avi format if possible
            size,  # (width, height)
            fps,  # Frame rate
            codec="libx264",  # Codec
            audiofile=None,  # Audio file
            preset="medium",  # Compression rate; slower is better
            bitrate=None,  # Bitrate (set only when codec supports bitrate)
            pixfmt="rgba",
            logfile=None,
            threads=None,
            ffmpeg_params=None,
    ):
        if logfile is None:
            logfile = sp.PIPE

        self.filename = filename
        self.codec = codec
        self.ext = self.filename.split(".")[-1]

        # order is important
        cmd = [
            "ffmpeg",
            "-y",
            "-loglevel",
            "error" if logfile == sp.PIPE else "info",
            "-f",
            "rawvideo",
            "-vcodec",
            "rawvideo",
            "-s",
            "%dx%d" % (size[1], size[0]),
            "-pix_fmt",
            pixfmt,
            "-r",
            "%.02f" % fps,
            "-i",
            "-",
            "-an",
        ]
        cmd.extend(
            [
                "-vcodec",
                codec,
                "-preset",
                preset,
            ]
        )
        if ffmpeg_params is not None:
            cmd.extend(ffmpeg_params)
        if bitrate is not None:
            cmd.extend(["-b", bitrate])
        if threads is not None:
            cmd.extend(["-threads", str(threads)])

        if (codec == "libx264") and (size[0] % 2 == 0) and (size[1] % 2 == 0):
            cmd.extend(["-pix_fmt", "yuv420p"])
        cmd.extend([filename])

        popen_params = {"stdout": sp.DEVNULL, "stderr": logfile, "stdin": sp.PIPE}

        if os.name == "nt":
            popen_params["creationflags"] = 0x08000000  # CREATE_NO_WINDOW

        self.proc = sp.Popen(cmd, **popen_params)

    def write_frame(self, img_array):
        """Writes one frame in the file."""
        try:
            self.proc.stdin.write(img_array.tobytes())
        except IOError as err:
            ...
            raise IOError(error)

    def close(self):
        if self.proc:
            self.proc.stdin.close()
            if self.proc.stderr is not None:
                self.proc.stderr.close()
            self.proc.wait()
        self.proc = None

    # Support the Context Manager protocol, to ensure that resources are cleaned up.

    def __enter__(self):
        return self

    def __exit__(self, exc_type, exc_value, traceback):
        self.close()

# Use Example
with FFMPEG_VideoWriter(video_path, (height, width), fps=120, pixfmt="rgb24") as writer:
    while self.isRecording or not self.frame_queue.empty():
        if not self.frame_queue.empty():
            writer.write_frame(self.frame_queue.get())


    


  • Unable to load FFProbe in laravel app

    1er août 2016, par Bullgod

    i have a problem when i upload a video with a form in my server. In the moment of upload, the aplication, must to convert the format of the video to mp4. In my notebook, this convertion work fine but when i try to convert a video in the server, i receive this error :

    ExecutableNotFoundException in FFProbeDriver.php line 50 : Unable to load FFProbe

    This is my form :

    {!! Form::open(['route' =>'upload.store', 'method'=>'POST', 'files'=> true ]) !!}

    <div class="form-group" style="display: none;">
       {!! Form::label('usuario_id', 'usuario_id:') !!}
       {!! Form::text('usuario_id', Auth::user()->id) !!}
    </div>
    <div class="form-group" style="display: none;">
       {!! Form::label('state', 'State:') !!}
       {!! Form::text('state', 0) !!}
    </div>
    <div class="form-group">
       {!! Form::label('asignatura_id', 'Asignatura:') !!}
       {!! Form::select('asignatura_id', $subject) !!}
    </div>
    <div class="form-group">
       {!! Form::label('name', 'Nombre:') !!}
       {!! Form::text('name', null, ['class'=> 'form-control', 'placeholder' => 'Ingresa el nombre de la pelicula']) !!}
    </div>
    <div class="form-group">
       {!! Form::label('language', 'Idioma:') !!}
       {!! Form::text('language', null, ['class'=> 'form-control', 'placeholder' => 'Ingresa la descripcion']) !!}
    </div><div class="form-group">
       {!! Form::label('creation_date', 'Fecha Creación:') !!}
       {!! Form::text('creation_date', null, ['class'=> 'form-control', 'placeholder' => 'Ingresa el nombre de la pelicula']) !!}
    </div>
    <div class="form-group">
       {!! Form::label('description', 'Descripcion:') !!}
       {!! Form::text('description', null, ['class'=> 'form-control', 'placeholder' => 'Ingresa la descripcion']) !!}
    </div>
    <div class="form-group">
       {!! Form::label('imageRef', 'Imagen:') !!}
       {!! Form::file('imageRef') !!}
    </div>

    <div class="form-group">
       {!! Form::label('url', 'Video:') !!}
       {!! Form::file('url') !!}
    </div>
       {!! Form::submit('Registrar',['class' =>'btn btn-primary']) !!}
       {!! Form::close() !!}

    The function in the model :

    public function setUrlAttribute($url){

           $this->attributes['url'] = 'old/'.Carbon::now()->second.$url->getClientOriginalName();
           $name = Carbon::now()->second.$url->getClientOriginalName();
           \Storage::disk('local')->put($name, \File::get($url));

           $file = pathinfo($name,PATHINFO_FILENAME);
           $extension = pathinfo($name,PATHINFO_EXTENSION);

           $ffmpeg = \FFMpeg\FFMpeg::create([
               'ffmpeg.binaries'  => '/usr/bin/ffmpeg.exe',
               'ffprobe.binaries' => '/usr/bin/ffprobe.exe',
               'timeout'          => 0, // The timeout for the underlying process
               'ffmpeg.threads'   => 12,   // The number of threads that FFMpeg should use

           ]);
           $video = $ffmpeg->open($url);
           $format = new FFMpeg\Format\Video\X264('libmp3lame', 'libx264');
           $format->on('progress', function ($video, $format, $percentage) {
               echo "$percentage % transcoded";
           });
           $format
           -> setKiloBitrate(1000)
           -> setAudioChannels(2)
           -> setAudioKiloBitrate(256);

           $video
           ->save($format, 'files/convert/'.$file.'.mp4');
           $this->attributes['url'] = $file.'.mp4';
       }

    if i convert the video in the console i receive this :

    # ffmpeg -i 67portrait.MOV -vcodec libx264 new.mp4
    FFmpeg version 0.6.5, Copyright (c) 2000-2010 the FFmpeg developers
     built on Jan 29 2012 17:52:15 with gcc 4.4.5 20110214 (Red Hat 4.4.5-6)
     configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --incdir=/usr/include --disable-avisynth --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --enable-avfilter --enable-avfilter-lavf --enable-libdc1394 --enable-libdirac --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared --enable-swscale --enable-vdpau --enable-version3 --enable-x11grab
     libavutil     50.15. 1 / 50.15. 1
     libavcodec    52.72. 2 / 52.72. 2
     libavformat   52.64. 2 / 52.64. 2
     libavdevice   52. 2. 0 / 52. 2. 0
     libavfilter    1.19. 0 /  1.19. 0
     libswscale     0.11. 0 /  0.11. 0
     libpostproc   51. 2. 0 / 51. 2. 0

    Seems stream 1 codec frame rate differs from container frame rate: 1200.00 (1200/1) -> 29.97 (30000/1001)
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '67portrait.MOV':
     Metadata:
       major_brand     : qt  
       minor_version   : 0
       compatible_brands: qt  
       date            : 2013-11-29T13:19:09+0100
       date-fra        : 2013-11-29T13:19:09+0100
     Duration: 00:00:02.08, start: 0.000000, bitrate: 926 kb/s
       Stream #0.0(und): Audio: aac, 44100 Hz, mono, s16, 60 kb/s
       Stream #0.1(und): Video: h264, yuv420p, 568x320, 863 kb/s, 29.98 fps, 29.97 tbr, 600 tbn, 1200 tbc
    [libx264 @ 0x24bab70]broken ffmpeg default settings detected
    [libx264 @ 0x24bab70]use an encoding preset (e.g. -vpre medium)
    [libx264 @ 0x24bab70]preset usage: -vpre <speed> -vpre <profile>
    [libx264 @ 0x24bab70]speed presets are listed in x264 --help
    [libx264 @ 0x24bab70]profile is optional; x264 defaults to high
    Output #0, mp4, to 'new.mp4':
       Stream #0.0(und): Video: libx264, yuv420p, 568x320, q=2-31, 200 kb/s, 90k tbn, 29.97 tbc
       Stream #0.1(und): Audio: libfaac, 44100 Hz, mono, s16, 64 kb/s
    Stream mapping:
     Stream #0.1 -> #0.0
     Stream #0.0 -> #0.1
    Error while opening encoder for output stream #0.0 - maybe incorrect parameters such as bit_rate, rate, width or height
    </profile></speed>

    i have tried a lot of thinks to resolve this problem but steel happend.

  • Anomalie #4276 : fonctions non définies dans porte_plume_pipelines.php

    24 janvier 2019, par François Palangié

    Bonjour,

    Vous avez raison c’est la version 1.18.3 que j’ai maintenant, 1.18.1
    devait être le numéro de version avant que je réinstalle la dernière
    version de SPIP.

    Le problème était le même avec la 18.1.1 et la 18.1.3 . Le problème est
    intervenu un matin sans que j’ai rien changé, je suppose que c’est mon
    hébergeur qui a changé l’environnement et que c’est la cause du
    problème... mais c’est curieux que cela produise ce type d’erreur !

    Cordialement,

    François

    Le 24/01/2019 à 12:59, a écrit :

    La demande #4276 <https://core.spip.net/issues/4276#change-14694> a
    été mise à jour par Franck D .

    • Statut changé de /Nouveau/ à /Fermé/

    Hello :-)
    Spip 3.2.3 est dispo avec la version 1.18.3 de porte plume
    https://zone.spip.net/trac/spip-zone/browser/spip-zone/_core_/tags/spip-3.2.3/plugins/porte_plume/paquet.xml#L4
    J’ai vérifier le zip et c’est bien le cas
    https://files.spip.net/spip/archives/SPIP-v3.2.3.zip !
    Vous êtes sûr de la version que vous avez ?
    Franck


    Anomalie #4276 : fonctions non définies dans
    porte_plume_pipelines.php
    <https://core.spip.net/issues/4276#change-14694>

    • Auteur : François Palangié
    • Statut : Fermé
    • Priorité : Normal
    • Assigné à :
    • Catégorie :
    • Version cible :
    • Resolution :
    • Navigateur :

    Environnement :

    Problème :
    Le site fonctionne, mais quand on tente d’accéder à la partie
    privée on a ce message d’erreur, qui persiste même après une
    réinstallation de SPIP :
    Fatal error : Uncaught Error : Call to undefined function barre_outils_css_icones() in /var/www/vhosts/voyart.org/httpdocs/plugins-dist/porte_plume/porte_plume_pipelines.php:152
    Stack trace :
    #0 /var/www/vhosts/voyart.org/httpdocs/plugins-dist/porte_plume/porte_plume_pipelines.php(129) : porte_plume_insert_head_css(’

    &lt;script type=&quot;t...', true)&lt;br /&gt;&lt;a class=&quot;issue tracker-1 status-5 priority-4 priority-default closed&quot; title=&quot;Anomalie: Document distant .zip uploadés et non gardés distants (Fermé)&quot; href=&quot;https://core.spip.net/issues/1&quot;&gt;#1&lt;/a&gt; /var/www/vhosts/voyart.org/httpdocs/ecrire/inc/utils.php(199): porte_plume_insert_head_prive_css('&lt;script type=&quot;t...')&lt;br /&gt;&lt;a class=&quot;issue tracker-1 status-5 priority-4 priority-default closed&quot; title=&quot;Anomalie: Filtres sur chaines de langues de nouveau cassés (Fermé)&quot; href=&quot;https://core.spip.net/issues/2&quot;&gt;#2&lt;/a&gt; /var/www/vhosts/voyart.org/httpdocs/tmp/cache/charger_pipelines.php(596): minipipe('porte_plume_ins...', '&lt;script type=&quot;t...')&lt;br /&gt;&lt;a class=&quot;issue tracker-1 status-5 priority-3 priority-lowest closed&quot; title=&quot;Anomalie: problème de gestion de cache lors de l'installation de SPIP (Fermé)&quot; href=&quot;https://core.spip.net/issues/3&quot;&gt;#3&lt;/a&gt; /var/www/vhosts/voyart.org/httpdocs/ecrire/inc/utils.php(265): execute_pipeline_header_prive_css('&lt;script type=&quot;t...')&lt;br /&gt;&lt;a class=&quot;issue tracker-2 status-5 priority-4 priority-default closed&quot; title=&quot;Evolution: forum privé-&gt;public (Fermé)&quot; href=&quot;https://core.spip.net/issues/4&quot;&gt;#4&lt;/a&gt; /var/www/vhosts/voyart.org/httpdocs/tmp/cache/skel/html_c44cf6e196e37af7575f04c7aba04247.php(72): pipeline('header_prive_cs...', '&lt;script type=&quot;t...')&lt;br /&gt;&lt;a class=&quot;issue tracker-2 status-5 priority-4 priority-default closed&quot; title=&quot;Evolution: traduction francophone de la zone utilisant Trac (Fermé)&quot; href=&quot;https://core.spip.net/issues/5&quot;&gt;#5&lt;/a&gt; /var/www/vhosts/voyart.org/httpdocs/ecrire/public/parametrer.php(128): html_c44cf6e196e37af7575f04c7aba04247(Array, Array)&lt;br /&gt;&lt;a class=&quot;issue tracker-1 status-5 priority-4 priority-default closed&quot; title=&quot;Anomalie: Renseigner les champs &quot;component&quot;, &quot;version&quot;, .. (Fermé)&quot; href=&quot;https://core.spip.net/issues/6&quot;&gt;#6&lt;/a&gt; /var/www/vhosts/voyart.org/httpdocs/ecr in /var/www/vhosts/voyart.org/httpdocs/plugins-dist/porte_plume/porte_plume_pipelines.php on line 152&lt;/p&gt;<br />
    <br />
    <br />
            &lt;p&gt;Le problème est contourné en renommant le répertoire &lt;br /&gt;plugin-dist/porteplume&lt;br /&gt;Le problème ne dépend pas du navigateur firefox, edge, chrome&lt;br /&gt;Aucun problème sur le SPIP de développement installé avec &lt;br /&gt;EasyPHP-devserver sur mon ordinateur perso&lt;/p&gt;<br />
    <br />
    <br />
    &lt;hr /&gt;<br />
    <br />
    <br />
            &lt;p&gt;Vous recevez ce mail car vous êtes impliqués sur ce projet.&lt;br /&gt;Pour changer les préférences d'envoi de mail, allez sur &lt;br /&gt;&lt;a class=&quot;external&quot; href=&quot;http://core.spip.net/my/account&quot;&gt;http://core.spip.net/my/account&lt;/a&gt;&lt;/p&gt;<br />
    <br />
    <br />
    &lt;/blockquote&gt;<br />
    <br />
            &lt;p&gt;---&lt;br /&gt;Cet email a fait l'objet d'une analyse antivirus par AVG.&lt;br /&gt;&lt;a class=&quot;external&quot; href='http://www.avg.com/'&gt;http://www.avg.com&lt;/a&gt;&lt;/p&gt;