Recherche avancée

Médias (91)

Autres articles (89)

  • Soumettre bugs et patchs

    10 avril 2011

    Un logiciel n’est malheureusement jamais parfait...
    Si vous pensez avoir mis la main sur un bug, reportez le dans notre système de tickets en prenant bien soin de nous remonter certaines informations pertinentes : le type de navigateur et sa version exacte avec lequel vous avez l’anomalie ; une explication la plus précise possible du problème rencontré ; si possibles les étapes pour reproduire le problème ; un lien vers le site / la page en question ;
    Si vous pensez avoir résolu vous même le bug (...)

  • Contribute to a better visual interface

    13 avril 2011

    MediaSPIP is based on a system of themes and templates. Templates define the placement of information on the page, and can be adapted to a wide range of uses. Themes define the overall graphic appearance of the site.
    Anyone can submit a new graphic theme or template and make it available to the MediaSPIP community.

  • Automated installation script of MediaSPIP

    25 avril 2011, par

    To overcome the difficulties mainly due to the installation of server side software dependencies, an "all-in-one" installation script written in bash was created to facilitate this step on a server with a compatible Linux distribution.
    You must have access to your server via SSH and a root account to use it, which will install the dependencies. Contact your provider if you do not have that.
    The documentation of the use of this installation script is available here.
    The code of this (...)

Sur d’autres sites (13372)

  • How to get native frame rate of vide with FFmpex ?

    18 juin 2021, par Flame_Phoenix

    Background

    


    I have an .mp4 video and I need to get the video's frame rate. Using ffmepg (in Linux) I know I can get this information via the following command :

    


    ffprobe -v 0 -of compact=p=0 -select_streams 0 -show_entries stream=r_frame_rate 'MyVideoFIle.mp4'


    


    Which returns :

    


    r_frame_rate=24000/1001


    


    FFmpex

    


    Doing this in bash is fine, but what I really want is to use it in my Elixir application. To this end I found out about ffmpex.

    


    First I tried using FFprobe :

    


    > FFprobe.format("Devil May Cry 5 Bury the Light LITTLE V COVER.mp4")

{:ok,
 %{
   "bit_rate" => "611784",
   "duration" => "482.999000",
   "filename" => "Devil May Cry 5 Bury the Light LITTLE V COVER.mp4",
   "format_long_name" => "QuickTime / MOV",
   "format_name" => "mov,mp4,m4a,3gp,3g2,mj2",
   "nb_programs" => 0,
   "nb_streams" => 2,
   "probe_score" => 100, 
   "size" => "36936415",
   "start_time" => "0.000000",
   "tags" => %{
     "compatible_brands" => "isomiso2avc1mp41",
     "encoder" => "Lavf58.19.102",
     "major_brand" => "isom",
     "minor_version" => "512"
   }
 }}


    


    Which gives me some information, but not the frame rate.

    


    My next tentative was to use the command options :

    


    command = 
  FFmpex.new_command() 
  |> add_input_file("Devil May Cry 5 Bury the Light LITTLE V COVER.mp4") 
  |> add_video_option(???) 


    


    But the problem here is that I can't find in the documentation the video option I need to get the native frame rate. I only found vframe which is used to set the video frame rate.

    


    Question

    


      

    • How can I get the native fps of a video using ffmpex ?
    • 


    


  • Remove some redundant NULL checks and fix a free on error return.

    3 mars 2012, par Tim Terriberry
    Remove some redundant NULL checks and fix a free on error return.
    

    ref_frame_data was being allocated with the aligned allocator, but
    freed with the normal _ogg_free() function on failure, which
    doesn’t work.
    This would only cause a problem if there was just enough memory to
    satisfy the reference frame allocation (just over 4.5 or 9 bytes
    per pixel) but not enough for the fragment buffer offets (1/16 or
    1/8th byte per pixel).

    git-svn-id : http://svn.xiph.org/trunk/theora@18219 0101bb08-14d6-0310-b084-bc0e0c8e3800

    • [DH] lib/internal.c
    • [DH] lib/state.c
  • Exception thrown at 0x00007FFC0B57BCEF (swscale-6.dll) in App.exe : 0xC0000005 : Access violation reading location 0xFFFFFFFFFFFFFFFF

    9 novembre 2023, par JIUN-YU

    Trying to play a video using FFmpeg on visual studio 2022 on windows 10.
Exception is thrown at sws_scale in the code. Don't know why this is occurred.
It is worth noting that this error sometimes occurs when reading the camera and sometimes it does not.

    


    here is my code

    


    bool CalibrationPanel::video_reader_read_frame(VReaderState* state, cv::Mat cvimg)
{
    // Unpack members of state
    auto& width = state->width;
    auto& height = state->height;
    auto& av_format_ctx = state->av_format_ctx;
    auto& av_codec_ctx = state->av_codec_ctx;
    auto& video_stream_index = state->video_stream_index;
    auto& av_frame = state->av_frame;
    auto& av_packet = state->av_packet;
    auto& sws_scaler_ctx = state->sws_scaler_ctx;


    // Decode one frame
    int response;
    while (av_read_frame(av_format_ctx, av_packet) >= 0)
    {
        if (av_packet->stream_index != video_stream_index)
        {
            av_packet_unref(av_packet);
            continue;
        }

        response = avcodec_send_packet(av_codec_ctx, av_packet);
        if (response < 0)
        {
            char errStr[256] = {0};
            av_strerror(response, errStr, sizeof(errStr));
            printf("Failed to decode packet: %s\n", errStr);
            return false;
        }

        response = avcodec_receive_frame(av_codec_ctx, av_frame);
        if (response == AVERROR(EAGAIN) || response == AVERROR_EOF)
        {
            av_packet_unref(av_packet);
            continue;
        }
        else if (response < 0)
        {
            char errStr[256] = {0};
            av_strerror(response, errStr, sizeof(errStr));
            printf("Failed to decode packet: %s\n", errStr);
            return false;
        }

        av_packet_unref(av_packet);
        break;
    }
    int64_t* pts = &ppts;
    *pts = av_frame->pts;

    // Set up sws scaler
    if (!sws_scaler_ctx)
    {
        sws_scaler_ctx = sws_getContext(width, height, av_codec_ctx->pix_fmt,
                                        width, height, AV_PIX_FMT_BGR24,
                                        SWS_BILINEAR, NULL, NULL, NULL);
        if (!sws_scaler_ctx)
        {
            printf("Couldn't initialize sw scaler\n");
            return false;
        }
    }


    // Creating an image space to hold YUV images
    AVFrame* frameYUV = av_frame_alloc();
    auto* out_buffer = (unsigned char*)av_malloc(av_image_get_buffer_size(AV_PIX_FMT_BGR24, width, height, 1));
    av_image_fill_arrays(frameYUV->data, frameYUV->linesize, (const uint8_t*)out_buffer, AV_PIX_FMT_BGR24, width, height, 1);

    uint8_t* dest[4] = {cvimg.data, NULL, NULL, NULL};
    sws_scale(sws_scaler_ctx, av_frame->data, av_frame->linesize, 0, av_frame->height, dest, frameYUV->linesize);

    return true;
}


    


    fixed this bug, so it's not luck that makes the camera turn on every time.