Recherche avancée

Médias (1)

Mot : - Tags -/getid3

Autres articles (40)

  • List of compatible distributions

    26 avril 2011, par

    The table below is the list of Linux distributions compatible with the automated installation script of MediaSPIP. Distribution nameVersion nameVersion number Debian Squeeze 6.x.x Debian Weezy 7.x.x Debian Jessie 8.x.x Ubuntu The Precise Pangolin 12.04 LTS Ubuntu The Trusty Tahr 14.04
    If you want to help us improve this list, you can provide us access to a machine whose distribution is not mentioned above or send the necessary fixes to add (...)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

  • Personnaliser les catégories

    21 juin 2013, par

    Formulaire de création d’une catégorie
    Pour ceux qui connaissent bien SPIP, une catégorie peut être assimilée à une rubrique.
    Dans le cas d’un document de type catégorie, les champs proposés par défaut sont : Texte
    On peut modifier ce formulaire dans la partie :
    Administration > Configuration des masques de formulaire.
    Dans le cas d’un document de type média, les champs non affichés par défaut sont : Descriptif rapide
    Par ailleurs, c’est dans cette partie configuration qu’on peut indiquer le (...)

Sur d’autres sites (7858)

  • avformat/segment : Pass flags to child context

    11 avril 2016, par Michael Niedermayer
    avformat/segment : Pass flags to child context
    

    This is needed as the bitexact flag is not in the codecpar context, and thus not copied

    Signed-off-by : Michael Niedermayer <michael@niedermayer.cc>

    • [DH] libavformat/segment.c
  • ffmpeg in child process doesn't exit when parent closes pipe

    28 mars 2013, par user2221129

    This code snippet is from a pthread process. It is responsible for reading configuration/options to pass to ffmpeg. The data piped to ffmpeg is coming in on a ring buffer of video frames (as a proof of concept, in the final implementation these would be coming from a camera device). The parent writes to the child via a pipe established with dup2. The problem I'm having is that most of the time, the ffmpeg process doesn't seem to recognize the pipe has been closed by the parent (as strace shows the ffmpeg is in read). There are probably some unhandled mutex situations.

    #define CHILD_READ  writepipe[0]
    #define PARENT_WRITE    writepipe[1]
    #define MAX_VIDEO_BUFFERS 30

    static int last_frame_written = -1;
    static int buffer_size = -1;
    static void *video_buffer[MAX_VIDEO_BUFFERS];

    #define MAXTHREADS 2
    static pthread_t thread[MAXTHREADS];
    static int sigusr[MAXTHREADS];
    static int sigusr_thread[MAXTHREADS];

    #define MAXPARAMETERS 100

    void* encoder_thread(void *ptr)
    {
       int param;
       const char **parameters = new const char* [MAXPARAMETERS];
       ssize_t bytes_written_debug = 0;

       int writepipe[2] = {-1,-1};
       int last_frame_read = -1;
       pid_t   childpid;

       // xxx
       if ( 0 != pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL) )
       {
           fprintf(stderr,"pthread_setcancelstate could not be set\n");
       }

       param = *(int*)ptr;
       fprintf(stderr,"param = %d\n", param);

       switch (param)
       {
           ...read config file and populate parameters for child call...
       }

       while ( last_frame_written == -1 )
       {
           fprintf(stderr,"ENCODER THREAD WAITING\n");
           sleep(1);
       }

       if ( pipe(writepipe) &lt; 0 )
       {
           ...handle error case...
       }


       if ( (childpid = fork()) &lt; 0)
       {
           fprintf(stderr,"child failed\n");
       }
       else if ( 0 == childpid )   /* in the child */
       {
           dup2(CHILD_READ,  STDIN_FILENO);
           //close(CHILD_READ); // doesn&#39;t seem to matter
           close(PARENT_WRITE);

           execv("/usr/bin/ffmpeg",(char **)parameters);
           return;
       }
       else                /* in the parent */
       {
           fprintf(stderr,"THREAD CHILD PID: %d\n",childpid);
           close(CHILD_READ);

           while ( last_frame_written > -1 &amp;&amp; 0==sigusr_thread[param] )
           {
               if ( last_frame_read != last_frame_written )
               {
                   // send frame to child (ffmpeg)
                   last_frame_read = last_frame_written;
                   bytes_written_debug = write(PARENT_WRITE,video_buffer[last_frame_read], buffer_size);
                   if ( bytes_written_debug &lt; 0 )
                   {
                       fprintf(stderr, "write error\n");
                       break;
                   }
               }

               usleep(10000); // assume ~100Hz rate
           }

    /// Problems begin now: no more data from main process,
    /// Shouldn&#39;t this close "close" the pipe created with dup2 and hence EOF ffmpeg?
           if ( close(PARENT_WRITE) )
           {
               fprintf(stderr,"\n\nclose failure! wtf?\n\n\n");
           }

    // debug sleep:
    // waiting 10 sec doesn&#39;t seem to help...
    // trying to give ffmpeg some time if it needs it
           sleep(10);

    // kill never fails here:
           if ( !kill(childpid,SIGINT) )
           {
               fprintf(stderr, "\n\nkill child %d\n", childpid);
           }
           else
           {
               fprintf(stderr, "\n\nkill failed for child %d\n", childpid);
           }

           fprintf(stderr,"\n\nwaiting\n\n\n");
           int status = 0;

    // wait forever (in most cases); ps -axw shows all the ffmpeg&#39;s
           wait(&amp;status);
       }
    }




    int main()
    {
       ...
       for ( int i = 0; i &lt; MAXTHREADS; ++i)
       {
           sigusr[i] = 0;
           sigusr_thread[i] = 0;
           param[i] = i;
           iret = pthread_create( &amp;thread[i], NULL, encoder_thread, (void*) &amp;param[i] );
       }
       ...

       // Maybe this is important to the pthread signaling?
       // Don&#39;t think so because thread&#39;s SIGINT isn&#39;t picked up by signal handler (not shown)
       sigemptyset(&amp;set);
       sigaddset(&amp;set, SIGHUP);
       sigaddset(&amp;set, SIGINT);
       sigaddset(&amp;set, SIGUSR1);
       sigaddset(&amp;set, SIGUSR2);
       sigaddset(&amp;set, SIGALRM);

       /* block out these signals */
       sigprocmask(SIG_BLOCK, &amp;set, NULL);

       ...read file/populate frame buffer until file exhausted...

       fprintf(stderr, "waiting for threads to exit\n");

       for ( int i = 0; i &lt; MAXTHREADS; ++i)
       {
           sigusr_thread[i] = 1;
           pthread_join( thread[i], NULL);
       }
       fprintf(stderr, "done waiting for threads to exit\n");

       ...

       return 0;
    }

    I've embedded comments and questions in the thread's parent code after the frame buffer read/write loop.

    Hope I've provided enough detail - stackoverflow posting noob ! Thank you.

  • ffmpeg capture output from child window

    3 janvier 2013, par glitchyme

    using xwininfo -all I'm able to see the stats of any window, along with its child windows

    xwininfo: Window id: 0x3c000ba "Electro - The Slag &amp; Prototype Raptor - Crescendo - YouTube - Mozilla Firefox"

     Root window id: 0xa8 (the root window) (has no name)
     Parent window id: 0xc001b8 (has no name)
        2 children:
        0x3c00175 (has no name): ()  1388x876+0+0  +52+24
           5 children:
           0x3d210ab (has no name): ()  854x510+225+197  +277+221
              1 child:
              0x3d210ac (has no name): ()  854x510+0+0  +277+221
                 1 child:
                 0x40404de "plugin-container": ("plugin-container" "Plugin-container")  854x510+0+0  +277+221
                    2 children:
                    0x40404e1 (has no name): ()  854x510+0+0  +277+221
                    0x40404df (has no name): ()  1x1+-1+-1  +276+220
           0x3ddbcf2 (has no name): ()  640x390+225+162  +277+186
              1 child:
              0x3ddbcf3 (has no name): ()  640x390+0+0  +277+186
                 1 child:
                 0x403d545 "plugin-container": ("plugin-container" "Plugin-container")  640x390+0+0  +277+186
                    2 children:
                    0x403d548 (has no name): ()  640x390+0+0  +277+186
                    0x403d546 (has no name): ()  1x1+-1+-1  +276+185
           0x3dac7f9 (has no name): ()  640x390+225+162  +277+186
              1 child:
              0x3dac7fa (has no name): ()  640x390+0+0  +277+186
                 1 child:
                 0x4039d8b "plugin-container": ("plugin-container" "Plugin-container")  640x390+0+0  +277+186
                    2 children:
                    0x4039d8e (has no name): ()  640x390+0+0  +277+186
                    0x4039d8c (has no name): ()  1x1+-1+-1  +276+185
           0x3c3f939 (has no name): ()  640x390+225+197  +277+221
              1 child:
              0x3c3f93a (has no name): ()  640x390+0+0  +277+221
                 1 child:
                 0x4011918 "plugin-container": ("plugin-container" "Plugin-container")  640x390+0+0  +277+221
                    2 children:
                    0x401191b (has no name): ()  640x390+0+0  +277+221
                    0x4011919 (has no name): ()  1x1+-1+-1  +276+220
           0x3c0d1dc (has no name): ()  1x1+0+97  +52+121
              1 child:
              0x3c0d1dd (has no name): ()  1x1+0+0  +52+121
                 1 child:
                 0x4002c1e "plugin-container": ("plugin-container" "Plugin-container")  1x1+0+0  +52+121
                    2 children:
                    0x4002c40 (has no name): ()  1x1+0+0  +52+121
                    0x4002c1f (has no name): ()  1x1+-1+-1  +51+120
        0x3c000bb (has no name): ()  1x1+-1+-1  +51+23

     Absolute upper-left X:  52
     Absolute upper-left Y:  24
     Relative upper-left X:  0
     Relative upper-left Y:  0
     Width: 1388
     Height: 876
     Depth: 24
     Visual: 0x23
     Visual Class: TrueColor
     Border width: 0
     Class: InputOutput
     Colormap: 0x20 (installed)
     Bit Gravity State: NorthWestGravity
     Window Gravity State: NorthWestGravity
     Backing Store State: NotUseful
     Save Under State: no
     Map State: IsViewable
     Override Redirect State: no
     Corners:  +52+24  -0+24  -0-0  ç0
     -geometry 1388x876-0-0

     Bit gravity: NorthWestGravity
     Window gravity: NorthWestGravity
     Backing-store hint: NotUseful
     Backing-planes to be preserved: 0xffffffff
     Backing pixel: 0
     Save-unders: No

     Someone wants these events:
         KeyPress
         KeyRelease
         ButtonPress
         ButtonRelease
         EnterWindow
         LeaveWindow
         PointerMotion
         Exposure
         VisibilityChange
         StructureNotify
         FocusChange
         PropertyChange
     Do not propagate these events:
     Override redirection?: No

     Window manager hints:
         Client accepts input or input focus: Yes
         Initial state is Normal State
         Displayed on desktop 0
         Window type:
             Normal
         Window state:
             Maximized Vert
             Maximized Horz
         Process id: 4087 on host jb
         Frame extents: 0, 0, 0, 0

     Normal window size hints:
         Program supplied minimum size: 18 by 97
         Program supplied maximum size: 1073741824 by 1073741824
         Program supplied window gravity: NorthWestGravity
     No zoom window size hints defined

     No window shape defined
     No border shape defined

    However, if I try capturing from the screen given the size and offset of the child window, then I risk losing data when another window floats ontop of it, I switch to another tab while recording, I resize the child window, or move the child window. Instead, I'd like to use ffmpeg to capture from specifically that child window.

    Ideas ? Tips ? Maybe some other hacks to accomplish this ? Thanks :)