Recherche avancée

Médias (2)

Mot : - Tags -/doc2img

Autres articles (62)

  • 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 (...)

  • Mise à disposition des fichiers

    14 avril 2011, par

    Par défaut, lors de son initialisation, MediaSPIP ne permet pas aux visiteurs de télécharger les fichiers qu’ils soient originaux ou le résultat de leur transformation ou encodage. Il permet uniquement de les visualiser.
    Cependant, il est possible et facile d’autoriser les visiteurs à avoir accès à ces documents et ce sous différentes formes.
    Tout cela se passe dans la page de configuration du squelette. Il vous faut aller dans l’espace d’administration du canal, et choisir dans la navigation (...)

  • 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 (...)

Sur d’autres sites (11739)

  • FFMpeg : write h264 stream to mp4 container without changes

    3 mars 2017, par Bumblebee

    Good day.

    For brevity, the code omits error handling and memory management.

    I want to capture h264 video stream and pack it to mp4 container without changes. Since i don’t control the source of stream, i can not make assumptions about stream structure. In this way i must probe input stream.

       AVProbeData probeData;
       probeData.buf_size = s->BodySize();
       probeData.buf = s->GetBody();
       probeData.filename = "";

       AVInputFormat* inFormat = av_probe_input_format(&probeData, 1);  

    This code correctly defines h264 stream.

    Next, i create input format context,

       unsigned char* avio_input_buffer = reinterpret_cast<unsigned> (av_malloc(AVIO_BUFFER_SIZE));

       AVIOContext* avio_input_ctx = avio_alloc_context(avio_input_buffer, AVIO_BUFFER_SIZE,
           0, this, &amp;read_packet, NULL, NULL);

       AVFormatContext* ifmt_ctx = avformat_alloc_context();
       ifmt_ctx->pb = avio_input_ctx;

       int ret = avformat_open_input(&amp;ifmt_ctx, NULL, inFormat, NULL);
    </unsigned>

    set image size,

       ifmt_ctx->streams[0]->codec->width = ifmt_ctx->streams[0]->codec->coded_width = width;
       ifmt_ctx->streams[0]->codec->height = ifmt_ctx->streams[0]->codec->coded_height = height;

    create output format context,

       unsigned char* avio_output_buffer = reinterpret_cast<unsigned>(av_malloc(AVIO_BUFFER_SIZE));

       AVIOContext* avio_output_ctx = avio_alloc_context(avio_output_buffer, AVIO_BUFFER_SIZE,
           1, this, NULL, &amp;write_packet, NULL);

       AVFormatContext* ofmt_ctx = nullptr;
       avformat_alloc_output_context2(&amp;ofmt_ctx, NULL, "mp4", NULL);
       ofmt_ctx->pb = avio_output_ctx;

       AVDictionary* dict = nullptr;
       av_dict_set(&amp;dict, "movflags", "faststart", 0);
       av_dict_set(&amp;dict, "movflags", "frag_keyframe+empty_moov", 0);

       AVStream* outVideoStream = avformat_new_stream(ofmt_ctx, nullptr);

       avcodec_copy_context(outVideoStream->codec, ifmt_ctx->streams[0]->codec);

       ret = avformat_write_header(ofmt_ctx, &amp;dict);
    </unsigned>

    Initialization is done. Further there is a shifting packets from h264 stream to mp4 container. I dont calculate pts and dts, because source packet has AV_NOPTS_VALUE in them.

       AVPacket pkt;
       while (...)
       {
           ret = av_read_frame(ifmt_ctx, &amp;pkt);
           ret = av_interleaved_write_frame(ofmt_ctx, &amp;pkt);
           av_free_packet(&amp;pkt);
       }

    Further i write trailer and free allocated memory. That is all. Code works and i got playable mp4 file.

    Now the problem : the stream characteristics of the resulting file is not completely consisent with the characteristics of the source stream. In particular, fps and bitrate is higher than it should be.

    As sample, below is output ffplay.exe for source stream

    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'd:/movies/source.mp4':0/0
    Metadata:
        major_brand     : isom
        minor_version   : 1
        compatible_brands: isom
        creation_time   : 2014-04-14T13:03:54.000000Z
    Duration: 00:00:58.08, start: 0.000000, bitrate: 12130 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661),yuv420p, 1920x1080, 12129 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc (default)
    Metadata:
        handler_name    : VideoHandler
    Switch subtitle stream from #-1 to #-1 vq= 1428KB sq=    0B f=0/0
    Seek to 49% ( 0:00:28) of total duration ( 0:00:58)       B f=0/0
        30.32 M-V: -0.030 fd=  87 aq=    0KB vq= 1360KB sq=    0B f=0/0  

    and for resulting stream (contains part of source stream)

    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'd:/movies/target.mp4':f=0/0
    Metadata:
        major_brand     : isom
        minor_version   : 512
        compatible_brands: isomiso2avc1iso6mp41
        encoder         : Lavf57.56.101
    Duration: 00:00:11.64, start: 0.000000, bitrate: 18686 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1920x1080, 18683 kb/s, 38.57 fps, 40 tbr, 90k tbn, 50 tbc (default)
    Metadata:
        handler_name    : VideoHandler
    Switch subtitle stream from #-1 to #-1 vq= 2309KB sq=    0B f=0/0
        5.70 M-V:  0.040 fd= 127 aq=    0KB vq= 2562KB sq=    0B f=0/0  

    So there is a question, what i missed when copying stream ? I will be grateful for any help.

    Best regards

  • PowerShell script ffmpeg

    30 mars 2017, par Karma Elite

    Being the good Windows systems admin that I am, I’m finally getting around to learning PowerShell. With that being said, I have no idea what I’m doing (surprise, surprise).

    I thought that it would be a good learning experience for me to play around with PowerShell at home, far away from my production environment. Recently, I’ve begun using FFMPEG to convert all of my .mkv files to .mp4 so I could have better playback support to my PlayStation 3 via Plex, and thought that this would be a good learning experience.

    The command I’ve been running is as follows :

    ffmpeg -i OldVideoName.mkv -vcodec copy -acodec ac3 OldVideoName.mp4

    What I want is have a PowerShell script that will run once, scanning a folder and all sub-folders for .mkv files (Get-ChildItem ".*.mkv"), transcode them to .mp4 via the above command, and place them in the same location as the .mkv with the same naming scheme.

    Example of running the script with D :\Videos as the target directory :

    D :\Videos\home_dvr\movies\video1.mkv —> D :\Videos\home_dvr\video1.mp4
    D :\Videos\home_dvr\tv\video2.mkv —> D :\Videos\home_dvr\tv\video2.mp4

    As you can guess, I can’t figure it out for the life of me. Here’s the latest attempt before giving up.

       $oldvid = Get-ChildItem .\*.mkv -Recurse
       $newvid = $oldvid.Name.split(‘.’)[0]; ForEach-Object {
               .\ffmpeg.exe -i $oldvid -y -vcodec copy -acodec ac3 $newvid".mp4”
       }

    Any help would be appreciated !

  • What ffmpeg output format (-f) do I use for two-pass encoding of mkv files

    16 mai 2020, par Mav-Tek

    I recently backed up one of my Blu-ray movies and it is about 36 GB. Using ffmpeg to get info from the video, it is in h.264 in an mkv container. I want to shrink the file size using h.265 compression and targeting a bitrate of 4 Mbits/s so that I can stream it while I am away from my home over my Plex server. My upload speed is limited to 5 Mb/s.

    &#xA;&#xA;

    Although I could easily do this with simple software, I want to learn more coding. I have found the proper ffmpeg code two do a two-pass encoding, but in all examples I have found, they use an output format of mp4 but state that "you need to specify an output format (with -f) that matches the output format you will use in pass 2." I assume my "output format" is mkv, but that does not allow my code to run. Can someone explain to me what is meant by output format and what I should be using to encode this from h264 to h265 in a mkv container ?

    &#xA;&#xA;

    ffmpeg -y -i input.mkv -c:v libx265 -b:v 4M -x265-params pass=1 -an -f mkv /dev/null &amp;&amp; \ ffmpeg -i "Arrival (2016).mkv" -c:v libx265 -b:v 4M -x265-params pass=2 -c:a copy output.mkv &#xA;

    &#xA;&#xA;

    Also, in order to make this work on my windows PC, I am trying to learn how to edit some of the arguments to allow it to work in Powershell. I believe this is how I would do that :

    &#xA;&#xA;

    (ffmpeg -y -i input.mkv -c:v libx265 -b:v 4M -x265-params pass=1 -an -f mkv NUL) -AND (^ ffmpeg -i "Arrival (2016).mkv" -c:v libx265 -b:v 4M -x265-params pass=2 -c:a copy  output.mkv)&#xA;

    &#xA;