Recherche avancée

Médias (1)

Mot : - Tags -/Christian Nold

Autres articles (59)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

  • MediaSPIP : Modification des droits de création d’objets et de publication définitive

    11 novembre 2010, par

    Par défaut, MediaSPIP permet de créer 5 types d’objets.
    Toujours par défaut les droits de création et de publication définitive de ces objets sont réservés aux administrateurs, mais ils sont bien entendu configurables par les webmestres.
    Ces droits sont ainsi bloqués pour plusieurs raisons : parce que le fait d’autoriser à publier doit être la volonté du webmestre pas de l’ensemble de la plateforme et donc ne pas être un choix par défaut ; parce qu’avoir un compte peut servir à autre choses également, (...)

  • Creating farms of unique websites

    13 avril 2011, par

    MediaSPIP platforms can be installed as a farm, with a single "core" hosted on a dedicated server and used by multiple websites.
    This allows (among other things) : implementation costs to be shared between several different projects / individuals rapid deployment of multiple unique sites creation of groups of like-minded sites, making it possible to browse media in a more controlled and selective environment than the major "open" (...)

Sur d’autres sites (6304)

  • avcodec/ccaption_dec : Make real-time latency configurable

    19 juin 2021, par Pavel Koshevoy
    avcodec/ccaption_dec : Make real-time latency configurable
    

    Un-hardcode the 200ms minimum latency between emitting subtitle events
    so that those that wish to receive a subtitle event for every screen
    change could do so.

    The problem with delaying realtime output by any amount is that it is
    unknown when the next byte pair that would trigger output will happen.
    It may be within 200ms, or it may be several seconds later — that's
    not realtime at all.

    • [DH] libavcodec/ccaption_dec.c
    • [DH] libavcodec/version.h
  • Revision 0de216a995 : Use local vairable in rd_auto_partition_range() In addition to a few cleanups.

    20 mars 2014, par Yaowu Xu

    Changed Paths :
     Modify /vp9/encoder/vp9_encodeframe.c


     Modify /vp9/encoder/vp9_onyx_if.c



    Use local vairable in rd_auto_partition_range()

    In addition to a few cleanups.

    Change-Id : Ice5938ef494513921a47e7c64ba9928f2202e24e

  • How to take frames in real-time in a RTSP streaming ?

    30 juin 2018, par guijob

    I’m trying to grab frames with no delays using javacv and I’m kind of confusing how to do it and how javacv and other stuff properly work under the hoods.

    In my example, I have a RTSP streaming running with following configurations :

    Codec: H.264
    Frame Size: 1280x720
    Maximum Frame Rate: 60 fps

    In order to make it happen, I’ve made a thread like following :

    public class TakeFrameFromStreamingThread implements Runnable {
     private CircularFifoQueue queue;
     private Camera camera;
     private FFmpegFrameGrabber grabber = null;

     public TakeFrameFromStreamingThread(CircularFifoQueue queue, Camera camera) {
       try {
         this.queue = queue;
         this.camera = camera;
         this.initGrabber(camera);
       } catch (Exception e) {
         e.printStackTrace();
       }
     }

     @Override
     public void run() {
       try {
         while (true) {
           if (grabber == null) {
             initGrabber(camera); // connect
       }

       Frame frame = null;
       frame = grabber.grabImage();

       if (frame != null) {
         this.queue.add(frame);
       } else { // when frame == null then connection has been lost
         initGrabber(camera); // reconnect
       }
         }
       } catch (Exception e) {
         e.printStackTrace();
       }
     }

     private void initGrabber(Camera camera) throws Exception {
       grabber = new FFmpegFrameGrabber(camera.getURL()); // rtsp url
       grabber.setVideoCodec(avcodec.AV_CODEC_ID_H264);
       grabber.setOption("rtsp_transport", "tcp");
       grabber.setFrameRate(60);
       grabber.setImageWidth(camera.getResolution().getWidth());
       grabber.setImageHeight(camera.getResolution().getHeight());
       grabber.start();
     }
    }

    And it seems to work. Anytime I need a frame I pool this queue from my main thread.

    I’ve ended up with this solution solving another issue. I was getting stuck why does calling grabImage() every time I need a frame has returned just next frame instead of a real-time frame from streaming.

    By this solution, I’m guessing there is a buffer which javacv (or ffmpeg idk) fills with frames and then grabImage() just get a frame from this buffer. So it’s my first question :

    1) Is that right ? Does ffmpeg relies on a buffer to store frames and then grab() just get it from there ?

    Well, if that is a truth, then this buffer must be filled at some rate and, of course, if this rate is greater than my grabImage() calls rate, eventually I’ll lose my real-time feature and soon I’ll be even losing frames once buffer gets completely filled.

    In this scenario, my grabImage() takes about 50 ms, which gives me 20 fps rate getting frames from this buffer. Hence, I need to make sure ffmpeg is receiving frames at most 20 fps. So here’s my second question :

    2) How to know and change ffmpeg buffer rate ? I’m guessing it’s getting filled at a same rate of streaming (60 fps) or from property grabber.setFrameRate(). At all, I’m not sure if I should use grabber setters with same values from source streaming.