Recherche avancée

Médias (1)

Mot : - Tags -/publicité

Autres articles (80)

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

  • (Dés)Activation de fonctionnalités (plugins)

    18 février 2011, par

    Pour gérer l’ajout et la suppression de fonctionnalités supplémentaires (ou plugins), MediaSPIP utilise à partir de la version 0.2 SVP.
    SVP permet l’activation facile de plugins depuis l’espace de configuration de MediaSPIP.
    Pour y accéder, il suffit de se rendre dans l’espace de configuration puis de se rendre sur la page "Gestion des plugins".
    MediaSPIP est fourni par défaut avec l’ensemble des plugins dits "compatibles", ils ont été testés et intégrés afin de fonctionner parfaitement avec chaque (...)

  • Activation de l’inscription des visiteurs

    12 avril 2011, par

    Il est également possible d’activer l’inscription des visiteurs ce qui permettra à tout un chacun d’ouvrir soit même un compte sur le canal en question dans le cadre de projets ouverts par exemple.
    Pour ce faire, il suffit d’aller dans l’espace de configuration du site en choisissant le sous menus "Gestion des utilisateurs". Le premier formulaire visible correspond à cette fonctionnalité.
    Par défaut, MediaSPIP a créé lors de son initialisation un élément de menu dans le menu du haut de la page menant (...)

