Recherche avancée

Médias (91)

Autres articles (67)

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

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

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

  • FFMpeg muxing h264 to mp4 resultant file is not running

    11 mars 2016, par M.Taha

    I am writing code to mux h264 file into mp4 by using latest FFMPEG 3.0. Muxing is working but the resultant mp4 file is not showing vedio, only the time is running when i play the resultant mp4 file. Kindly try to help to solve this. Please tell me what i am missing. Here is my code :

    int main()
    {  
       avcodec_register_all();

       av_register_all();

       // define AVOutputFormat
       AVOutputFormat *avoutputFormat = NULL;
       avoutputFormat = av_guess_format("mp4", NULL, NULL);
       if (!avoutputFormat) {
       fprintf(stderr, "Could not find suitable output format\n");
       return 1;
       }

       AVFormatContext *avoutFmtCtx = NULL;
       /*Below initialize AVFormatContext.*/
       avformat_alloc_output_context2(&avoutFmtCtx, avoutputFormat, NULL, NULL);

       avoutFmtCtx->oformat = avoutputFormat;
       sprintf_s(avoutFmtCtx->filename, "%s", "Out.mp4");  /*Filling output file name..*/

       if (avoutputFormat->video_codec == AV_CODEC_ID_NONE)
       printf("\n Unsupported format...");

       AVStream * avoutStrm = avformat_new_stream(avoutFmtCtx, 0);

       if (!avoutStrm) {
       _tcprintf(_T("FFMPEG: Could not alloc video stream\n"));        
       }

       AVCodecContext *c = avoutStrm->codec;
       c->codec_id     = avoutputFormat->video_codec;
       c->codec_type   = AVMEDIA_TYPE_VIDEO;
       c->bit_rate     = 2000*1000;
       c->width        = 1920;
       c->height       = 1080;
       AVRational avr;
       avr.den = 30;
       avr.num = 1;

       avoutStrm->time_base = c->time_base = av_add_q(avoutStrm->codec->time_base, avr);

       // Some formats want stream headers to be separate
       if(avoutFmtCtx->oformat->flags & AVFMT_GLOBALHEADER)
       c->flags |= CODEC_FLAG_GLOBAL_HEADER;

       // Open the output container file
       if (avio_open(&avoutFmtCtx->pb, avoutFmtCtx->filename, AVIO_FLAG_WRITE) < 0)
       {
       _tcprintf(_T("FFMPEG: Could not open '%s'\n"), avoutFmtCtx->filename);      
       }

       m_pExtDataBuffer = (uint8_t*)av_malloc(1000 + 1000);
       if(!m_pExtDataBuffer) {
       _tcprintf(_T("FFMPEG: could not allocate required buffer\n"));

       }

       uint8_t SPSbuf[1000];
       uint8_t PPSbuf[1000];
       memcpy(m_pExtDataBuffer, SPSbuf, 1000);            
       memcpy(m_pExtDataBuffer + 1000, PPSbuf, 1000);  

       /* Codec "extradata" conveys the H.264 stream SPS and PPS info (MPEG2: sequence header is housed in SPS buffer, PPS buffer is empty)*/
       c->extradata        = m_pExtDataBuffer;
       c->extradata_size   = 1000 + 1000;

       if(avformat_write_header(avoutFmtCtx,NULL)) {
       _tcprintf(_T("FFMPEG: avformat_write_header error!\n"));

       }

       /* Here do writing data in loop...*/
       int m_nProcessedFramesNum = 0;

       while(1)
       {
       ++m_nProcessedFramesNum;
       AVPacket pkt;
       av_init_packet(&pkt);

       AVCodecContext *c = avoutStrm->codec;
       avoutStrm->pts.val = m_nProcessedFramesNum;
       pkt.stream_index    = avoutStrm->index;

       pkt.data            = /*Filling h.264 data from here... This is valid h264 data*/
       pkt.size            = /*Filling valid h264 data size here...*/
       av_new_packet(&pkt,pkt.size);
       pkt.pts = m_nProcessedFramesNum*512;
       pkt.dts = m_nProcessedFramesNum*512;
       pkt.duration = 512;

       // Write the compressed frame in the media file
       if (av_interleaved_write_frame(avoutFmtCtx, &pkt)) {
       _tcprintf(_T("FFMPEG: Error while writing video frame\n"));        
       }/*End of loop.*/

       av_free_packet(&pkt);      

       }  
       av_write_trailer(avoutFmtCtx);
       avio_close(avoutFmtCtx->pb);
       avformat_free_context(avoutFmtCtx);
    }
  • FFMpeg RGB32 to NV12 using SWScale

    28 avril 2016, par KevinA

    I’m trying to convert RGB32 frames to NV12 Frames to feed into an encoder.

    m_iWidthIn = 1920;
    m_iHeightIn = 1080;
    m_iWidthOut = (((iWidthIn  + 31) >> 5) << 5) //32bit align
    m_heightOut = (((iHeightIn + 31) >> 5) << 5) //32bit align
    m_outputPixelFormat = AV_PIX_FMT_NV12;

    // allocate and fill buffers

    m_sws = ::sws_getContext(m_iWidthIn, m_iHeightIn, AV_PIX_FMT_RGB32, m_iWidthOut, m_iHeightOut, m_outputPixelFormat, SWS_FAST_BILINEAR, nullptr, nullptr, nullptr);
    AVFrame* frameOut = av_frame_alloc();
    frameOut->height = m_iHeightOut;
    frameOut->width = m_iWidthOut;
    frameOut->format = m_outputPixelFormat;
    av_frame_get_buffer(frameOut, 32);
    int linesize[1] = { m_iWidthIn * 4 };
    uint8_t * data[1] = { m_inputBuffer  };
    if (m_bFlip)
    {
       data[0] += linesize[0] * (m_iHeightIn - 1);
       linesize[0] = -linesize[0];
    }
    ::sws_scale(m_sws, data, linesize, 0, m_iHeightIn, frameOut->data, frameOut->linesize);
    ::av_image_copy_to_buffer(pOutputBuffer, lDataLen, frameOut->data, frameOut->linesize, m_outputPixelFormat, m_iWidthOut, m_iHeightOut, 32);

    If I make m_outputPixelFormat AV_PIX_FMT_RGB32 and use a DMO colorspace converter, the video comes out correctly. However if I change it to NV12, I end up with a slanted video with missing data at the bottom.
    I know this is caused by me copying the data incorrectly out of the buffer, but I’m unsure what I’m doing incorrectly.

  • FFMPEG DASH Exemple

    23 janvier 2021, par Diogo Crava

    Would anyone be able to provide me an example of an FFMPEG command converting a simple .mp4 file into DASH format but with segmentation for each resolution (480, 720 and 1080). I found some examples but none of them had segmentation.

    


    Can you also indicate to me which field allows me to do that ?

    


    I would also appreciate it if you gave me an FFMPEG tutorial besides the documentation alone.