Recherche avancée

Médias (91)

Autres articles (95)

  • Mise à jour de la version 0.1 vers 0.2

    24 juin 2013, par

    Explications des différents changements notables lors du passage de la version 0.1 de MediaSPIP à la version 0.3. Quelles sont les nouveautés
    Au niveau des dépendances logicielles Utilisation des dernières versions de FFMpeg (>= v1.2.1) ; Installation des dépendances pour Smush ; Installation de MediaInfo et FFprobe pour la récupération des métadonnées ; On n’utilise plus ffmpeg2theora ; On n’installe plus flvtool2 au profit de flvtool++ ; On n’installe plus ffmpeg-php qui n’est plus maintenu au (...)

  • MediaSPIP version 0.1 Beta

    16 avril 2011, par

    MediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Pour avoir une installation fonctionnelle, 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 (...)

  • Amélioration de la version de base

    13 septembre 2013

    Jolie sélection multiple
    Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
    Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...)

Sur d’autres sites (12696)

  • How to properly abort av_seek_frame on FFmpeg ?

    5 mars 2021, par SuRGeoNix

    Normally, you wouldn't care aborting av_seek_frame as it would be really fast on a local file. However, in my case I use a custom AVIOContext for torrent streaming with custom read/seek functions and I'm not able to abort a single seek request !

    


    I've already tried interrupt callbacks (they will not be called at all), some timeouts (rw_timeout/timeout etc.) but by checking FFmpeg's code didn't find anything at all. My last chance was to try to return on read/seek functions an error (I've tried AVERROR_EXIT) which causes even more problems (memory leaks).

    


    The main issue is with Matroska formats that they need to resync (level-1) and they are trying to scan the whole file.

    


    Unfortunately, I'm using C# .NET with FFmpeg.Autogen bindings which means that I don't have low-level access to play around. My workaround is to re-open the whole format context in case on seek abort (to ensure that the player will continues to play at least)

    


    Hope you have a tip for me !

    


    (By the way for some http/hls web formats interrupt callbacks are supported)

    


  • suitable video encoding for browsers

    26 juin 2022, par seriously

    I was researching how illegal movie streaming services handle all the traffic they get and to understand that I had to follow the steps they perform to get the video data to the users. I got to the stage of video transmission and noticed something that boggled me. Most of the illegal movie streaming sites get their movies/tv-shows through piracy/torrents and even most of the streamers are sister companies of the piracy websites. Now when I took a look at the video encodings of the torrent movies and shows they are h.265 but h.265 is not supported by popular browsers like chrome, firefox edge... Does this mean they (the streamers) have to re-encode every h.265 videos to avc/h.264 before they stream it ? If that's the case, that takes them a huge amount of time to convert their whole movie catalog to h.264 not to mention the space they require to save them. Am I taking a look at this the right way ? Do they really convert and store 2, 3 ... differently encoded video files and stream the suitable one ? Or can they somehow convert the chunks of data they are streaming to h.264 live simultaneously without having to store the h.264 formats hence saving conversion time and space ?

    


  • How to convert a Stream on the fly with FFMpegCore ?

    18 octobre 2023, par Adrian

    For a school project, I need to stream videos that I get from torrents while they are downloading on the server.
When the video is a .mp4 file, there's no problem, but I must also be able to stream .mkv files, and for that I need to convert them into .mp4 before sending them to the client, and I can't find a way to convert my Stream that I get from MonoTorrents with FFMpegCore into a Stream that I can send to my client.

    


    Here is the code I wrote to simply download and stream my torrent :

    


    var cEngine = new ClientEngine();

var manager = await cEngine.AddStreamingAsync(GenerateMagnet(torrent), ) ?? throw new Exception("An error occurred while creating the torrent manager");

await manager.StartAsync();
await manager.WaitForMetadataAsync();

var videoFile = manager.Files.OrderByDescending(f => f.Length).FirstOrDefault();
if (videoFile == null)
    return Results.NotFound();

var stream = await manager.StreamProvider!.CreateStreamAsync(videoFile, true);
return Results.File(stream, contentType: "video/mp4", fileDownloadName: manager.Name, enableRangeProcessing: true);


    


    I saw that the most common way to convert videos is by using ffmpeg. .NET has a package called FFMpefCore that is a wrapper for ffmpeg.

    


    To my previous code, I would add right before the return :

    


    if (!videoFile.Path.EndsWith(".mp4"))
{
    var outputStream = new MemoryStream();
    FFMpegArguments
        .FromPipeInput(new StreamPipeSource(stream), options =>
        {
            options.ForceFormat("mp4");
        })
        .OutputToPipe(new StreamPipeSink(outputStream))
        .ProcessAsynchronously();
    return Results.File(outputStream, contentType: "video/mp4", fileDownloadName: manager.Name, enableRangeProcessing: true);
}


    


    I unfortunately can't get a "live" Stream to send to my client.