Recherche avancée

Médias (91)

Autres articles (17)

  • Les tâches Cron régulières de la ferme

    1er décembre 2010, par

    La gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
    Le super Cron (gestion_mutu_super_cron)
    Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...)

  • Configuration spécifique pour PHP5

    4 février 2011, par

    PHP5 est obligatoire, vous pouvez l’installer en suivant ce tutoriel spécifique.
    Il est recommandé dans un premier temps de désactiver le safe_mode, cependant, s’il est correctement configuré et que les binaires nécessaires sont accessibles, MediaSPIP devrait fonctionner correctement avec le safe_mode activé.
    Modules spécifiques
    Il est nécessaire d’installer certains modules PHP spécifiques, via le gestionnaire de paquet de votre distribution ou manuellement : php5-mysql pour la connectivité avec la (...)

  • Contribute to documentation

    13 avril 2011

    Documentation is vital to the development of improved technical capabilities.
    MediaSPIP welcomes documentation by users as well as developers - including : critique of existing features and functions articles contributed by developers, administrators, content producers and editors screenshots to illustrate the above translations of existing documentation into other languages
    To contribute, register to the project users’ mailing (...)

Sur d’autres sites (5045)

  • How to record screen using FFMPEG in Background and Stop It

    23 juillet 2022, par Tammam

    I'm making a video meeting application and implementing from this repository https://github.com/boratanrikulu/quik.do and I will make a screen record if I access the room/create room server side using FFMPEG. but I have a problem because after I access the FFMPEG command, the command does not run in the background so the handler to access the room does not run. I will also make a function to stop recording that does not affect the application (the application will still run)

    


    here my code

    


    func RoomCreate(c *fiber.Ctx) error {
    fileName := "out.mp4"
    fmt.Println(fileName)
    if len(os.Args) > 1 {
        fileName = os.Args[1]
    }
    // Record to video and wait for enter key asynchronously
    fmt.Printf("Starting...press enter to exit...")
    errCh := make(chan error, 2)
    ctx, _ := context.WithCancel(context.Background())
    // Record
    go func() { errCh <- recordToVideo(ctx, fileName) }()
    

    //The following program from FFMPEG will stop if you press enter, and will wait here so it doesn't enter create room
    // Wait for enter
    go func() {
        fmt.Scanln()
        errCh <- nil
    }()
    err := <-errCh
    //cancelFn()
    if err != nil && err != context.Canceled {
        log.Fatalf("Execution failed: %v", err)
    }
    // Wait a bit...
    //time.Sleep(4 * time.Second)
    return c.Redirect(fmt.Sprintf("/room/%s", guuid.New().String()))
}

func recordToVideo(ctx context.Context, fileName string) error {
    ctx, cancelFn := context.WithCancel(ctx)
    defer cancelFn()
    // Build ffmpeg
    ffmpeg := exec.Command("ffmpeg",
        "-f", "gdigrab",
        "-framerate", "30",
        "-i", "desktop",
        fileName,
    )
    // Stdin for sending data
    stdin, err := ffmpeg.StdinPipe()
    if err != nil {
        return err
    }
    //var buf bytes.Buffer
    defer stdin.Close()
    // Run it in the background
    errCh := make(chan error, 1)

    go func() {
        fmt.Printf("Executing: %v\n", strings.Join(ffmpeg.Args, " "))
        //Here if
        out, err := ffmpeg.CombinedOutput()
        fmt.Printf("FFMPEG output:\n%v\n", string(out))
        errCh <- err
    }()
    // Just start sending a bunch of frames
    for {
        // Check if we're done, otherwise go again
        select {
        case <-ctx.Done():
            return ctx.Err()
        case err := <-errCh:
            return err
        default:
        }
    }
}


    


    How do I get the command to run in the background ? and how to stop recording without stopping the application ?

    


  • fftools/ffmpeg : stop using OutputStream.frame_number in print_report()

    31 mars 2022, par Anton Khirnov
    fftools/ffmpeg : stop using OutputStream.frame_number in print_report()
    

    This field means different things when the video is encoded (number of
    frames emitted to the encoding sync queue/encoder by the video sync
    code) or copied (number of packets sent to the muxer sync queue).

    Print the value of packets_written instead, which means the same thing
    in both cases. It is also more accurate, since packets may be dropped by
    the sync queue or bitstream filters.

    • [DH] fftools/ffmpeg.c
  • fftools/ffmpeg : stop using av_stream_get_end_pts()

    1er avril 2022, par Anton Khirnov
    fftools/ffmpeg : stop using av_stream_get_end_pts()
    

    It retrieves the muxer's internal timestamp with under-defined
    semantics. Continuing to use this value would also require
    synchronization once the muxer is moved to a separate thread.

    Replace the value with last_mux_dts.

    • [DH] fftools/ffmpeg.c