Recherche avancée

Médias (1)

Mot : - Tags -/epub

Autres articles (52)

  • MediaSPIP v0.2

    21 juin 2013, par

    MediaSPIP 0.2 est la première version de MediaSPIP stable.
    Sa date de sortie officielle est le 21 juin 2013 et est annoncée ici.
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Comme pour la version précédente, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

  • Submit bugs and patches

    13 avril 2011

    Unfortunately a software is never perfect.
    If you think you have found a bug, report it using our ticket system. Please to help us to fix it by providing the following information : the browser you are using, including the exact version as precise an explanation as possible of the problem if possible, the steps taken resulting in the problem a link to the site / page in question
    If you think you have solved the bug, fill in a ticket and attach to it a corrective patch.
    You may also (...)

  • Librairies et logiciels spécifiques aux médias

    10 décembre 2010, par

    Pour un fonctionnement correct et optimal, plusieurs choses sont à prendre en considération.
    Il est important, après avoir installé apache2, mysql et php5, d’installer d’autres logiciels nécessaires dont les installations sont décrites dans les liens afférants. Un ensemble de librairies multimedias (x264, libtheora, libvpx) utilisées pour l’encodage et le décodage des vidéos et sons afin de supporter le plus grand nombre de fichiers possibles. Cf. : ce tutoriel ; FFMpeg avec le maximum de décodeurs et (...)

