Recherche avancée

Médias (21)

Mot : - Tags -/Nine Inch Nails

Autres articles (111)

  • Dépôt de média et thèmes par FTP

    31 mai 2013, par

    L’outil MédiaSPIP traite aussi les média transférés par la voie FTP. Si vous préférez déposer par cette voie, récupérez les identifiants d’accès vers votre site MédiaSPIP et utilisez votre client FTP favori.
    Vous trouverez dès le départ les dossiers suivants dans votre espace FTP : config/ : dossier de configuration du site IMG/ : dossier des média déjà traités et en ligne sur le site local/ : répertoire cache du site web themes/ : les thèmes ou les feuilles de style personnalisées tmp/ : dossier de travail (...)

  • Keeping control of your media in your hands

    13 avril 2011, par

    The vocabulary used on this site and around MediaSPIP in general, aims to avoid reference to Web 2.0 and the companies that profit from media-sharing.
    While using MediaSPIP, you are invited to avoid using words like "Brand", "Cloud" and "Market".
    MediaSPIP is designed to facilitate the sharing of creative media online, while allowing authors to retain complete control of their work.
    MediaSPIP aims to be accessible to as many people as possible and development is based on expanding the (...)

  • Gestion générale des documents

    13 mai 2011, par

    MédiaSPIP ne modifie jamais le document original mis en ligne.
    Pour chaque document mis en ligne il effectue deux opérations successives : la création d’une version supplémentaire qui peut être facilement consultée en ligne tout en laissant l’original téléchargeable dans le cas où le document original ne peut être lu dans un navigateur Internet ; la récupération des métadonnées du document original pour illustrer textuellement le fichier ;
    Les tableaux ci-dessous expliquent ce que peut faire MédiaSPIP (...)

