Recherche avancée

Médias (91)

Autres articles (79)

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

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
    Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

Sur d’autres sites (14500)

  • avcodec_open2 error -542398533 : "Generic error in an external library"

    15 février 2017, par bot1131357

    I am encountering an error when trying to open the codec with avcodec_open2(). I have tried the same code without any problems if I specify avi instead of h264 in the av_guess_format() function.

    I don’t know what to make of it. Has anyone else encountered a similar problem ?

    The library that I’m using is ffmpeg-20160219-git-98a0053-win32-dev. I would really really appreciate if you could help me out of this confusion.

    This is my console output :

    Video encoding
    [libx264 @ 01383460] broken ffmpeg default settings detected
    [libx264 @ 01383460] use an encoding preset (e.g. -vpre medium)
    [libx264 @ 01383460] preset usage : -vpre -vpre
    [libx264 @ 01383460] speed presets are listed in x264 —help
    [libx264 @ 01383460] profile is optional ; x264 defaults to high
    Cannot open video codec, -542398533

    This is the code that I’m working with :

    // Video encoding sample
    AVCodec *codec = NULL;
    AVCodecContext *codecCtx= NULL;
    AVFormatContext *pFormatCtx = NULL;
    AVOutputFormat *pOutFormat = NULL;
    AVStream * pVideoStream = NULL;;
    AVFrame *picture = NULL;;

    int i, x, y, ret;

    printf("Video encoding\n");

    // Register all formats and codecs
    av_register_all();

    // guess format from file extension
    pOutFormat = av_guess_format("h264", NULL, NULL);
    if (NULL==pOutFormat){
       cerr << "Could not guess output format" << endl;
       return -1;
    }  

    // allocate context
    pFormatCtx = avformat_alloc_context();
    pFormatCtx->oformat = pOutFormat;
    memcpy(pFormatCtx->filename,filename,
       min(strlen(filename), sizeof(pFormatCtx->filename)));

    // Add stream to pFormatCtx
    pVideoStream = avformat_new_stream(pFormatCtx, 0);
    if (!pVideoStream)
    {
       printf("Cannot add new video stream\n");
       return -1;
    }

    // Set stream's codec context
    codecCtx = pVideoStream->codec;
    codecCtx->codec_id = (AVCodecID)pOutFormat->video_codec;
    codecCtx->codec_type = AVMEDIA_TYPE_VIDEO;
    codecCtx->frame_number = 0;
    // Put sample parameters.
    codecCtx->bit_rate = 2000000;
    // Resolution must be a multiple of two.
    codecCtx->width  = 320;
    codecCtx->height = 240;
    codecCtx->time_base.den = 10;
    codecCtx->time_base.num = 1;
    pVideoStream->time_base.den = 10;
    pVideoStream->time_base.num = 1;
    codecCtx->gop_size = 12; // emit one intra frame every twelve frames at most
    codecCtx->pix_fmt = AV_PIX_FMT_YUV420P;

    if (codecCtx->codec_id == AV_CODEC_ID_H264)
    {
       // Just for testing, we also add B frames
       codecCtx->mb_decision = 2;
    }
    // Some formats want stream headers to be separate.
    if(pFormatCtx->oformat->flags & AVFMT_GLOBALHEADER)
    {
       codecCtx->flags |= CODEC_FLAG_GLOBAL_HEADER;
    }

    if(codecCtx->codec_id == AV_CODEC_ID_H264)
       av_opt_set(codecCtx->priv_data, "preset", "slow", 0);


    // Open the codec.
    codec = avcodec_find_encoder(codecCtx->codec_id);
    if (codec == NULL) {
       fprintf(stderr, "Codec not found\n");
       return -1;
    }
    ret = avcodec_open2(codecCtx, codec, NULL); // returns -542398533 here
    if (ret < 0)
    {
       printf("Cannot open video codec, %d\n",ret);
       return -1;
    }
  • "Application provided invalid, non monotonically increasing dts to muxer in stream 0 : 47104 >= -4251" in C ffmpeg video & audio streams processing

    30 décembre 2023, par M.Hakim

    For an input.mp4 file containing a video stream and an audio stream, intend to convert the video stream into h264 codec and the audio stream into aac codec and combine the two streams in output.mp4 file using C and ffmpeg libraries.
