Recherche avancée

Médias (1)

Mot : - Tags -/sintel

Autres articles (57)

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

  • Configurer la prise en compte des langues

    15 novembre 2010, par

    Accéder à la configuration et ajouter des langues prises en compte
    Afin de configurer la prise en compte de nouvelles langues, il est nécessaire de se rendre dans la partie "Administrer" du site.
    De là, dans le menu de navigation, vous pouvez accéder à une partie "Gestion des langues" permettant d’activer la prise en compte de nouvelles langues.
    Chaque nouvelle langue ajoutée reste désactivable tant qu’aucun objet n’est créé dans cette langue. Dans ce cas, elle devient grisée dans la configuration et (...)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

Sur d’autres sites (7910)

  • FFMPEG lossless simple & efficient format

    30 octobre 2016, par Adminy

    I took a sample video and ran this code for each image format like this :

    ffmpeg -i test.mkv png/%d.png
    ffmpeg -i test.mkv bmp/%d.bmp

    What I noted is that BMP at 1080P has a fixed size of 5.97 MB (6,266,934 bytes)

                                                              !6,220,800

    Then I did some maths :

    1 byte = 2^8 == 256 possible combinations
    r + g + b form a color (0-255,0-255,0-255)
    bmp = 3 * 1920 * 1080 = 6,220,800 bytes

    So extra is just the file headers ?! (46134 bytes for just headers ?)

    Next thing I noted that PNG size is dynamic and when the image has a lot of repetition is somewhere 2.5mb. Usually its between 10mb and 12mb.

    Also decoding BMP seemed a lot quicker compared to PNG. So there is no point in even looking at PNG. I would like to know why is it so huge over BMP if it has (zlib) compression factor.

    What is the best format to export to in terms of speed and size, preferred if its as simple as reading the file of color bytes ?

  • How to extract frames at 30 fps using FFMPEG APIs ?

    7 septembre 2016, par Amber Beriwal

    We are working on a project that consumes FFMPEG library for video frame extraction.

    We have seen that using command line, ffmpeg is capable of extracting frames at 30 fps using below command. Even using Xuggler, we are able to extract frames at 30 fps.

    ffmpeg -i input.flv -vf fps=1 out%d.png

    But when we use FFMPEG APIs directly in our code, we are getting following results :

    • 720p video (1280 x 720) - 16 fps (approx. 60 ms/frame)
    • 1080p video (1920 x 1080) - 7 fps (approx. 140 ms/frame)

    Ideally, we should be able to get the data in constant time (approx. 30 ms/frame).

    How can we get 30 fps ?

    Code :

    if (avformat_open_input(&pFormatCtx, pcVideoFile, NULL, NULL)) {
       iError = -1;  //Couldn't open file
    }

    if (!iError) {
       //Retrieve stream information
       if (avformat_find_stream_info(pFormatCtx, NULL) < 0)
           iError = -2; //Couldn't find stream information
    }

    //Find the first video stream
    if (!iError) {

       for (i = 0; i < pFormatCtx->nb_streams; i++) {
           if (AVMEDIA_TYPE_VIDEO
                   == pFormatCtx->streams[i]->codec->codec_type) {
               iFramesInVideo = pFormatCtx->streams[i]->nb_index_entries;
               duration = pFormatCtx->streams[i]->duration;
               begin = pFormatCtx->streams[i]->start_time;
               time_base = (pFormatCtx->streams[i]->time_base.num * 1.0f)
                       / pFormatCtx->streams[i]->time_base.den;

               pCodecCtx = avcodec_alloc_context3(NULL);
               if (!pCodecCtx) {
                   iError = -6;
                   break;
               }

               AVCodecParameters params = { 0 };
               iReturn = avcodec_parameters_from_context(&params,
                       pFormatCtx->streams[i]->codec);
               if (iReturn < 0) {
                   iError = -7;
                   break;
               }

               iReturn = avcodec_parameters_to_context(pCodecCtx, &params);
               if (iReturn < 0) {
                   iError = -7;
                   break;
               }

               //pCodecCtx = pFormatCtx->streams[i]->codec;

               iVideoStreamIndex = i;
               break;
           }
       }
    }

    if (!iError) {
       if (iVideoStreamIndex == -1) {
           iError = -3; // Didn't find a video stream
       }
    }

    if (!iError) {
       // Find the decoder for the video stream
       pCodec = avcodec_find_decoder(pCodecCtx->codec_id);
       if (pCodec == NULL) {
           iError = -4;
       }
    }

    if (!iError) {
       // Open codec
       if (avcodec_open2(pCodecCtx, pCodec, NULL) < 0)
           iError = -5;
    }

    if (!iError) {
       iNumBytes = av_image_get_buffer_size(AV_PIX_FMT_RGB24, pCodecCtx->width,
               pCodecCtx->height, 1);

       // initialize SWS context for software scaling
       sws_ctx = sws_getContext(pCodecCtx->width, pCodecCtx->height,
               pCodecCtx->pix_fmt, pCodecCtx->width, pCodecCtx->height,
               AV_PIX_FMT_RGB24,
               SWS_BILINEAR,
               NULL,
               NULL,
               NULL);
       if (!sws_ctx) {
           iError = -7;
       }
    }
    clock_gettime(CLOCK_MONOTONIC_RAW, &end);
    delta_us = (end.tv_sec - start.tv_sec) * 1000000
           + (end.tv_nsec - start.tv_nsec) / 1000;
    start = end;
    //LOGI("Starting_Frame_Extraction: %lld", delta_us);
    if (!iError) {
       while (av_read_frame(pFormatCtx, &packet) == 0) {
           // Is this a packet from the video stream?
           if (packet.stream_index == iVideoStreamIndex) {
               pFrame = av_frame_alloc();
               if (NULL == pFrame) {
                   iError = -8;
                   break;
               }

               // Decode video frame
               avcodec_decode_video2(pCodecCtx, pFrame, &iFrameFinished,
                       &packet);
               if (iFrameFinished) {
                   //OUR CODE
               }
               av_frame_free(&pFrame);
               pFrame = NULL;
           }
           av_packet_unref(&packet);
       }
    }
  • How can I convert a video raw frame to image using ffmpeg [closed]

    8 mai 2024, par Sean

    I have a video stream (from a DJI Drone) coming to a websocket server.The websocket server saves the data using the technique described in this answer.

    


    Technical Details

    



    


    The frame is :

    


      

    • From a H265 video generated by the drone
    • 


    • has size : height 1080 , width 1440
    • 


    • FPS : 30
    • 


    • Size : 45235
    • 


    


    This is the raw video data as we receive from the getData() function of the video frame returned by the addStreamDataListener method

    


    Goal

    



    


    I want that the saved frame (I have noted the peculiar size) to be converted to ffpmeg.

    


    Attempt(s) to solve

    



    


    I have tried :

    


    ffmpeg -f rawvideo -s 720x480 -i images/fileName1715180324575.dat output.jpg


    


    as well as

    


    ffmpeg -f rawvideo -pix_fmt rgb24 -s 1080x1440 -i images/fileName1715180324575.dat output.jpg


    


    and various other combinations

    


    Error

    



    


    I get :

    


    ffmpeg version n6.1.1 Copyright (c) 2000-2023 the FFmpeg developers


