Recherche avancée

Médias (0)

Mot : - Tags -/protocoles

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (38)

  • Librairies et binaires spécifiques au traitement vidéo et sonore

    31 janvier 2010, par

    Les logiciels et librairies suivantes sont utilisées par SPIPmotion d’une manière ou d’une autre.
    Binaires obligatoires FFMpeg : encodeur principal, permet de transcoder presque tous les types de fichiers vidéo et sonores dans les formats lisibles sur Internet. CF ce tutoriel pour son installation ; Oggz-tools : outils d’inspection de fichiers ogg ; Mediainfo : récupération d’informations depuis la plupart des formats vidéos et sonores ;
    Binaires complémentaires et facultatifs flvtool2 : (...)

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

  • De l’upload à la vidéo finale [version standalone]

    31 janvier 2010, par

    Le chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
    Upload et récupération d’informations de la vidéo source
    Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
    Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...)

Sur d’autres sites (7308)

  • Using batch, how would you iterate through an array that you don't know how many values it may contain to run a function on each individual variable

    10 mai 2017, par Jay1995

    I have a batch file creating an array of variables it gets from a textfile, as follows :

    for /f "skip=1 tokens=9 delims= " %%a in (%findfile%) do set "_%%a=yes"
    set count = 0
    for /f "tokens=1* delims==#" %%b in ('set _') do (
       set /a count+=1
       set x=%%b
       set location[!count!]=!x:~1!
    )
    set %location%

    I’m trying to get each variable from the array to be looped into a function individually, but have no idea how to do it !!

    The location array storing all the variables has to be called into a for loop and the function I’m trying to get it to loop into is an FFMPEG function :

    for %%i in (%location%\*.mp4) do (if not exist "%%~ni\" MD "%%~ni"

       ffmpeg -i "%%i" -vframes 1 -f image2 -start_number 0
       "%%~ni\%%~ni_Summary_%%3d.jpeg"

    )

    All HELP would be greatly appreciated

  • probing individual klv streams for specific signature/header

    17 juin 2019, par J Heyman

    Currently, the software I support processes the different streams within a video container (.ts, .mp4, .mpg, etc) without any issues as long as there is only one(1) type of each codec stream.

    I’ve recently encountered a video sample that actually contains three(3) identified AV_CODE_ID_SMPTE_KLV streams. As I loop through the three streams, one of them is the stream I need.
    I haven’t been able to figure out an easy way to do the specific query I need (check for known header bytes in the stream).

       ...
       for (i = 0; i < nb_streams; i++) {
          int real_stream_index = program ? program[i] : i;
          AVStream *st          = ic->streams[real_stream_index];
          AVCodecParameters *par = st->codecpar;
          if (par->codec_type != type)
             continue;
          if (id != AV_CODEC_ID_NONE) {
             if (par->codec_id != id)
                continue;
          }
          if (wanted_stream_nb >= 0 && real_stream_index != wanted_stream_nb)
             continue;
          if (type == AVMEDIA_TYPE_AUDIO && !(par->channels && par->sample_rate))
             continue;
          disposition = !(st->disposition & (AV_DISPOSITION_HEARING_IMPAIRED | AV_DISPOSITION_VISUAL_IMPAIRED));
          count = st->codec_info_nb_frames;
          bitrate = par->bit_rate;
          multiframe = FFMIN(5, count);
          if ((best_disposition >  disposition) ||
              (best_disposition == disposition && best_multiframe >  multiframe) ||
              (best_disposition == disposition && best_multiframe == multiframe && best_bitrate >  bitrate) ||
              (best_disposition == disposition && best_multiframe == multiframe && best_bitrate == bitrate && best_count >= count))
             continue;
          best_disposition = disposition;
          best_count   = count;
          best_bitrate = bitrate;
          best_multiframe = multiframe;
          ret          = real_stream_index;

    My thought was to add another || to the complex if{} above, but I haven’t been able to figure out how to do the comparison I need (looking for the header bytes).

    I’ve looked into existing documentation, and thought that accessing the probe_data structure within the AVStream contained within the AVFormatContext structure would give me the first few bytes of the stream. No such luck, as the probe_data structure is empty even though we’ve done a probe on the file itself.

    fprintf(stderr, "Filename: %s\t buf_size: %d\n", st-> probe_data.filename, st-> probe_data.buf_size);
  • Extract individual frames from video and pipe them to StandardOutput in FFmpeg

    13 novembre 2019, par Nicke Manarin

    I’m trying to extract frames from a video using FFmpeg. But instead of letting FFmpeg write the files to disk, I’m trying to get the frames directly from StandardOutput.

    I’m not sure if it’s feasible. I’m expecting to get each frame individually as they get decoded by reading and waiting until all frames are extracted.

    With the current code, I think that I’m getting all frames at once.


    Command

    ffmpeg -i "C:\video.mp4" -r 30 -ss 00:00:10.000 -to 00:01:20.000 -hide_banner -c:v png -f image2pipe -

    Code

    var start = TimeSpan.FromMilliseconds(SelectionSlider.LowerValue);
    var end = TimeSpan.FromMilliseconds(SelectionSlider.UpperValue);

    var info = new ProcessStartInfo(UserSettings.All.FfmpegLocation)
    {
       Arguments = $" -i \"{VideoPath}\" -r {fps} -ss {start:hh\\:mm\\:ss\\.fff} " +
           "-to {end:hh\\:mm\\:ss\\.fff} -hide_banner -c:v png -f image2pipe -",
       CreateNoWindow = true,
       ErrorDialog = false,
       UseShellExecute = false,
       RedirectStandardError = true,
       RedirectStandardOutput = true
    };

    var process = new Process();
    process.StartInfo = info;
    process.Start();

    while (!process.StandardOutput.EndOfStream)
    {
       if (_cancelled)
       {
           process.Kill();
           return;
       }

       //This returns me the entire byte array, of all frames.
       var bytes = default(byte[]);
       using (var memstream = new MemoryStream())
       {
           process.StandardOutput.BaseStream.CopyTo(memstream);
           bytes = memstream.ToArray();
       }
    }

    I also tried to use process.BeginOutputReadLine() and wait for each frame in OutputDataReceived. But it returns parts of each frame, like the 10 first bytes, than other 50 bytes, it’s erratic.

    Is there any way to get the frames separately via the output stream ?