Am getting an error [mp4 @ 0x5583c88fd340] Application provided invalid, non monotonically increasing dts to muxer in stream 0 : 47104 >= -4251
How do i solve that error ?

    


    #include &#xA;#include <libavcodec></libavcodec>avcodec.h>&#xA;#include <libavformat></libavformat>avformat.h>    &#xA;#include <libavutil></libavutil>opt.h>&#xA;&#xA;int encodeVideoAndAudio4(char *pInName, char *pOutName) {&#xA;&#xA;    AVFormatContext *format_ctx = avformat_alloc_context();&#xA;&#xA;    AVCodecContext *video_dec_ctx = NULL;&#xA;    AVCodecContext *video_enc_ctx = NULL;&#xA;    AVCodec *video_dec_codec = NULL;&#xA;    AVCodec *video_enc_codec = NULL;&#xA;    AVDictionary *video_enc_opts = NULL;&#xA;&#xA;    AVCodecContext *audio_dec_ctx = NULL;&#xA;    AVCodecContext *audio_enc_ctx = NULL;&#xA;    AVCodec *audio_dec_codec = NULL;&#xA;    AVCodec *audio_enc_codec = NULL;&#xA;&#xA;&#xA;    if (avformat_open_input(&amp;format_ctx, pInName, NULL, NULL) &lt; 0) {&#xA;        fprintf(stderr, "Error: Could not open input file\n");&#xA;        return 1;&#xA;    }&#xA;&#xA;    if (avformat_find_stream_info(format_ctx, NULL) &lt; 0) {&#xA;        fprintf(stderr, "Error: Could not find stream information\n");&#xA;        return 1;&#xA;    }&#xA;&#xA;    for (int i = 0; i &lt; format_ctx->nb_streams; i&#x2B;&#x2B;) {&#xA;        AVStream *stream = format_ctx->streams[i];&#xA;        const char *media_type_str = av_get_media_type_string(stream->codecpar->codec_type);&#xA;        AVRational time_base = stream->time_base;&#xA;&#xA;    }&#xA;&#xA;    int video_stream_index = -1;&#xA;    for (int i = 0; i &lt; format_ctx->nb_streams; i&#x2B;&#x2B;) {&#xA;        if (format_ctx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {&#xA;            video_stream_index = i;&#xA;            break;&#xA;        }&#xA;    }&#xA;    if (video_stream_index == -1) {&#xA;        fprintf(stderr, "Error: Could not find a video stream\n");&#xA;        return 1;&#xA;    }&#xA;&#xA;    AVStream *videoStream = format_ctx->streams[video_stream_index];&#xA;    video_dec_ctx = avcodec_alloc_context3(NULL);&#xA;    avcodec_parameters_to_context(video_dec_ctx, videoStream->codecpar);&#xA;&#xA;    video_dec_codec = avcodec_find_decoder(video_dec_ctx->codec_id);&#xA;&#xA;    if (!video_dec_codec) {&#xA;        fprintf(stderr, "Unsupported video codec!\n");&#xA;        return 1;&#xA;    }&#xA;&#xA;    if (avcodec_open2(video_dec_ctx, video_dec_codec, NULL) &lt; 0) {&#xA;        fprintf(stderr, "Error: Could not open a video decoder codec\n");&#xA;        return 1;&#xA;    }&#xA;&#xA;    video_enc_codec = avcodec_find_encoder(AV_CODEC_ID_H264);&#xA;    if (!video_enc_codec) {&#xA;        fprintf(stderr, "Error: Video Encoder codec not found\n");&#xA;        return 1;&#xA;    }&#xA;&#xA;    video_enc_ctx = avcodec_alloc_context3(video_enc_codec);&#xA;    if (!video_enc_ctx) {&#xA;        fprintf(stderr, "Error: Could not allocate video encoder codec context\n");&#xA;        return 1;&#xA;    }&#xA;&#xA;    videoStream->time_base = (AVRational){1, 25};&#xA;&#xA;    video_enc_ctx->bit_rate = 1000; &#xA;    video_enc_ctx->width = video_dec_ctx->width;&#xA;    video_enc_ctx->height = video_dec_ctx->height;&#xA;    video_enc_ctx->time_base = (AVRational){1, 25};&#xA;    video_enc_ctx->gop_size = 10;&#xA;    video_enc_ctx->max_b_frames = 1;&#xA;    video_enc_ctx->pix_fmt = AV_PIX_FMT_YUV420P;&#xA;&#xA;    if (avcodec_open2(video_enc_ctx, video_enc_codec, NULL) &lt; 0) {&#xA;        fprintf(stderr, "Error: Could not open encoder codec\n");&#xA;        return 1;&#xA;    }&#xA;&#xA;    av_dict_set(&amp;video_enc_opts, "preset", "medium", 0);&#xA;    av_opt_set_dict(video_enc_ctx->priv_data, &amp;video_enc_opts);&#xA;&#xA;    AVPacket video_pkt;&#xA;    av_init_packet(&amp;video_pkt);&#xA;    video_pkt.data = NULL;&#xA;    video_pkt.size = 0;&#xA;&#xA;    AVPacket pkt;&#xA;    av_init_packet(&amp;pkt);&#xA;    pkt.data = NULL;&#xA;    pkt.size = 0;&#xA;&#xA;    AVFrame *video_frame = av_frame_alloc();&#xA;    if (!video_frame) {&#xA;        fprintf(stderr, "Error: Could not allocate video frame\n");&#xA;        return 1;&#xA;    }&#xA;&#xA;    video_frame->format = video_enc_ctx->pix_fmt;&#xA;    video_frame->width = video_enc_ctx->width;&#xA;    video_frame->height = video_enc_ctx->height;&#xA;   &#xA;    int audio_stream_index = -1;&#xA;    for (int i = 0; i &lt; format_ctx->nb_streams; i&#x2B;&#x2B;) {&#xA;        if (format_ctx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {&#xA;            audio_stream_index = i;&#xA;            break;&#xA;        }&#xA;    }&#xA;&#xA;    if (audio_stream_index == -1) {&#xA;        fprintf(stderr, "Error: Could not find an audio stream\n");&#xA;        return 1;&#xA;    }&#xA;    &#xA;    AVStream *audioStream = format_ctx->streams[audio_stream_index];&#xA;    audio_dec_ctx = avcodec_alloc_context3(NULL);&#xA;    avcodec_parameters_to_context(audio_dec_ctx, audioStream->codecpar);&#xA;    &#xA;    audio_dec_codec = avcodec_find_decoder(audio_dec_ctx->codec_id);&#xA;   &#xA;    if (!audio_dec_codec) {&#xA;        fprintf(stderr, "Unsupported audio codec!\n");&#xA;        return 1;&#xA;    }&#xA;   &#xA;    if (avcodec_open2(audio_dec_ctx, audio_dec_codec, NULL) &lt; 0) {&#xA;        fprintf(stderr, "Error: Could not open Audio decoder codec\n");&#xA;        return 1;&#xA;    }&#xA;    &#xA;    audio_enc_codec = avcodec_find_encoder(AV_CODEC_ID_AAC);&#xA;    if (!audio_enc_codec) {&#xA;        fprintf(stderr, "Error: Audio Encoder codec not found\n");&#xA;        return 1;&#xA;    }&#xA;   &#xA;    audio_enc_ctx = avcodec_alloc_context3(audio_enc_codec);&#xA;    if (!audio_enc_ctx) {&#xA;        fprintf(stderr, "Error: Could not allocate audio encoder codec context\n");&#xA;        return 1;&#xA;    }&#xA;&#xA;    audioStream->time_base = (AVRational){1, audio_dec_ctx->sample_rate};&#xA;    &#xA;    audio_enc_ctx->bit_rate = 64000; &#xA;    audio_enc_ctx->sample_rate = audio_dec_ctx->sample_rate;&#xA;    audio_enc_ctx->channels = audio_dec_ctx->channels;&#xA;    audio_enc_ctx->channel_layout = av_get_default_channel_layout(audio_enc_ctx->channels);&#xA;    audio_enc_ctx->sample_fmt = AV_SAMPLE_FMT_FLTP;&#xA;    audio_enc_ctx->profile = FF_PROFILE_AAC_LOW;&#xA;    &#xA;    if (avcodec_open2(audio_enc_ctx, audio_enc_codec, NULL) &lt; 0) {&#xA;        fprintf(stderr, "Error: Could not open encoder codec\n");&#xA;        return 1;&#xA;    }&#xA;   &#xA;    AVPacket audio_pkt;&#xA;    av_init_packet(&amp;audio_pkt);&#xA;    audio_pkt.data = NULL;&#xA;    audio_pkt.size = 0;&#xA;   &#xA;    AVFrame *audio_frame = av_frame_alloc();&#xA;    if (!audio_frame) {&#xA;        fprintf(stderr, "Error: Could not allocate audio frame\n");&#xA;        return 1;&#xA;    }&#xA;&#xA;    audio_frame->format = audio_enc_ctx->sample_fmt;&#xA;    audio_frame->sample_rate = audio_enc_ctx->sample_rate;&#xA;    audio_frame->channels = audio_enc_ctx->channels;&#xA;   &#xA;    AVFormatContext *output_format_ctx = NULL;&#xA;    if (avformat_alloc_output_context2(&amp;output_format_ctx, NULL, NULL, pOutName) &lt; 0) {&#xA;        fprintf(stderr, "Error: Could not create output context\n");&#xA;        return 1;&#xA;    }&#xA;    &#xA;    if (avio_open(&amp;output_format_ctx->pb, pOutName, AVIO_FLAG_WRITE) &lt; 0) {&#xA;        fprintf(stderr, "Error: Could not open output file\n");&#xA;        return 1;&#xA;    }&#xA;   &#xA;    AVStream *video_stream = avformat_new_stream(output_format_ctx, video_enc_codec);&#xA;    if (!video_stream) {&#xA;        fprintf(stderr, "Error: Could not create video stream\n");&#xA;        return 1;&#xA;    }&#xA;   &#xA;    av_dict_set(&amp;video_stream->metadata, "rotate", "90", 0);&#xA;    &#xA;    if (avcodec_parameters_from_context(video_stream->codecpar, video_enc_ctx) &lt; 0) {&#xA;        fprintf(stderr, "Error: Could not copy video codec parameters\n");&#xA;        return 1;&#xA;    }&#xA;  &#xA;    AVStream *audio_stream = avformat_new_stream(output_format_ctx, audio_enc_codec);&#xA;    if (!audio_stream) {&#xA;        fprintf(stderr, "Error: Could not create audio stream\n");&#xA;        return 1;&#xA;    }&#xA;   &#xA;    if (avcodec_parameters_from_context(audio_stream->codecpar, audio_enc_ctx) &lt; 0) {&#xA;        fprintf(stderr, "Error: Could not copy audio codec parameters\n");&#xA;        return 1;&#xA;    }&#xA;  &#xA;    if (avformat_write_header(output_format_ctx, NULL) &lt; 0) {&#xA;        fprintf(stderr, "Error: Could not write header\n");&#xA;        return 1;&#xA;    }&#xA;  &#xA;     int video_frame_count = 0, audio_frame_count = 0;&#xA;    &#xA;    while (1) {&#xA;&#xA;        if (av_read_frame(format_ctx, &amp;pkt) &lt; 0) {&#xA;            fprintf(stderr, "BREAK FROM MAIN WHILE LOOP\n");&#xA;            break;&#xA;        }&#xA;&#xA;        if (pkt.stream_index == video_stream_index) {&#xA;&#xA;            if (avcodec_send_packet(video_dec_ctx, &amp;pkt) &lt; 0) {&#xA;                fprintf(stderr, "Error: Could not send video packet for decoding\n");&#xA;                return 1;&#xA;            }&#xA;&#xA;            while (avcodec_receive_frame(video_dec_ctx, video_frame) == 0) { &#xA;&#xA;                if (avcodec_send_frame(video_enc_ctx, video_frame) &lt; 0) {&#xA;                    fprintf(stderr, "Error: Could not send video frame for encoding\n");&#xA;                    return 1;&#xA;                }&#xA;&#xA;                while (avcodec_receive_packet(video_enc_ctx, &amp;video_pkt) == 0) {&#xA;                    &#xA;                    if (av_write_frame(output_format_ctx, &amp;video_pkt) &lt; 0) {&#xA;                        fprintf(stderr, "Error: Could not write video packet to output file.\n");&#xA;                        return 1;&#xA;                    }&#xA;&#xA;                    av_packet_unref(&amp;video_pkt);&#xA;                }&#xA;&#xA;                video_frame_count&#x2B;&#x2B;;&#xA;            }&#xA;        } else if (pkt.stream_index == audio_stream_index) {&#xA;&#xA;            if (avcodec_send_packet(audio_dec_ctx, &amp;pkt) &lt; 0) {&#xA;                fprintf(stderr, "Error: Could not send audio packet for decoding\n");&#xA;                return 1;&#xA;            }&#xA;&#xA;            while (avcodec_receive_frame(audio_dec_ctx, audio_frame) == 0) { &#xA; &#xA;                if (avcodec_send_frame(audio_enc_ctx, audio_frame) &lt; 0) {&#xA;                    fprintf(stderr, "Error: Could not send audio frame for encoding\n");&#xA;                    return 1;&#xA;                }&#xA;&#xA;                while (avcodec_receive_packet(audio_enc_ctx, &amp;audio_pkt) == 0) {                    if (av_write_frame(output_format_ctx, &amp;audio_pkt) &lt; 0) {&#xA;                        fprintf(stderr, "Error: Could not write audio packet to output file\n");&#xA;                        return 1;&#xA;                    }&#xA;&#xA;                    av_packet_unref(&amp;audio_pkt);&#xA;                }&#xA;&#xA;                audio_frame_count&#x2B;&#x2B;;&#xA;            }&#xA;        }&#xA;&#xA;        av_packet_unref(&amp;pkt);&#xA;    }&#xA;&#xA;    if (av_write_trailer(output_format_ctx) &lt; 0) {&#xA;        fprintf(stderr, "Error: Could not write trailer\n");&#xA;        return 1;&#xA;    }  &#xA;    &#xA;    avformat_close_input(&amp;format_ctx);&#xA;    avio_close(output_format_ctx->pb);&#xA;    avformat_free_context(output_format_ctx);&#xA;    &#xA;    av_frame_free(&amp;video_frame);&#xA;    avcodec_free_context(&amp;video_dec_ctx);&#xA;    avcodec_free_context(&amp;video_enc_ctx);&#xA;    av_dict_free(&amp;video_enc_opts);&#xA;    &#xA;    av_frame_free(&amp;audio_frame);&#xA;    avcodec_free_context(&amp;audio_dec_ctx);&#xA;    avcodec_free_context(&amp;audio_enc_ctx);&#xA;&#xA;    printf("Conversion complete.  %d video frames processed and %d audio frames processed.\n",video_frame_count, audio_frame_count);&#xA;&#xA;    return 0;&#xA;}&#xA;&#xA;&#xA;int main(int argc, char *argv[]) {&#xA;    if (argc != 3) {&#xA;        printf("Usage: %s  \n", argv[0]);&#xA;        return 1;&#xA;    }&#xA;&#xA;    const char *input_filename = argv[1];&#xA;    const char *output_filename = argv[2];&#xA;&#xA;    avcodec_register_all();&#xA;    av_register_all();&#xA;&#xA;    int returnValue = encodeVideoAndAudio4(input_filename, output_filename);&#xA;    &#xA;    return 0;&#xA;}&#xA;&#xA;

    &#xA;

    When i comment out the blocks that process one of the two streams, the other stream is converted and written to the output.mp4 successfully.&#xA;When each stream is processed in a separate loop, only the first stream is processed and written to the output.mp4 file and the other stream is skipped.&#xA;When both streams are processed in a common loop as it is in the code above, the above mentioned error appears.

    &#xA;

  • bgmc : fix sizeof arguments (should fix CIDs : 700724 and 608084)

    14 octobre 2012, par Thilo Borgmann

    bgmc : fix sizeof arguments (should fix CIDs : 700724 and 608084)