built with gcc 13.2.1 (GCC) 20230801
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-frei0r --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libharfbuzz --enable-libiec61883 --enable-libjack --enable-libjxl --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libplacebo --enable-libpulse --enable-librav1e --enable-librsvg --enable-librubberband --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpl --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-vapoursynth --enable-version3 --enable-vulkan
  libavutil      58. 29.100 / 58. 29.100
  libavcodec     60. 31.102 / 60. 31.102
  libavformat    60. 16.100 / 60. 16.100
  libavdevice    60.  3.100 / 60.  3.100
  libavfilter     9. 12.100 /  9. 12.100
  libswscale      7.  5.100 /  7.  5.100
  libswresample   4. 12.100 /  4. 12.100
  libpostproc    57.  3.100 / 57.  3.100
[rawvideo @ 0x5d0fc4e5f600] Packet corrupt (stream = 0, dts = 0).
[rawvideo @ 0x5d0fc4e5f600] Estimating duration from bitrate, this may be inaccurate
Input #0, rawvideo, from 'images/fileName1715180324575.dat':
  Duration: N/A, start: 0.000000, bitrate: 933120 kb/s
  Stream #0:0: Video: rawvideo (RGB[24] / 0x18424752), rgb24, 1080x1440, 933120 kb/s, 25 tbr, 25 tbn
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> mjpeg (native))
Press [q] to stop, [?] for help
[in#0/rawvideo @ 0x5d0fc4e5f500] corrupt input packet in stream 0
[rawvideo @ 0x5d0fc4e697c0] Invalid buffer size, packet size 45235 < expected frame_size 4665600
[vist#0:0/rawvideo @ 0x5d0fc4e69640] Error submitting packet to decoder: Invalid argument
[swscaler @ 0x5d0fc4e86580] deprecated pixel format used, make sure you did set range correctly
[vost#0:0/mjpeg @ 0x5d0fc4e6c6c0] No filtered frames for output stream, trying to initialize anyway.
Output #0, image2, to 'output.jpg':
  Metadata:
    encoder         : Lavf60.16.100
  Stream #0:0: Video: mjpeg, yuvj444p(pc, progressive), 1080x1440, q=2-31, 200 kb/s, 25 fps, 25 tbn
    Metadata:
      encoder         : Lavc60.31.102 mjpeg
    Side data:
      cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
[vist#0:0/rawvideo @ 0x5d0fc4e69640] Decode error rate 1 exceeds maximum 0.666667
[out#0/image2 @ 0x5d0fc4e69380] video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[out#0/image2 @ 0x5d0fc4e69380] Output file is empty, nothing was encoded(check -ss / -t / -frames parameters if used)
frame=    0 fps=0.0 q=0.0 Lsize=N/A time=N/A bitrate=N/A speed=N/A    
Conversion failed!


    


    or

    


    ffmpeg version n6.1.1 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 13.2.1 (GCC) 20230801
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-frei0r --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libharfbuzz --enable-libiec61883 --enable-libjack --enable-libjxl --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libplacebo --enable-libpulse --enable-librav1e --enable-librsvg --enable-librubberband --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpl --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-vapoursynth --enable-version3 --enable-vulkan
  libavutil      58. 29.100 / 58. 29.100
  libavcodec     60. 31.102 / 60. 31.102
  libavformat    60. 16.100 / 60. 16.100
  libavdevice    60.  3.100 / 60.  3.100
  libavfilter     9. 12.100 /  9. 12.100
  libswscale      7.  5.100 /  7.  5.100
  libswresample   4. 12.100 /  4. 12.100
  libpostproc    57.  3.100 / 57.  3.100
[rawvideo @ 0x5a4c0b8685c0] Packet corrupt (stream = 0, dts = 0).
[rawvideo @ 0x5a4c0b8685c0] Estimating duration from bitrate, this may be inaccurate
Input #0, rawvideo, from 'images/fileName1715180324575.dat':
  Duration: N/A, start: 0.000000, bitrate: 103680 kb/s
  Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 720x480, 103680 kb/s, 25 tbr, 25 tbn
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> mjpeg (native))
Press [q] to stop, [?] for help
[in#0/rawvideo @ 0x5a4c0b8684c0] corrupt input packet in stream 0
[rawvideo @ 0x5a4c0b872700] Invalid buffer size, packet size 45235 < expected frame_size 518400
[vist#0:0/rawvideo @ 0x5a4c0b872580] Error submitting packet to decoder: Invalid argument
[swscaler @ 0x5a4c0b88f480] deprecated pixel format used, make sure you did set range correctly
[vost#0:0/mjpeg @ 0x5a4c0b875600] No filtered frames for output stream, trying to initialize anyway.
Output #0, image2, to 'output.jpg':
  Metadata:
    encoder         : Lavf60.16.100
  Stream #0:0: Video: mjpeg, yuvj420p(pc, progressive), 720x480, q=2-31, 200 kb/s, 25 fps, 25 tbn
    Metadata:
      encoder         : Lavc60.31.102 mjpeg
    Side data:
      cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
[vist#0:0/rawvideo @ 0x5a4c0b872580] Decode error rate 1 exceeds maximum 0.666667
[out#0/image2 @ 0x5a4c0b8722c0] video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[out#0/image2 @ 0x5a4c0b8722c0] Output file is empty, nothing was encoded(check -ss / -t / -frames parameters if used)
frame=    0 fps=0.0 q=0.0 Lsize=N/A time=N/A bitrate=N/A speed=N/A    
Conversion failed!


    


    or similar errors.

    


    Question

    



    


    How can I extract the image from a video frame using ffmpeg ? Thank you

    


    A sample of the image file may be found here : github