Recherche avancée

Médias (91)

Autres articles (86)

  • Le profil des utilisateurs

    12 avril 2011, par

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

  • Configurer la prise en compte des langues

    15 novembre 2010, par

    Accéder à la configuration et ajouter des langues prises en compte
    Afin de configurer la prise en compte de nouvelles langues, il est nécessaire de se rendre dans la partie "Administrer" du site.
    De là, dans le menu de navigation, vous pouvez accéder à une partie "Gestion des langues" permettant d’activer la prise en compte de nouvelles langues.
    Chaque nouvelle langue ajoutée reste désactivable tant qu’aucun objet n’est créé dans cette langue. Dans ce cas, elle devient grisée dans la configuration et (...)

  • XMP PHP

    13 mai 2011, par

    Dixit Wikipedia, XMP signifie :
    Extensible Metadata Platform ou XMP est un format de métadonnées basé sur XML utilisé dans les applications PDF, de photographie et de graphisme. Il a été lancé par Adobe Systems en avril 2001 en étant intégré à la version 5.0 d’Adobe Acrobat.
    Étant basé sur XML, il gère un ensemble de tags dynamiques pour l’utilisation dans le cadre du Web sémantique.
    XMP permet d’enregistrer sous forme d’un document XML des informations relatives à un fichier : titre, auteur, historique (...)

Sur d’autres sites (8416)

  • FFmpeg + iOS + lossy cellular connections

    9 novembre 2014, par Moss

    I am able to play an RTMP audio + video real-time stream on iOS with FFmpeg. Works fantastic when everything is on a solid WiFi connection.

    When I switch to a cellular connection (great signal strength and LTE/4G), av_read_frame() will intermittently block for an unacceptable amount of time. From what I can tell, it’s not that the cellular data connection just dropped, because I can reconnect immediately and start downloading more packets. In some cases, I’ve clocked 30+ seconds of hang time before it returns the next frame. When the next frame finally comes in, my real-time video stream is permanently delayed by the amount of time that av_read_frame() blocked.

    I attempted a work-around by using the AVIOInterruptCB interrupt callback to abort av_read_frame() if the function takes longer than 1 second to return. Here’s what that code looks like :

    - (void)readPackets {
       // Make sure FFmpeg calls our interrupt periodically
       _context->interrupt_callback.callback = interrupt_cb;
       _context->interrupt_callback.opaque = self;

       dispatch_async(_readPacketQueue, ^(void) {
           int err;

           while(true) {
               _readFrameTimeStamp = [[NSDate date] timeIntervalSince1970];
               err = av_read_frame(_context, &packet);
               _readFrameTimeStamp = 0;

               if(err) {
                   // Error - Reconnect the entire stream from scratch, taking 5-10 seconds
                   // And we know when av_read_frame() was aborted
                   // because its error code is -1414092869 ("EXIT")
               }
               else {
                   // Play this audio or video packet
               }
           }
      });
    }

    /**
    * Interrupt
    * @return 1 to abort the current operation
    */
    static int interrupt_cb(void *decoder) {
       if(decoder) {
           if(_readFrameTimeStamp != 0) {
               if([[NSDate date] timeIntervalSince1970] - _readFrameTimeStamp > 1) {
                   // Abort av_read_frame(), it's taking longer than 1 second
                   return 1;
               }
           }
       }
    }

    This definitely aborts av_read_frame() after 1 second, but unfortunately after I do this, future attempts to call av_read_frame() result in EIO errors (-5), which indicates that the connection has been severed.

    As a result, I am forced to fully reconnect the viewer, which takes 5-10 seconds. (avformat_open_input() takes 3-4 seconds, and then find the stream info again takes 2-3 seconds, and then start reading frames).

    The 5-10 second delay to fully reconnect is much better than waiting more than 10 seconds for av_read_frame() to unblock, and it’s much better than the real-time stream being delayed by a significant amount. But it’s much worse than being able to retry av_read_frame() immediately.

    From a cellular user’s perspective, their video locks up intermittently for 5-10 seconds while we reconnect the stream in the background from scratch, which isn’t a good user experience.

    What strategies are there to better way to manage av_read_frame() on a lossy cellular connection ?
    (Or strategies to improve the reconnect time ?)

  • libx264 - Setting up AVCodecContext for HD & SD capturing

    8 octobre 2013, par moose

    I'm trying to configure the AVCodecContext properly in order to capture HD in real-time (1080i) and SD (720 x 576) - also interlaced. I'm using libx264 with the ffmpeg static lib on Windows OS.
    If anybody can help with flags, gop_size, max_b_frames and all other AVCodecContext's members...

    For example, I guess I should have CODEC_FLAG_INTERLACED_ME | CODEC_FLAG_INTERLACED_DCT flags set. However, what I need is the whole story on how to set all this up.

  • live streaming with ffmpeg after processing video

    17 avril 2019, par Lotfus

    I have input videos that are received live then processed with ffmpeg then put in output to be live streamed. Where I am stuck is below.

    I am processing chunks of 10 seconds with ffmpeg in real time and I need to live stream these videos as I output them. I do not know how to proceed with ffmpeg, any clue ?