Sur d’autres sites (11076)

  • libavcodec : ffprobe on file encoded with FFV1 codec reports "read_quant_table error"

    20 novembre 2016, par Ali Alidoust

    I’m using the following code to encode a series of frames into an mkv or avi file with FFV1 encoding :

      HRESULT Session::createContext(LPCSTR filename, UINT width, UINT height, UINT fps_num, UINT fps_den) {
       LOG("Exporting to file: ", filename);

       AVCodecID codecId = AV_CODEC_ID_FFV1;
       this->pixelFormat = AV_PIX_FMT_YUV420P;

       this->codec = avcodec_find_encoder(codecId);
       RET_IF_NULL(this->codec, "Could not create codec", E_FAIL);

       this->oformat = av_guess_format(NULL, filename, NULL);
       RET_IF_NULL(this->oformat, "Could not create format", E_FAIL);
       this->oformat->video_codec = codecId;
       this->width = width;
       this->height = height;
       this->codecContext = avcodec_alloc_context3(this->codec);
       RET_IF_NULL(this->codecContext, "Could not allocate context for the codec", E_FAIL);

       this->codecContext->codec = this->codec;
       this->codecContext->codec_id = codecId;

       this->codecContext->pix_fmt = pixelFormat;
       this->codecContext->width = this->width;
       this->codecContext->height = this->height;
       this->codecContext->time_base.num = fps_den;
       this->codecContext->time_base.den = fps_num;

       this->codecContext->gop_size = 1;


       RET_IF_FAILED_AV(avformat_alloc_output_context2(&fmtContext, this->oformat, NULL, NULL), "Could not allocate format context", E_FAIL);
       RET_IF_NULL(this->fmtContext, "Could not allocate format context", E_FAIL);

       this->fmtContext->oformat = this->oformat;
       this->fmtContext->video_codec_id = codecId;

       this->stream = avformat_new_stream(this->fmtContext, this->codec);
       RET_IF_NULL(this->stream, "Could not create new stream", E_FAIL);
       this->stream->time_base = this->codecContext->time_base;
       RET_IF_FAILED_AV(avcodec_parameters_from_context(this->stream->codecpar, this->codecContext), "Could not convert AVCodecContext to AVParameters", E_FAIL);

       if (this->fmtContext->oformat->flags & AVFMT_GLOBALHEADER)
       {
           this->codecContext->flags |= CODEC_FLAG_GLOBAL_HEADER;
       }

       av_opt_set_int(this->codecContext->priv_data, "coder", 0, 0);
       av_opt_set_int(this->codecContext->priv_data, "context", 1, 0);
       av_opt_set_int(this->codecContext->priv_data, "slicecrc", 1, 0);
       //av_opt_set_int(this->codecContext->priv_data, "slicecrc", 1, 0);
       //av_opt_set_int(this->codecContext->priv_data, "pix_fmt", pixelFormat, 0);

       RET_IF_FAILED_AV(avcodec_open2(this->codecContext, this->codec, NULL), "Could not open codec", E_FAIL);
       RET_IF_FAILED_AV(avio_open(&this->fmtContext->pb, filename, AVIO_FLAG_WRITE), "Could not open output file", E_FAIL);
       RET_IF_NULL(this->fmtContext->pb, "Could not open output file", E_FAIL);
       RET_IF_FAILED_AV(avformat_write_header(this->fmtContext, NULL), "Could not write header", E_FAIL);

       frame = av_frame_alloc();
       RET_IF_NULL(frame, "Could not allocate frame", E_FAIL);
       frame->format = this->codecContext->pix_fmt;
       frame->width = width;
       frame->height = height;
       return S_OK;
    }

    HRESULT Session::writeFrame(IMFSample * pSample) {
       IMFMediaBuffer *mediaBuffer = NULL;
       BYTE *pDataNV12 = NULL;
       DWORD length;

       RET_IF_FAILED(pSample->ConvertToContiguousBuffer(&mediaBuffer), "Could not convert IMFSample to contagiuous buffer", E_FAIL);
       RET_IF_FAILED(mediaBuffer->GetCurrentLength(&length), "Could not get buffer length", E_FAIL);
       RET_IF_FAILED(mediaBuffer->Lock(&pDataNV12, NULL, NULL), "Could not lock the buffer", E_FAIL);
       BYTE *pDataYUV420P = new BYTE[length];
       this->convertNV12toYUV420P(pDataNV12, pDataYUV420P, this->width, this->height);
       RET_IF_FAILED(av_image_fill_arrays(frame->data, frame->linesize, pDataYUV420P, pixelFormat, this->width, this->height, 1), "Could not fill the frame with data from the buffer", E_FAIL);
       LOG_IF_FAILED(mediaBuffer->Unlock(), "Could not unlock the buffer");

       frame->pts = av_rescale_q(this->pts++, this->codecContext->time_base, this->stream->time_base);

       AVPacket pkt;

       av_init_packet(&pkt);
       pkt.data = NULL;
       pkt.size = 0;

       RET_IF_FAILED_AV(avcodec_send_frame(this->codecContext, frame), "Could not send the frame to the encoder", E_FAIL);
       delete[] pDataYUV420P;
       if (SUCCEEDED(avcodec_receive_packet(this->codecContext, &pkt))) {
           RET_IF_FAILED_AV(av_interleaved_write_frame(this->fmtContext, &pkt), "Could not write the received packet.", E_FAIL);
       }

       av_packet_unref(&pkt);

       return S_OK;
    }

    HRESULT Session::endSession() {
       LOG("Ending session...");

       LOG("Closing files...")
       LOG_IF_FAILED_AV(av_write_trailer(this->fmtContext), "Could not finalize the output file.");
       LOG_IF_FAILED_AV(avio_close(this->fmtContext->pb), "Could not close the output file.");
       LOG_IF_FAILED_AV(avcodec_close(this->codecContext), "Could not close the codec.");
       av_free(this->codecContext);
       LOG("Done.")
       return S_OK;
    }

    The problem is that the generated file is not playable in either VLC or MPC-HC. However, MPC-HC reports following info in file properties :

    General
    Unique ID                      : 202978442142665779317960161865934977227 (0x98B439D9BE859109BD5EC00A62A238CB)
    Complete name                  : T:\Test.mkv
    Format                         : Matroska
    Format version                 : Version 4 / Version 2
    File size                      : 24.6 MiB
    Duration                       : 147ms
    Overall bit rate               : 1 401 Mbps
    Writing application            : Lavf57.57.100
    Writing library                : Lavf57.57.100

    Video
    ID                             : 1
    Format                         : FFV1
    Format version                 : Version 0
    Codec ID                       : V_MS/VFW/FOURCC / FFV1
    Duration                       : 147ms
    Width                          : 1 280 pixels
    Height                         : 720 pixels
    Display aspect ratio           : 16:9
    Frame rate mode                : Constant
    Frame rate                     : 1 000.000 fps
    Color space                    : YUV
    Chroma subsampling             : 4:2:0
    Bit depth                      : 8 bits
    Compression mode               : Lossless
    Default                        : Yes
    Forced                         : No
    DURATION                       : 00:00:00.147000000
    coder_type                     : Golomb Rice

    Something to note is that it reports 1000 FPS which is weird since I’ve set AVCodecContext::time_base in the code.

    UPDATE 1 :

    I managed to set the correct fps by setting time_base property of the stream :

    this->stream->time_base.den = fps_num;
    this->stream->time_base.num = fps_den;

    VLC plays the output file but it shows VLC logo instead of the video, as if there is no video stream in the file.

    UPDATE 2 :

    Cleaned up the code. Now if I set codecId = AV_CODEC_ID_MPEG2VIDEO the output file is valid and is played in both VLC and MPC-HC. Using ffprobe on the file with FFV1 encoding yields the following result :

    C:\root\apps\ffmpeg>ffprobe.exe t:\test.avi
    ffprobe version 3.2 Copyright (c) 2007-2016 the FFmpeg developers
     built with gcc 5.4.0 (GCC)
     configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --disable-w32threads --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-libebur128 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
     libavutil      55. 34.100 / 55. 34.100
     libavcodec     57. 64.100 / 57. 64.100
     libavformat    57. 56.100 / 57. 56.100
     libavdevice    57.  1.100 / 57.  1.100
     libavfilter     6. 65.100 /  6. 65.100
     libswscale      4.  2.100 /  4.  2.100
     libswresample   2.  3.100 /  2.  3.100
     libpostproc    54.  1.100 / 54.  1.100
    [ffv1 @ 00000000006b83a0] read_quant_table error
    Input #0, avi, from 't:\test.avi':
     Metadata:
       encoder         : Lavf57.56.100
     Duration: 00:00:04.94, start: 0.000000, bitrate: 107005 kb/s
       Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), yuv420p, 1280x720, 107717 kb/s, 29.97 fps, 29.97 tbr, 29.97 tbn, 29.97 tbc
  • LibVLC DXVA2 Windows C++ Hardware Acceleration

    15 novembre 2016, par Sergiu Vlad

    I want to decode a h264 RTSP stream using DXVA2 Accelerated decoder. In VLC it does work but in my code have the following output :

    avcodec generic warning: threaded frame decoding is not compatible with DXVA2, disabled
    avcodec generic debug: available hardware decoder output format 61 (dxva2_vld)
    avcodec generic debug: available hardware decoder output format 128 (d3d11va_vld)
    avcodec generic debug: available software decoder output format 12 (yuvj420p)
    core generic debug: looking for hw decoder module matching "any": 1 candidates
    core generic debug: no hw decoder modules matched

    Is this a problem with NV12 conversion ? Is there a way to force DXVA2 ?

    Thanks

    CODE :

       #include
    #include
    #include
    #include
    #include
    #include <iostream>

    #include
    #include <ctime>
    #include <vlc></vlc>vlc.h>

    // RTSP address
    const char* rtspAddress = "rtsp://admin:admin@192.168.0.245/live_st1";
    // Video resolution WxH
    cv::Size rtspRes(1920, 1080);

    struct VideoDataStruct
    {
       int param;
    };

    int done = 0;
    libvlc_media_player_t *mp;
    unsigned int videoBufferSize = 0;
    uint8_t *videoBuffer = 0;

    void cbVideoPrerender(void *p_video_data, uint8_t **pp_pixel_buffer, int size)
    {
       if (size > videoBufferSize || !videoBuffer)
       {
           printf("Reallocate raw video buffer %d bytes\n", size);
           free(videoBuffer);
           videoBuffer = (uint8_t *)malloc(size);
           videoBufferSize = size;
       }

       // videoBuffer = (uint8_t *)malloc(size);
       *pp_pixel_buffer = videoBuffer;
    }
    void cbVideoPostrender(void *p_video_data, uint8_t *p_pixel_buffer, int width, int height, int pixel_pitch, int size, int64_t pts)
    {
       // Unlocking
       //CloseHandle(hMutex);

    }

    //static void handleEvent(const libvlc_event_t* pEvt, void* pUserData)
    //{
    //    libvlc_time_t time;
    //    switch (pEvt->type)
    //    {
    //    case libvlc_MediaPlayerTimeChanged:
    //        time = libvlc_media_player_get_time(mp);
    //        printf("MediaPlayerTimeChanged %lld ms\n", (long long)time);
    //        break;
    //    case libvlc_MediaPlayerEndReached:
    //        printf("MediaPlayerEndReached\n");
    //        done = 1;
    //        break;
    //    default:
    //        printf("%s\n", libvlc_event_type_name(pEvt->type));
    //    }
    //}

    clock_t startTime[8];
    int framesReceivedThisSecond[8];

    int main()
    {


       // VLC pointers
       libvlc_instance_t *inst;
       libvlc_media_t *m;
       void *pUserData = 0;

       VideoDataStruct dataStruct;

       // VLC options
       char smem_options[1000];

       // RV24
       sprintf(smem_options
               , "#transcode{vcodec=RV24}:smem{"
                 "video-prerender-callback=%lld,"
                 "video-postrender-callback=%lld,"
                 "video-data=%lld,"
                 "no-time-sync},"
               , (long long int)(intptr_t)(void*)&amp;cbVideoPrerender
               , (long long int)(intptr_t)(void*)&amp;cbVideoPostrender
               , (long long int)(intptr_t)(void*)&amp;dataStruct
               );

       const char * const vlc_args[] = {
           "-I", "dummy",            // Don't use any interface
           "--ignore-config",        // Don't use VLC's config
           "--extraintf=logger",     // Log anything
           "--verbose=4",            // Be verbose
           //        "--ffmpeg-hw",
           //        "-vvv",
           "--ffmpeg-hw",
           "--avcodec-hw=any",
           "--sout", smem_options    // Stream to memory

       };

       // Launch VLC
       inst = libvlc_new(sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args);

       // Create a new item
       m = libvlc_media_new_location(inst, rtspAddress);



       // Create a media player playing environement
       mp = libvlc_media_player_new_from_media(m);

       //    libvlc_event_manager_t* eventManager = libvlc_media_player_event_manager(mp);
       //    libvlc_event_attach(eventManager, libvlc_MediaPlayerTimeChanged, handleEvent, pUserData);
       //    libvlc_event_attach(eventManager, libvlc_MediaPlayerEndReached, handleEvent, pUserData);
       //    libvlc_event_attach(eventManager, libvlc_MediaPlayerPositionChanged, handleEvent, pUserData);

       //libvlc_video_set_format(mp, "RV24", 240, 320, 240 * 3 );

       // play the media_player
       libvlc_media_player_play(mp);


       // Create a window for displaying the video
       std::string winName("Demo Video");
       cv::namedWindow(winName, cv::WINDOW_AUTOSIZE);

       cv::Mat frame;
       int key = 0;

       // Endless loop, press Esc to quit
       while (key != 27)
       {

           // Check for invalid input
           if (videoBuffer)
           {
               // CV_8UC3 = 8 bits, 3 chanels
               frame = cv::Mat(rtspRes, CV_8UC3, videoBuffer);
           }


           if (frame.rows == 0 || frame.cols == 0)
               continue;

           int stream_number=0;
           framesReceivedThisSecond[stream_number]++;
           long    duration = ( std::clock() - startTime[stream_number] );
           if(duration>1000)
           {
               std::cout&lt;&lt;"\n"&lt;&lt;"FPS "&lt;code></ctime></iostream>

    FULL LOG :

    core libvlc debug: Copyright © 1996-2016 the VideoLAN team
    core libvlc debug: revision 2.2.3-37-g888b7e89
    core libvlc debug: configured with ../extras/package/win32/../../../configure  '--enable-update-check' '--enable-lua' '--enable-faad' '--enable-flac' '--enable-theora' '--enable-twolame' '--enable-quicktime' '--enable-avcodec' '--enable-merge-ffmpeg' '--enable-dca' '--enable-mpc' '--enable-libass' '--enable-x264' '--enable-schroedinger' '--enable-realrtsp' '--enable-live555' '--enable-dvdread' '--enable-shout' '--enable-goom' '--enable-caca' '--disable-sdl' '--enable-qt' '--enable-skins2' '--enable-sse' '--enable-mmx' '--enable-libcddb' '--enable-zvbi' '--disable-telx' '--enable-nls' '--host=i686-w64-mingw32' '--build=x86_64-pc-linux-gnu' 'build_alias=x86_64-pc-linux-gnu' 'host_alias=i686-w64-mingw32' 'PKG_CONFIG_PATH=/opt/intel/opencl:' 'PKG_CONFIG_LIBDIR=/home/svlad/DEV/vlc/contrib/i686-w64-mingw32/lib/pkgconfig'
    core libvlc debug: using multimedia timers as clock source
    core libvlc debug:  min period: 1 ms, max period: 1000000 ms
    core libvlc debug: searching plug-in modules
    core libvlc debug: loading plugins cache file C:\DEV\VLCStreamProcessor\build-untitled-Desktop_Qt_5_5_1_MSVC2013_32bit-Debug\debug\plugins\plugins.dat
    core libvlc debug: recursively browsing `C:\DEV\VLCStreamProcessor\build-untitled-Desktop_Qt_5_5_1_MSVC2013_32bit-Debug\debug\plugins'
    core libvlc debug: saving plugins cache C:\DEV\VLCStreamProcessor\build-untitled-Desktop_Qt_5_5_1_MSVC2013_32bit-Debug\debug\plugins\plugins.dat
    core libvlc debug: plug-ins loaded: 418 modules
    core libvlc debug: translation test: code is "C"
    core libvlc debug: CPU has capabilities MMX MMXEXT SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 FPU
    core playlist debug: creating audio output
    core audio output debug: looking for audio output module matching "any": 6 candidates
    directsound audio output debug: found 2 devices
    core audio output debug: using audio output module "directsound"
    core playlist debug: keeping audio output
    core interface debug: looking for interface module matching "logger,none": 16 candidates
    logger interface: VLC media player - 2.2.4 Weatherwax
    logger interface: Copyright © 1996-2016 the VideoLAN team
    logger interface:
    Warning: if you cannot access the GUI anymore, open a command-line window, go to the directory where you installed VLC and run "vlc -I qt"
    logger interface: using logger.
    logger interface warning: no log filename provided, using `vlc-log.txt'
    logger interface debug: opening logfile `vlc-log.txt'
    core libvlc debug: VLC media player - 2.2.4 Weatherwax
    core libvlc debug: Copyright © 1996-2016 the VideoLAN team
    core libvlc debug: revision 2.2.3-37-g888b7e89
    core libvlc debug: configured with ../extras/package/win32/../../../configure  '--enable-update-check' '--enable-lua' '--enable-faad' '--enable-flac' '--enable-theora' '--enable-twolame' '--enable-quicktime' '--enable-avcodec' '--enable-merge-ffmpeg' '--enable-dca' '--enable-mpc' '--enable-libass' '--enable-x264' '--enable-schroedinger' '--enable-realrtsp' '--enable-live555' '--enable-dvdread' '--enable-shout' '--enable-goom' '--enable-caca' '--disable-sdl' '--enable-qt' '--enable-skins2' '--enable-sse' '--enable-mmx' '--enable-libcddb' '--enable-zvbi' '--disable-telx' '--enable-nls' '--host=i686-w64-mingw32' '--build=x86_64-pc-linux-gnu' 'build_alias=x86_64-pc-linux-gnu' 'host_alias=i686-w64-mingw32' 'PKG_CONFIG_PATH=/opt/intel/opencl:' 'PKG_CONFIG_LIBDIR=/home/svlad/DEV/vlc/contrib/i686-w64-mingw32/lib/pkgconfig'
    core interface debug: using interface module "logger"
    core generic debug: creating audio output
    core audio output debug: looking for audio output module matching "any": 6 candidates
    directsound audio output debug: found 2 devices
    core audio output debug: using audio output module "directsound"
    core generic debug: keeping audio output
    core input debug: Creating an input for 'rtsp://192.168.0.245/live_st1'
    core stream output debug: using sout chain=`transcode{vcodec=RV24}:smem{video-prerender-callback=15667245,video-postrender-callback=15667630,video-data=3471900,no-time-sync},'
    core stream output debug: stream=`smem'
    core stream out debug: looking for sout stream module matching "smem": 22 candidates
    core stream out debug: set config option: sout-smem-video-prerender-callback to 15667245
    core stream out debug: set config option: sout-smem-video-postrender-callback to 15667630
    core stream out debug: set config option: sout-smem-video-data to 3471900
    core stream out debug: set config option: sout-smem-time-sync to (null)
    core stream out debug: using sout stream module "stream_out_smem"
    core stream output debug: stream=`transcode'
    core stream out debug: looking for sout stream module matching "transcode": 22 candidates
    core stream out debug: set config option: sout-transcode-vcodec to RV24
    stream_out_transcode stream out debug: Checking video codec mapping for RV24 got RV24
    stream_out_transcode stream out debug: codec video=RV24 0x0 scaling: 0.000000 0kb/s
    core stream out debug: using sout stream module "stream_out_transcode"
    core input debug: using timeshift granularity of 50 MiB, in path 'C:\Users\BCDVideo\AppData\Local\Temp'
    core input debug: `rtsp://admin:admin@192.168.0.245/live_st1' gives access `rtsp' demux `' path `admin:admin@192.168.0.245/live_st1'
    core input debug: specified demux `any'
    core input debug: creating demux: access='rtsp' demux='any' location='admin:admin@192.168.0.245/live_st1' file='\\admin:admin@192.168.0.245\live_st1'
    core demux debug: looking for access_demux module matching "rtsp": 12 candidates
    live555 demux debug: version 2016.01.12
    live555 demux debug: RTP subsession 'video/H264'
    core input debug: selecting program id=0
    live555 demux debug: setup start: 0.000000 stop:0.000000
    live555 demux debug: We have a timeout of 60 seconds
    live555 demux debug: spawned timeout thread
    live555 demux debug: play start: 0.000000 stop:0.000000
    core demux debug: using access_demux module "live555"
    core decoder debug: looking for packetizer module matching "any": 23 candidates
    packetizer_h264 decoder debug: found NAL_SPS (sps_id=0)
    packetizer_h264 decoder debug: found NAL_PPS (pps_id=0 sps_id=0)
    core decoder debug: using packetizer module "packetizer_h264"
    core input debug: starting in sync mode
    core demux meta debug: looking for meta reader module matching "any": 2 candidates
    lua demux meta debug: Trying Lua scripts in C:\Users\BCDVideo\AppData\Roaming\vlc\lua\meta\reader
    lua demux meta debug: Trying Lua scripts in C:\DEV\VLCStreamProcessor\build-untitled-Desktop_Qt_5_5_1_MSVC2013_32bit-Debug\debug\lua\meta\reader
    core demux meta debug: no meta reader modules matched
    core input debug: `rtsp://admin:admin@192.168.0.245/live_st1' successfully opened
    core input debug: switching to async mode
    core input debug: Buffering 0%
    core input debug: Buffering 3%
    core input debug: Buffering 10%
    core stream output debug: adding a new sout input (sout_input:00c21c50)
    core input debug: Buffering 13%
    stream_out_transcode stream out debug: creating video transcoding from fcc=`h264' to fcc=`RV24'
    core input debug: Buffering 16%
    core generic debug: looking for decoder module matching "any": 43 candidates
    core input debug: Buffering 20%
    core input debug: Buffering 23%
    avcodec generic debug: CPU flags: 0x0107d3db
    core input debug: Buffering 30%
    avcodec generic debug: trying to use direct rendering
    core input debug: Buffering 33%
    avcodec generic debug: allowing 4 thread(s) for decoding
    core input debug: Buffering 36%
    avcodec generic warning: threaded frame decoding is not compatible with DXVA2, disabled
    core input debug: Buffering 40%
    avcodec generic debug: avcodec codec (H264 - MPEG-4 AVC (part 10)) started
    core input debug: Buffering 43%
    avcodec generic debug: using slice thread mode with 4 threads
    core input debug: Buffering 50%
    core generic debug: using decoder module "avcodec"
    core input debug: Buffering 53%
    core encoder debug: looking for encoder module matching "any": 20 candidates
    core input debug: Buffering 56%
    core input debug: Buffering 60%
    avcodec encoder debug: CPU flags: 0x0107d3db
    core input debug: Buffering 63%
    avcodec encoder debug: Time base for probing setted to 1/1000000
    core input debug: Buffering 70%
    avcodec encoder debug: Time base set to 1/1000000
    core input debug: Buffering 73%
    avcodec encoder debug: found encoder Raw video
    core input debug: Buffering 76%
    core encoder debug: using encoder module "avcodec"
    core input debug: Buffering 80%
    core encoder debug: removing module "avcodec"
    core input debug: Buffering 83%
    core input debug: Buffering 90%
    core input debug: Buffering 93%
    core input debug: Buffering 96%
    core input debug: Stream buffering done (1002 ms in 834 ms)
    core input debug: Decoder wait done in 0 ms
    avcodec generic debug: available hardware decoder output format 61 (dxva2_vld)
    avcodec generic debug: available hardware decoder output format 128 (d3d11va_vld)
    avcodec generic debug: available software decoder output format 12 (yuvj420p)
    core generic debug: looking for hw decoder module matching "any": 1 candidates
    core generic debug: no hw decoder modules matched
    avcodec generic warning: plane 0 not aligned
    avcodec generic warning: disabling direct rendering
    stream_out_transcode stream out debug: decoder aspect is 1.761468:1
    stream_out_transcode stream out debug: source pixel aspect is 0.990826:1
    stream_out_transcode stream out debug: scaled pixel aspect is 0.990826:1
    stream_out_transcode stream out debug: source 1920x1080, destination 1920x1080
    stream_out_transcode stream out debug: source fps 30/1, destination 30/1
    stream_out_transcode stream out: input interval 33333 (base 1)
    stream_out_transcode stream out: output interval 33333 (base 1)
    stream_out_transcode stream out debug: encoder aspect is 1920:1090
    core filter debug: looking for video filter2 module matching "any": 58 candidates
    swscale filter debug: 1920x1080 (1920x1090) chroma: J420 -> 1920x1080 (1920x1090) chroma: RV24 with scaling using Bicubic (good quality)
    core filter debug: using video filter2 module "swscale"
    core stream out debug: Filter 'Swscale' (0089a2cc) appended to chain
    stream_out_transcode stream out debug: destination (after video filters) 1920x1090
    core encoder debug: looking for encoder module matching "any": 20 candidates
    avcodec encoder debug: CPU flags: 0x0107d3db
    avcodec encoder debug: Time base for probing setted to 1/30
    avcodec encoder debug: Time base set to 1/30
    avcodec encoder debug: found encoder Raw video
    core encoder debug: using encoder module "avcodec"
    stream_out_transcode stream out warning: Reseting video sync
    stream_out_transcode stream out warning: Reseting video sync
    stream_out_transcode stream out warning: Reseting video sync
    stream_out_transcode stream out warning: Reseting video sync
    avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518755, last: 1518769)
    avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518756, last: 1518769)
    avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518757, last: 1518769)
    avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518758, last: 1518769)
    avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518759, last: 1518769)
    avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518760, last: 1518769)
    avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518761, last: 1518769)
    avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518762, last: 1518769)
    avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518763, last: 1518769)
    avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518764, last: 1518769)
    stream_out_transcode stream out warning: Reseting video sync
    stream_out_transcode stream out warning: Reseting video sync
    avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518784, last: 1518795)
    live555 demux debug: tk->rtpSource->hasBeenSynchronizedUsingRTCP()
    core input error: ES_OUT_RESET_PCR called
    avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518785, last: 1518795)
    core input debug: Buffering 0%
    core input debug: Buffering 3%
    core input debug: Buffering 6%
    core input debug: Buffering 10%
    core input debug: Buffering 13%
    core input debug: Buffering 20%
    core input debug: Buffering 23%
    core input debug: Buffering 26%
    core input debug: Buffering 30%
    core input debug: Buffering 33%
    core input debug: Buffering 40%
    core input debug: Buffering 43%
    core input debug: Buffering 46%
    core input debug: Buffering 50%
    core input debug: Buffering 53%
    core input debug: Buffering 60%
    core input debug: Buffering 63%
    core input debug: Buffering 66%
    core input debug: Buffering 70%
    core input debug: Buffering 73%
    core input debug: Buffering 80%
    core input debug: Buffering 83%
    core input debug: Buffering 86%
    core input debug: Buffering 90%
    core input debug: Buffering 93%
    core input debug: Stream buffering done (1002 ms in 817 ms)
    core input debug: Decoder wait done in 0 ms
    stream_out_transcode stream out warning: Reseting video sync
    stream_out_transcode stream out warning: Reseting video sync
    stream_out_transcode stream out warning: Reseting video sync
    stream_out_transcode stream out warning: Reseting video sync
    avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518834, last: 1518837)
    avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518835, last: 1518837)
    avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518836, last: 1518837)
    avcodec encoder warning: almost fed libavcodec with two frames with the same PTS (1518837)
    stream_out_transcode stream out warning: Reseting video sync
    stream_out_transcode stream out warning: Reseting video sync
  • Problems with FFMPEG concat and/or MP4BOX

    11 novembre 2016, par user3730954

    I’ve been searching for a reliable way to concat a large (>30) number of mp4 files.

    My methods so far have been trying the MP4BOX concat CLI, and FFMPEG’s concat filter (such as ffmpeg -auto_convert 1 -y -f concat -i files.txt -c copy out.mp4).

    Both tools produce the same problem : joining 2 or 3 files seems to work great, but any greater number produces a corrupted mp4 file (such as https://drive.google.com/file/d/0B_mWxBuwYcSgQjQtUnpQeUxVTm8/view). I can create a workaround where I join only 2 videos at a time, until all videos have been joined, but this does not work for an odd number of joins (i.e. 13).

    Why do these methods work on some files, but not others ?

    FFPROBE produces errors as you would expect on these corrupted files :

    error while decoding MB x y, bytestream z
    Reference 2 >= 2
    top block unavailable for requested intra mode

    example FFMPEG output :

    ffmpeg version N-80901-gfebc862 Copyright (c) 2000-2016 the FFmpeg developers
     built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
     configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --mandir=/usr/share/man --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libpulse --enable-libfreetype --enable-gnutls --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr --enable-libxvid --enable-libvidstab
     libavutil      55. 28.100 / 55. 28.100
     libavcodec     57. 48.101 / 57. 48.101
     libavformat    57. 41.100 / 57. 41.100
     libavdevice    57.  0.102 / 57.  0.102
     libavfilter     6. 47.100 /  6. 47.100
     libavresample   3.  0.  0 /  3.  0.  0
     libswscale      4.  1.100 /  4.  1.100
     libswresample   2.  1.100 /  2.  1.100
     libpostproc    54.  0.100 / 54.  0.100
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x36b3a80] Auto-inserting h264_mp4toannexb bitstream filter
    Input #0, concat, from 'twitter-files.txt':
     Duration: N/A, start: 0.000000, bitrate: 415 kb/s
       Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 284 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 130 kb/s
       Metadata:
         handler_name    : SoundHandler
    [mp4 @ 0x36b7dc0] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
       Last message repeated 1 times
    Output #0, mp4, to 'twitter-tmp.mp4':
     Metadata:
       encoder         : Lavf57.41.100
       Stream #0:0(und): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1280x720, q=2-31, 284 kb/s, 25 fps, 25 tbr, 12800 tbn, 12800 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(und): Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, stereo, 130 kb/s
       Metadata:
         handler_name    : SoundHandler
    Stream mapping:
     Stream #0:0 -> #0:0 (copy)
     Stream #0:1 -> #0:1 (copy)
    Press [q] to stop, [?] for help
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x3733160] Auto-inserting h264_mp4toannexb bitstream filter
       Last message repeated 1 times
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x3733140] Auto-inserting h264_mp4toannexb bitstream filter
    [mp4 @ 0x36b7dc0] Packet with invalid duration -512 in stream 1
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x3733140] Auto-inserting h264_mp4toannexb bitstream filter
       Last message repeated 2 times
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x36ba960] Auto-inserting h264_mp4toannexb bitstream filter
    [mp4 @ 0x36b7dc0] Packet with invalid duration -512 in stream 1
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x36ba960] Auto-inserting h264_mp4toannexb bitstream filter
       Last message repeated 4 times
    [mp4 @ 0x36b7dc0] Non-monotonous DTS in output stream 0:0; previous: 306957, current: 306445; changing to 306958. This may result in incorrect timestamps in the output file.
    [mp4 @ 0x36b7dc0] Non-monotonous DTS in output stream 0:0; previous: 306958, current: 306957; changing to 306959. This may result in incorrect timestamps in the output file.
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x36ba960] Auto-inserting h264_mp4toannexb bitstream filter
       Last message repeated 1 times
    frame=  750 fps=0.0 q=-1.0 Lsize=    1088kB time=00:00:30.04 bitrate= 296.6kbits/s speed= 366x

    OSX output :

    ffmpeg version 3.0 Copyright (c) 2000-2016 the FFmpeg developers
     built with Apple LLVM version 7.3.0 (clang-703.0.31)
     configuration: --prefix=/usr/local/Cellar/ffmpeg/3.0 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl --enable-libx264 --enable-libmp3lame --enable-libxvid --enable-libvorbis --enable-libvpx --enable-vda
     libavutil      55. 17.103 / 55. 17.103
     libavcodec     57. 24.102 / 57. 24.102
     libavformat    57. 25.100 / 57. 25.100
     libavdevice    57.  0.101 / 57.  0.101
     libavfilter     6. 31.100 /  6. 31.100
     libavresample   3.  0.  0 /  3.  0.  0
     libswscale      4.  0.100 /  4.  0.100
     libswresample   2.  0.101 /  2.  0.101
     libpostproc    54.  0.100 / 54.  0.100
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9c49808c00] Auto-inserting h264_mp4toannexb bitstream filter
    Input #0, concat, from 'twitter-files.txt':
     Duration: N/A, start: 0.000000, bitrate: 415 kb/s
       Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 284 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 130 kb/s
       Metadata:
         handler_name    : SoundHandler
    Output #0, mp4, to 'tmp-twitter.mp4':
     Metadata:
       encoder         : Lavf57.25.100
       Stream #0:0(und): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1280x720, q=2-31, 284 kb/s, 25 fps, 25 tbr, 12800 tbn, 12800 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(und): Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, stereo, 130 kb/s
       Metadata:
         handler_name    : SoundHandler
    Stream mapping:
     Stream #0:0 -> #0:0 (copy)
     Stream #0:1 -> #0:1 (copy)
    Press [q] to stop, [?] for help
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9c4a005400] Auto-inserting h264_mp4toannexb bitstream filter
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9c4a800000] Auto-inserting h264_mp4toannexb bitstream filter
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9c49800000] Auto-inserting h264_mp4toannexb bitstream filter
    [mp4 @ 0x7f9c4a000c00] Packet with invalid duration -512 in stream 1
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9c49800000] Auto-inserting h264_mp4toannexb bitstream filter
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9c4a800000] Auto-inserting h264_mp4toannexb bitstream filter
       Last message repeated 1 times
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9c49800000] Auto-inserting h264_mp4toannexb bitstream filter
    [mp4 @ 0x7f9c4a000c00] Packet with invalid duration -512 in stream 1
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9c49800000] Auto-inserting h264_mp4toannexb bitstream filter
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9c4a800000] Auto-inserting h264_mp4toannexb bitstream filter
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9c4a005400] Auto-inserting h264_mp4toannexb bitstream filter
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9c4a800e00] Auto-inserting h264_mp4toannexb bitstream filter
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9c49800000] Auto-inserting h264_mp4toannexb bitstream filter
    [mp4 @ 0x7f9c4a000c00] Non-monotonous DTS in output stream 0:0; previous: 306957, current: 306445; changing to 306958. This may result in incorrect timestamps in the output file.
    [mp4 @ 0x7f9c4a000c00] Non-monotonous DTS in output stream 0:0; previous: 306958, current: 306957; changing to 306959. This may result in incorrect timestamps in the output file.
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9c49800000] Auto-inserting h264_mp4toannexb bitstream filter
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9c49010e00] Auto-inserting h264_mp4toannexb bitstream filter
    frame=  750 fps=0.0 q=-1.0 Lsize=    1146kB time=00:00:30.04 bitrate= 312.4kbits/s speed= 192x