Sur d’autres sites (10417)

  • FFmpeg pauses the extraction of frames at 20% (but when closed, dumps all frames to disk)

    1er décembre 2019, par Nicke Manarin

    I’m trying to extract frames from a video using FFmpeg. I want to be able to control which frames to extract, by setting the start, end and FPS values.

    The problem is, that after the extraction begins, FFmpeg stops after 20% of the way. It always stops there, independently of the frame count.

    This is the code that I’m using :

    var start = TimeSpan.FromMilliseconds(SelectionSlider.LowerValue);
    var end = TimeSpan.FromMilliseconds(SelectionSlider.UpperValue);
    var fps = FpsIntegerUpDown.Value;
    var count = CountFrames(); //Duration x FPS
    var folder = Path.Combine(RootFolder, "Import");
    var path = Path.Combine(folder, $"%0{count.ToString().Length + 1}d.png");

    try
    {
       //Create temporary folder.
       if (Directory.Exists(folder))
           Directory.Delete(folder, true);

       Directory.CreateDirectory(folder);

       CaptureProgressBar.Value = 0;
       CaptureProgressBar.Maximum = count;

       var info = new ProcessStartInfo(UserSettings.All.FfmpegLocation)
       {
           Arguments = $" -i \"{VideoPath}\" -vsync 2 -progress pipe:1 -vf scale={VideoWidth}:{VideoHeight} -ss {start:hh\\:mm\\:ss\\.fff} -to {end:hh\\:mm\\:ss\\.fff} -hide_banner -c:v png -r {fps} -vframes {count} \"{path}\"",
           CreateNoWindow = true,
           ErrorDialog = false,
           UseShellExecute = false,
           RedirectStandardError = true,
           RedirectStandardOutput = true
        };

        _process = new Process();
        _process.OutputDataReceived += (sender, e) =>
        {
            Debug.WriteLine(e.Data);

            if (string.IsNullOrEmpty(e.Data))
                return;

            var parsed = e.Data.Split('=');

            switch (parsed[0])
            {
                case "frame":
                    Dispatcher?.InvokeAsync(() => { CaptureProgressBar.Value = Convert.ToDouble(parsed[1]); });
                    break;

                case "progress":
                    if (parsed[1] == "end" && IsLoaded)
                        GetFiles(folder); //Get all files from the output folder.

                    break;
             }
       };

    _process.ErrorDataReceived += (sender, e) =>
    {
       if (!string.IsNullOrEmpty(e.Data))
           throw new Exception("Error while capturing frames with FFmpeg.") { HelpLink = $"Command:\n\r{info.Arguments}\n\rResult:\n\r{e.Data}" };
    };

    _process.StartInfo = info;
    _process.Start();
    _process.BeginOutputReadLine();

    //Just to wait...
    await Task.Factory.StartNew(() => _process.WaitForExit());

    So, after starting the import process, FFmpeg will extract some frames, and after reaching around 20%, it will pause the extraction.

    frame=95
    fps=5.79
    stream_0_0_q=-0.0
    bitrate=N/A
    total_size=N/A
    out_time_us=1400000
    out_time_ms=1400000
    out_time=00:00:01.400000
    dup_frames=0
    drop_frames=0
    speed=0.0854x

    progress=continue
    frame=106
    fps=6.25
    stream_0_0_q=-0.0
    bitrate=N/A
    total_size=N/A
    out_time_us=1583333
    out_time_ms=1583333
    out_time=00:00:01.583333
    dup_frames=0
    drop_frames=0
    speed=0.0933x
    progress=continue

    frame=117
    fps=6.67
    stream_0_0_q=-0.0
    bitrate=N/A
    total_size=N/A
    out_time_us=1766667
    out_time_ms=1766667
    out_time=00:00:01.766667
    dup_frames=0
    drop_frames=0
    speed=0.101x
    progress=continue

    Something strange : if I close the app while is the extraction is paused, suddenly FFmpeg will dump all frames to the folder.

    Why would FFmpeg pause the extraction at all (But continue doing in memory) ?
    Is there any way for me to force FFmpeg to extract the frames normally ?

    PS : It does not happen while using FFmpeg via cmd, so it must be something in code.

  • How to save (record) rtsp stream to the disk storage without artifacts and missing seconds ?

    20 septembre 2019, par Bogdan Rudnytskyi

    I need to save (record) rtsp stream to the disk storage.
    I am using nginx-module and ffmpeg for it.
    Here the config for enable recording :

    rtmp {
       live on;
       hls on;
       hls_fragment 5s;
       server {
           listen 1935;
           application cam1 {
               hls_path /tmp/cam1;
           }
           exec_static ffmpeg -rtsp_transport tcp -i rtsp://... -c copy -f flv rtmp://.../cam1/stream;
       }
    }

    Config is creating the flv files, each duration of 5 second.
    Then we need to merge all got files in one file by command :

    ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.flv

    After concated files we are got a problem. When previous 5 seconds end and start next 5 seconds we have artifacts and missing 0.5-1 second.

    Please, get me help with saving rtsp stream without artifacts and missing seconds.

  • Although ffmpeg installed, unable to save mp4 file on disk

    2 janvier 2020, par yannis

    Although I have installed ffmpeg, matplotlib reports that MovieWriter ffmpeg is unavailable and the MP4 file created is empty.

    import numpy as np
    from matplotlib import pyplot as plt
    from matplotlib import animation

    # First set up the figure, the axis, and the plot element we want to animate
    fig = plt.figure()
    ax = plt.axes(xlim=(0, 2), ylim=(-2, 2))
    line, = ax.plot([], [], lw=2)

    # initialization function: plot the background of each frame
    def init():
       line.set_data([], [])
       return line,

    # animation function.  This is called sequentially
    def animate(i):
       x = np.linspace(0, 2, 1000)
       y = np.sin(2 * np.pi * (x - 0.01 * i))
       line.set_data(x, y)
       return line,

    # call the animator.  blit=True means only re-draw the parts that have changed.
    anim = animation.FuncAnimation(fig, animate, init_func=init,
                                  frames=200, interval=20, blit=True)

    # save the animation as an mp4.  This requires ffmpeg or mencoder to be
    # installed.  The extra_args ensure that the x264 codec is used, so that
    # the video can be embedded in html5.  You may need to adjust this for
    # your system: for more information, see
    # http://matplotlib.sourceforge.net/api/animation_api.html
    anim.save('basic_animation.mp4', fps=30, extra_args=['-vcodec', 'libx264'])

    plt.show()

    I have even added the line plt.switch_backend('TkAgg') proposed in another post, nothing changed. Here is my matplotlib :

    Name: matplotlib
    Version: 2.1.0
    Summary: Python plotting package
    Home-page: http://matplotlib.org

    my ffmpeg :

    Name: ffmpeg
    Version: 1.4
    Summary: ffmpeg python package url [https://github.com/jiashaokun/ffmpeg]
    Home-page: https://github.com/jiashaokun/ffmpeg

    and my Python version :

    Python 3.6.5

    The error I get is :

    /usr/local/lib/python3.6/site-packages/matplotlib/animation.py:1218: UserWarning: MovieWriter ffmpeg unavailable
     warnings.warn("MovieWriter %s unavailable" % writer)

    This error has been reported many times on stackoverflow, each time the solution is either to install ffmpeg (mine is installed) or to add that extra line about the backend, which hasn’t changed anything for me.

    Curiously enough the plt.show()command works and I do preview an animation, but the only file format to save it is (nonanimated) PNG.