Sur d’autres sites (9268)

  • ffmpeg - Understand images to video output, players show different images and lengths

    8 juillet 2023, par Matt C

    I'm using multiple images to create a video with each image on a 1-second long frame. This is the command I'm using :

    


     ffmpeg -framerate 1 -i 'image%d.jpg' -c:v libx264 -r 1 -pix_fmt yuv420p out.mp4


    


    This seems straightforward and exactly what many others have done with success. However, the output I get is an mp4 which windows file explorer says is 4 seconds long, and is different in VLC and Windows media player and neither is the desired output.

    


    In Windows : the video plays for 4 seconds with a black screen and at this point the time line at the bottom is filled up at 4 seconds, indicating the video is over. But it keeps playing, for another 4 seconds. And the last 4 seconds (from 0:04 to 0:07) is actually the desired output.

    


    





    


    


    


    


    



    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    Frame Image
    1 black screen
    2 black screen
    3 black screen
    4 black screen
    5 image1.jpg
    6 image2.jpg
    7 image3.jpg
    8 image4.jpg

    


    


    In VLC : the video shows last image supplied as input for 3 seconds, followed by the second to last image for 1 second.

    


    





    


    


    


    


    



    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    Frame Image
    1 image4.jpg
    2 image4.jpg
    3 image4.jpg
    4 image3.jpg

    


    


    Questions :

    


      

    1. How/Why are these different in different players ?
    2. 


    3. Why, in VLC, are only two images showing up, and why would one of them last for 3 seconds ?
    4. 


    5. In Windows, why/how is the video 8 seconds long but shows up as 4 seconds both in the file explorer and in the actual media player ?
    6. 


    7. How do I get the desired output, and what caused my case to not work as it did for seemingly most others ?
    8. 


    


  • FFMPEG : i need audio channels 7 & 8 to be the main audio track for a video

    10 avril 2013, par lo_fye

    I have a video with 8 channels of audio.

    I need tracks 7 (Left Stereo) and 8 (Right Stereo) to be the audio for the video (which I'm converting to flv).

    I've tried playing with -filter_complex and the join, amix, and amerge filters, as well as the -map parameter, but I can't seem to find the right combination of values :-/

    Output :

    /usr/local/bin/ffmpeg-1.0/bin/ffmpeg -i '/folder/video_name.mov' -f 'flv' \
    -s '320x240' -b '250k' -aspect '4:3' -ac 1 -ab '64k' -ar '22050' -y \
    /folder/video_name.flv

    ffmpeg version N-46241-g09ea482 Copyright (c) 2000-2012 the FFmpeg developers
     built on Nov  5 2012 07:33:09 with gcc 4.1.2 (GCC) 20080704 (Red Hat 4.1.2-46)
     configuration: --prefix=/usr/local/bin/ffmpeg-1.0
     libavutil      52.  1.100 / 52.  1.100
     libavcodec     54. 70.100 / 54. 70.100
     libavformat    54. 35.100 / 54. 35.100
     libavdevice    54.  3.100 / 54.  3.100
     libavfilter     3. 21.105 /  3. 21.105
     libswscale      2.  1.101 /  2.  1.101
     libswresample   0. 16.100 /  0. 16.100
    Guessed Channel Layout for  Input Stream #0.1 : mono
    Guessed Channel Layout for  Input Stream #0.2 : mono
    Guessed Channel Layout for  Input Stream #0.3 : mono
    Guessed Channel Layout for  Input Stream #0.4 : mono
    Guessed Channel Layout for  Input Stream #0.5 : mono
    Guessed Channel Layout for  Input Stream #0.6 : mono
    Guessed Channel Layout for  Input Stream #0.7 : mono
    Guessed Channel Layout for  Input Stream #0.8 : mono
    Guessed Channel Layout for  Input Stream #0.9 : mono
    Guessed Channel Layout for  Input Stream #0.10 : mono
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/folder/video_name.mov':
     Metadata:
       major_brand     : qt
       minor_version   : 537199360
       compatible_brands: qt
       creation_time   : 2013-04-03 19:45:26
     Duration: 00:00:39.03, start: 0.000000, bitrate: 122149 kb/s
       Stream #0:0(eng): Video: prores (apch / 0x68637061), yuv422p10le, 1920x1080, 110585 kb/s, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 23976 tbn, 23976 tbc
       Metadata:
         creation_time   : 2013-04-03 19:45:26
         handler_name    : Apple Alias Data Handler
         timecode        : 00:59:53:00
       Stream #0:1(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
       Metadata:
         creation_time   : 2013-04-03 19:45:26
         handler_name    : Apple Alias Data Handler
       Stream #0:2(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
       Metadata:
         creation_time   : 2013-04-03 19:45:26
         handler_name    : Apple Alias Data Handler
       Stream #0:3(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
       Metadata:
         creation_time   : 2013-04-03 19:45:26
         handler_name    : Apple Alias Data Handler
       Stream #0:4(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
       Metadata:
         creation_time   : 2013-04-03 19:45:26
         handler_name    : Apple Alias Data Handler
       Stream #0:5(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
       Metadata:
         creation_time   : 2013-04-03 19:45:26
         handler_name    : Apple Alias Data Handler
       Stream #0:6(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
       Metadata:
         creation_time   : 2013-04-03 19:45:26
         handler_name    : Apple Alias Data Handler
       Stream #0:7(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
       Metadata:
         creation_time   : 2013-04-03 19:45:26
         handler_name    : Apple Alias Data Handler
       Stream #0:8(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
       Metadata:
         creation_time   : 2013-04-03 19:45:26
         handler_name    : Apple Alias Data Handler
       Stream #0:9(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
       Metadata:
         creation_time   : 2013-04-03 19:45:26
         handler_name    : Apple Alias Data Handler
       Stream #0:10(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
       Metadata:
         creation_time   : 2013-04-03 19:45:26
         handler_name    : Apple Alias Data Handler
       Stream #0:11(eng): Data: none (tmcd / 0x64636D74)
       Metadata:
         creation_time   : 2013-04-03 19:45:30
         handler_name    : Apple Alias Data Handler
         timecode        : 00:59:53:00
    Please use -b:a or -b:v, -b is ambiguous
    Output #0, flv, to '/folder/video_name.flv':
     Metadata:
       major_brand     : qt
       minor_version   : 537199360
       compatible_brands: qt
       encoder         : Lavf54.35.100
       Stream #0:0(eng): Video: flv1 ([2][0][0][0] / 0x0002), yuv420p, 320x240 [SAR 1:1 DAR 4:3], q=2-31, 250 kb/s, 1k tbn, 23.98 tbc
       Metadata:
         creation_time   : 2013-04-03 19:45:26
         handler_name    : Apple Alias Data Handler
         timecode        : 00:59:53:00
       Stream #0:1(eng): Audio: adpcm_swf ([1][0][0][0] / 0x0001), 22050 Hz, mono, s16, 88 kb/s
       Metadata:
         creation_time   : 2013-04-03 19:45:26
         handler_name    : Apple Alias Data Handler
    Stream mapping:
     Stream #0:0 -> #0:0 (prores -> flv)
     Stream #0:1 -> #0:1 (pcm_s24le -> adpcm_swf)
    Press [q] to stop, [?] for help
    frame=   33 fps=0.0 q=2.0 size=     108kB time=00:00:01.99 bitrate= 442.4kbits/s    
    frame=   66 fps= 65 q=2.0 size=     225kB time=00:00:02.97 bitrate= 619.0kbits/s    
    frame=   99 fps= 65 q=2.0 size=     341kB time=00:00:04.96 bitrate= 561.8kbits/s    
    frame=  136 fps= 67 q=2.0 size=     400kB time=00:00:05.99 bitrate= 547.5kbits/s    
    frame=  177 fps= 70 q=3.0 size=     482kB time=00:00:07.98 bitrate= 494.3kbits/s    
    frame=  210 fps= 69 q=3.7 size=     590kB time=00:00:08.96 bitrate= 539.7kbits/s    
    frame=  240 fps= 68 q=6.3 size=     660kB time=00:00:10.01 bitrate= 539.7kbits/s    
    frame=  264 fps= 65 q=6.7 size=     719kB time=00:00:11.01 bitrate= 535.2kbits/s    
    frame=  288 fps= 63 q=8.4 size=     772kB time=00:00:12.02 bitrate= 526.1kbits/s    
    frame=  312 fps= 62 q=15.4 size=     829kB time=00:00:13.65 bitrate= 497.4kbits/s    
    frame=  336 fps= 60 q=10.4 size=     875kB time=00:00:14.02 bitrate= 511.1kbits/s    
    frame=  360 fps= 59 q=10.6 size=     916kB time=00:00:15.01 bitrate= 499.9kbits/s    
    frame=  383 fps= 58 q=17.8 size=     957kB time=00:00:15.97 bitrate= 490.6kbits/s    
    frame=  411 fps= 58 q=6.5 size=    1008kB time=00:00:17.97 bitrate= 459.3kbits/s    
    frame=  437 fps= 57 q=9.7 size=    1046kB time=00:00:18.99 bitrate= 451.3kbits/s    
    frame=  460 fps= 57 q=7.7 size=    1086kB time=00:00:20.01 bitrate= 444.6kbits/s    
    frame=  489 fps= 57 q=11.3 size=    1144kB time=00:00:20.99 bitrate= 446.3kbits/s    
    frame=  512 fps= 56 q=10.3 size=    1182kB time=00:00:22.01 bitrate= 439.8kbits/s    
    frame=  535 fps= 55 q=21.5 size=    1225kB time=00:00:22.98 bitrate= 436.7kbits/s    
    frame=  564 fps= 55 q=18.3 size=    1280kB time=00:00:24.00 bitrate= 436.8kbits/s    
    frame=  587 fps= 55 q=8.5 size=    1311kB time=00:00:24.98 bitrate= 429.7kbits/s    
    frame=  610 fps= 54 q=11.9 size=    1349kB time=00:00:26.00 bitrate= 424.9kbits/s    
    frame=  636 fps= 54 q=7.5 size=    1383kB time=00:00:26.98 bitrate= 419.8kbits/s    
    frame=  659 fps= 54 q=9.6 size=    1421kB time=00:00:28.00 bitrate= 415.6kbits/s    
    frame=  683 fps= 54 q=20.0 size=    1471kB time=00:00:29.02 bitrate= 415.1kbits/s    
    frame=  711 fps= 54 q=6.4 size=    1518kB time=00:00:30.00 bitrate= 414.5kbits/s    
    frame=  742 fps= 54 q=6.2 size=    1558kB time=00:00:31.02 bitrate= 411.5kbits/s    
    frame=  774 fps= 54 q=2.5 size=    1601kB time=00:00:33.01 bitrate= 397.1kbits/s    
    frame=  816 fps= 55 q=2.0 size=    1632kB time=00:00:34.50 bitrate= 387.6kbits/s    
    frame=  861 fps= 56 q=2.0 size=    1670kB time=00:00:35.99 bitrate= 380.1kbits/s    
    frame=  905 fps= 57 q=2.0 size=    1706kB time=00:00:38.03 bitrate= 367.4kbits/s    
    frame=  936 fps= 58 q=2.0 Lsize=    1730kB time=00:00:39.05 bitrate= 362.8kbits/s
    video:1278kB audio:423kB subtitle:0 global headers:0kB muxing overhead 1.654557%
  • FFMpeg Coding in C : Encoder returns EOF at first interaction. Encoder not opened correctly ? [closed]

    26 février, par Davidhohey

    as I'm fairly new to FFMpeg Programming and C in general, the code looks like a mess.

    


    I have smashed my head against a wall trying to get this code to work for about a week.

    


    int decode_encode_pipeline(AVFormatContext *Input_Format_Context, AVFormatContext *Output_Format_Context, int *streams_list){

    const AVCodec *DECodec, *ENCodec;
    AVCodecContext *DECodecContext = NULL, *ENCodecContext = NULL;
    AVCodecParameters *CodecParameters = NULL;
    AVDictionary *opts = NULL;
    AVPacket *Packet;
    AVFrame *Frame;
    int check;

    Packet = av_packet_alloc();
    if(!Packet){
    
        printf("\nFehler bei Allocating Packet");
    
        return 0;
    
    }

    Frame = av_frame_alloc();
    if(!Frame){
    
        printf("\nFehler bei Allocating Frame");
    
        return 0;
    
    }

    CodecParameters = Input_Format_Context->streams[Packet->stream_index]->codecpar;
    if(!CodecParameters){

        printf("\nCodecParameters konnte nicht erstellt oder zugewiesen werden.");

    }

    DECodec = avcodec_find_decoder(CodecParameters->codec_id);
    if(!DECodec){
    
        printf("\nCodec nicht gefunden");
    
        return 0;
    
    }

    DECodecContext = avcodec_alloc_context3(DECodec);
    if (!DECodecContext){
    
        printf("\nFehler bei Allocating CodecContext");
    
        return 0;
    
    }

    ENCodec = avcodec_find_encoder(CodecParameters->codec_id);
    if(!DECodec){
    
        printf("\nCodec nicht gefunden");
    
        return 0;
    
    }

    ENCodecContext = avcodec_alloc_context3(ENCodec);
    if (!ENCodecContext){
    
        printf("\nFehler bei Allocating CodecContext");
    
        return 0;
    
    }

    check = avformat_write_header(Output_Format_Context, &opts);
    if(check < 0){

        printf("\nFehler beim Öffnen des Output Files.");
        
        return 1;

    }

    avcodec_parameters_to_context(DECodecContext, CodecParameters);
    avcodec_parameters_to_context(ENCodecContext, CodecParameters);

    ENCodecContext->width = DECodecContext->width;
    ENCodecContext->height = DECodecContext->height;
    ENCodecContext->bit_rate = DECodecContext->bit_rate;
    ENCodecContext->time_base = (AVRational){1, 30};
    ENCodecContext->framerate = DECodecContext->framerate;
    ENCodecContext->gop_size = DECodecContext->gop_size;
    ENCodecContext->max_b_frames = DECodecContext->max_b_frames;
    ENCodecContext->pix_fmt = DECodecContext->pix_fmt;
    if(ENCodec->id == AV_CODEC_ID_H264){

        av_opt_set(ENCodecContext->priv_data, "preset", "slow", 0);

    }

    check = avcodec_open2(DECodecContext, DECodec, NULL);
    if(check < 0){
    
        printf("\nFehler bei Öffnen von DECodec");
    
        return 1;
    
    }

    check = avcodec_open2(ENCodecContext, ENCodec, NULL);
    if(check < 0){
    
        printf("\nFehler bei Öffnen von ENCodec");
    
        return 1;
    
    }

    while(1){
    
        check = av_read_frame(Input_Format_Context, Packet);
        if(check < 0){
        
            break;
        
        }

        AVStream *in_stream, *out_stream;

        in_stream  = Input_Format_Context->streams[Packet->stream_index];
        out_stream = Output_Format_Context->streams[Packet->stream_index];

        if(in_stream->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && Packet->stream_index == streams_list[Packet->stream_index]){

            check = avcodec_send_packet(DECodecContext, Packet);
            if(check < 0){

                printf("\nFehler bei Encoding");

                return 1;

            }

            AVPacket *EncodedPacket;
            EncodedPacket = av_packet_alloc();
            if(!EncodedPacket){
        
                printf("\nFehler bei Allocating Packet");
        
                return 1;
        
            }

            /*While Loop Decoding*/
            while(check >= 0){
    
                check = avcodec_receive_frame(DECodecContext, Frame);
                if(check == AVERROR(EAGAIN)){
        
                    continue;
        
                }else if(check == AVERROR_EOF){
                    
                    break;
                    
                }else if(check < 0){
        
                    printf("\nFehler bei Decoding");
        
                    return 1;
        
                }

                /*Convert Colorspace*/
                struct SwsContext *SwsContexttoRGB = sws_getContext(Frame->width, Frame->height, Frame->format, Frame->width, Frame->height, AV_PIX_FMT_RGB24, SWS_BILINEAR, NULL, NULL, NULL);
                struct SwsContext *SwsContexttoOriginal = sws_getContext(Frame->width, Frame->height, AV_PIX_FMT_RGB24, Frame->width, Frame->height, Frame->format, SWS_BILINEAR, NULL, NULL, NULL);
                if(!SwsContexttoRGB || !SwsContexttoOriginal){

                    printf("\nSwsContext konnte nicht befüllt werden.");

                    return 1;

                }   

                if(Frame->linesize < 0){

                    printf("\nFehler: linesize ist negativ und nicht kompatibel\n");

                    return 1;

                }

                AVFrame *RGBFrame;
                RGBFrame = av_frame_alloc();
                if(!RGBFrame){

                    printf("\nFehler bei der Reservierung für den RGBFrame");

                    return 1;

                }
                /*
                int number_bytes = av_image_get_buffer_size(AV_PIX_FMT_RGB24, Frame->width, Frame->height, 1);
                if(number_bytes < 0){

                    printf("\nFehler bei der Berechnung der benoetigten Bytes fuer Konvertierung");

                    return 1;

                }
                
                uint8_t *rgb_buffer = (uint8_t *)av_malloc(number_bytes*sizeof(uint8_t));
                if(rgb_buffer == NULL){

                    printf("\nFehler bei der Reservierung für den RGBBuffer");

                    return 1;

                }

                check = av_image_fill_arrays(RGBFrame->data, RGBFrame->linesize, rgb_buffer, AV_PIX_FMT_RGB24, Frame->width, Frame->height, 1);
                if(check < 0){

                    printf("\nFehler bei der Zuweisung der RGB Daten");

                    return 1;

                }*/

                //sws_scale(SwsContexttoRGB, (const uint8_t * const *)Frame->data, Frame->linesize, 0, Frame->height, RGBFrame->data, RGBFrame->linesize);
                sws_scale_frame(SwsContexttoRGB, Frame, RGBFrame);
                printf("\nIch habe die Daten zu RGB konvertiert.");

                //sws_scale(SwsContexttoOriginal, (const uint8_t * const *)RGBFrame->data, RGBFrame->linesize, 0, Frame->height, Frame->data, Frame->linesize);
                sws_scale_frame(SwsContexttoOriginal, RGBFrame, Frame);
                printf("\nIch habe die Daten zurück ins Original konvertiert.");

                Frame->format = ENCodecContext->pix_fmt;
                Frame->width  = ENCodecContext->width;
                Frame->height = ENCodecContext->height;
                
                check = av_frame_get_buffer(Frame, 0);
                if(check < 0){
        
                    printf("\nFehler bei Allocating Frame Buffer");
        
                    return 1;
        
                }

                /* Encoding */
                check = av_frame_make_writable(Frame);
                if(check < 0){

                    printf("\nFehler bei Make Frame Writable");

                    return 1;

                }

                encode(ENCodecContext, Frame, EncodedPacket, Output_Format_Context);

                sws_freeContext(SwsContexttoRGB);
                sws_freeContext(SwsContexttoOriginal);
                av_frame_free(&RGBFrame);
                //av_free(rgb_buffer);

            }

            /* Flushing Encoder */
            encode(ENCodecContext, NULL, EncodedPacket, Output_Format_Context);

            //avcodec_flush_buffers(DECodecContext);
            //avcodec_flush_buffers(ENCodecContext);

            av_packet_free(&EncodedPacket);

        }else{

            av_interleaved_write_frame(Output_Format_Context, Packet);

        }

    }

    av_write_trailer(Output_Format_Context); 

    /* Memory Free */
    avcodec_free_context(&DECodecContext);
    avcodec_free_context(&ENCodecContext);
    avcodec_parameters_free(&CodecParameters);
    av_frame_free(&Frame);
    av_packet_free(&Packet);

    return 0;

}



    


    The function encode looks as follows :

    


    static void encode(AVCodecContext *ENCodecContext, AVFrame *Frame, AVPacket *EncodedPacket, AVFormatContext *Output_Format_Context){

    int check;



    check = avcodec_send_frame(ENCodecContext, Frame);
    if(check == AVERROR(EAGAIN)){
        printf("\nEAGAIN");
    } 
    if(check == AVERROR_EOF){
        printf("\nEOF");
    }
    if(check == AVERROR(EINVAL)){
        printf("\nEINVAL");
    }
    if(check == AVERROR(ENOMEM)){
        printf("\nENOMEM");
    }
    if(check < 0){

        printf("\nFehler bei Encoding Send Frame. Check = %d", check);

        return;

    }

    while(check >= 0){

        check = avcodec_receive_packet(ENCodecContext, EncodedPacket);
        if(check == AVERROR(EAGAIN) || check == AVERROR_EOF){

            return;

        }else if(check < 0){

            printf("\nFehler bei Encoding");

            return;

        }

        if (av_interleaved_write_frame(Output_Format_Context, EncodedPacket) < 0) {

            printf("\nFehler beim Muxen des Paketes.");
            break;

        }

        av_packet_unref(EncodedPacket);

    }

    return;

}


    


    The program should decode a video into the individual frames convert them to RGB24, so I can work with the raw data of the frame, then convert it back to the original format and encode the frames.

    


    The encoder doesn't play nice, as I get an EOF error at avcodec_send_frame().
But I couldn't figure it out why the encoder behaves like this.
And yes I have read the docs and example files, but either I'm massivly missing a crucial detail or I'm just ****.

    


    Any and all help will be and is massivly appreciated.

    


    PS. : The used libraries are libavutil, libavformat, libavcodec, libswscale. All installed with the "-dev" suffix through linux commandline. Should all be the version 7.0 libraries.

    


    Thanks in advance.
With best regards.

    


      

    • Read the docs
    • 


    • Shifting the encoding step out of the decoding while loop
    •