Recherche avancée

Médias (2)

Mot : - Tags -/kml

Autres articles (25)

  • La file d’attente de SPIPmotion

    28 novembre 2010, par

    Une file d’attente stockée dans la base de donnée
    Lors de son installation, SPIPmotion crée une nouvelle table dans la base de donnée intitulée spip_spipmotion_attentes.
    Cette nouvelle table est constituée des champs suivants : id_spipmotion_attente, l’identifiant numérique unique de la tâche à traiter ; id_document, l’identifiant numérique du document original à encoder ; id_objet l’identifiant unique de l’objet auquel le document encodé devra être attaché automatiquement ; objet, le type d’objet auquel (...)

  • Les tâches Cron régulières de la ferme

    1er décembre 2010, par

    La gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
    Le super Cron (gestion_mutu_super_cron)
    Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...)

  • Les formats acceptés

    28 janvier 2010, par

    Les commandes suivantes permettent d’avoir des informations sur les formats et codecs gérés par l’installation local de ffmpeg :
    ffmpeg -codecs ffmpeg -formats
    Les format videos acceptés en entrée
    Cette liste est non exhaustive, elle met en exergue les principaux formats utilisés : h264 : H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 m4v : raw MPEG-4 video format flv : Flash Video (FLV) / Sorenson Spark / Sorenson H.263 Theora wmv :
    Les formats vidéos de sortie possibles
    Dans un premier temps on (...)

Sur d’autres sites (3034)

  • FFmpeg android images to movie - error while opening encoder [duplicate]

    12 juin 2018, par trinadh thatakula

    I have been working on android-ffmpeg to convert images into videos and I have found the code I was looking(links below) and I have tried to execute this command

    val cmd5 = arrayOf("-analyzeduration", "1M", "-probesize", "1M", "-y", "-framerate", "1/3.79", "-i", Utils.outputPath + "image%d.jpg", "-i", audio!!.path, "-c:v", "libx264", "-tune", "stillimage", "-c:a", "aac", "-strict", "experimental", "-b:a", "192k", "-pix_fmt", "yuv420p", "-shortest", outputLocation.path)

    and I got error saying

    Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

    can any1 please help me

    I have taken code from here -> KotlinFFmpeg and the code snippet is from here -> MovieMaker.kt, please give me a solution, thanks in advance

    here are the logs

       2018-06-12 18:22:24.000 25364-25664/photo.video.maker D/FFmpeg: Running publishing updates method
    2018-06-12 18:22:24.096 25364-25364/photo.video.maker W/System.err: java.io.IOException: ffmpeg version n3.0.1 Copyright (c) 2000-2016 the FFmpeg developers
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:   built with gcc 4.8 (GCC)
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:   configuration: --target-os=linux --cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroot=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/vagrant/SourceCode/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/vagrant/SourceCode/ffmpeg-android/build/armeabi-v7a --extra-cflags='-I/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all' --extra-ldflags='-L/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags=
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:   libavutil      55. 17.103 / 55. 17.103
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:   libavcodec     57. 24.102 / 57. 24.102
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:   libavformat    57. 25.100 / 57. 25.100
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:   libavdevice    57.  0.101 / 57.  0.101
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:   libavfilter     6. 31.100 /  6. 31.100
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:   libswscale      4.  0.100 /  4.  0.100
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:   libswresample   2.  0.101 /  2.  0.101
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:   libpostproc    54.  0.100 / 54.  0.100
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err: [mjpeg @ 0xf193d000] Changing bps to 8
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err: Input #0, image2, from '/storage/emulated/0/Photo Video Maker/image%d.jpg':
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:   Duration: 00:02:35.39, start: 0.000000, bitrate: N/A
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 1440x1919 [SAR 1:1 DAR 1440:1919], 0.26 tbr, 0.26 tbn, 0.26 tbc
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err: [mp3 @ 0xf192d600] Skipping 0 bytes of junk at 61264.
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err: [mjpeg @ 0xf193dc00] Changing bps to 8
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err: Input #1, mp3, from '/data/user/0/photo.video.maker/files/audio2.mp3':
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:   Metadata:
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     album_artist    : Various Artists
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     AccurateRipDiscID: 018-002fb7fe-0279b2d7-47111512-2
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     AccurateRipResult: AccurateRip: Accurate (confidence 10)   [0A38F342]
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     title           : Morning
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     encoded_by      : dBpoweramp Release 14.4
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     publisher       : EMI Classics
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     composer        : Edvard Grieg
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     TMED            : CD (Lossless)
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     genre           : Classical
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     compilation     : 1
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     album           : The Most Relaxing Classical Album in the World...Ever!
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     track           : 2/18
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     disc            : 1/2
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     artist          : Edvard Grieg
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     Encoder         : Lame 3.99.5
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     UPC             : 024356665027
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     date            : 1999
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:   Duration: 00:04:18.04, start: 0.025056, bitrate: 321 kb/s
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     Stream #1:0: Audio: mp3, 44100 Hz, stereo, s16p, 320 kb/s
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     Metadata:
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:       encoder         : LAME3.99r
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     Stream #1:1: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 747x750 [SAR 1:1 DAR 249:250], 90k tbr, 90k tbn, 90k tbc
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     Metadata:
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:       comment         : Cover (front)
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err: [swscaler @ 0xf1125000] deprecated pixel format used, make sure you did set range correctly
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err: [libx264 @ 0xf193ec00] height not divisible by 2 (1440x1919)
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err: Output #0, mp4, to '/storage/emulated/0/Photo Video Maker/video/movie_1528807939616.mp4':
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     Stream #0:0: Video: h264, none, q=2-31, 128 kb/s, SAR 1:1 DAR 0:0, 0.26 fps
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     Metadata:
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:       encoder         : Lavc57.24.102 libx264
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     Stream #0:1: Audio: aac, 0 channels, 128 kb/s
    2018-06-12 18:22:24.097 25364-25364/photo.video.maker W/System.err:     Metadata:
    2018-06-12 18:22:24.098 25364-25364/photo.video.maker W/System.err:       encoder         : Lavc57.24.102 aac
    2018-06-12 18:22:24.098 25364-25364/photo.video.maker W/System.err: Stream mapping:
    2018-06-12 18:22:24.098 25364-25364/photo.video.maker W/System.err:   Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
    2018-06-12 18:22:24.098 25364-25364/photo.video.maker W/System.err:   Stream #1:0 -> #0:1 (mp3 (native) -> aac (native))
    2018-06-12 18:22:24.098 25364-25364/photo.video.maker W/System.err: Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
    2018-06-12 18:22:24.098 25364-25364/photo.video.maker W/System.err:     at photo.video.maker.tools.video.MovieMaker$convert$1.onFailure(MovieMaker.kt:78)
    2018-06-12 18:22:24.098 25364-25364/photo.video.maker W/System.err:     at com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.onPostExecute(FFmpegExecuteAsyncTask.java:70)
    2018-06-12 18:22:24.098 25364-25364/photo.video.maker W/System.err:     at com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.onPostExecute(FFmpegExecuteAsyncTask.java:10)
    2018-06-12 18:22:24.098 25364-25364/photo.video.maker W/System.err:     at android.os.AsyncTask.finish(AsyncTask.java:695)
    2018-06-12 18:22:24.098 25364-25364/photo.video.maker W/System.err:     at android.os.AsyncTask.-wrap1(Unknown Source:0)
    2018-06-12 18:22:24.098 25364-25364/photo.video.maker W/System.err:     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:712)
    2018-06-12 18:22:24.098 25364-25364/photo.video.maker W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:106)
    2018-06-12 18:22:24.098 25364-25364/photo.video.maker W/System.err:     at android.os.Looper.loop(Looper.java:164)
    2018-06-12 18:22:24.098 25364-25364/photo.video.maker W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6494)
    2018-06-12 18:22:24.098 25364-25364/photo.video.maker W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
    2018-06-12 18:22:24.098 25364-25364/photo.video.maker W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    2018-06-12 18:22:24.098 25364-25364/photo.video.maker W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
  • C++ ffmpeg lib version 7.0 - noice in exported audio

    2 septembre 2024, par Chris P

    I want to make a C++ lib named cppdub which will mimic the python module pydub.

    


    One main function is to export the AudioSegment to a file with a specific format (example : mp3).

    


    The code is :

    


    AudioSegment AudioSegment::from_file(const std::string&amp; file_path, const std::string&amp; format, const std::string&amp; codec,&#xA;    const std::map&amp; parameters, int start_second, int duration) {&#xA;&#xA;    avformat_network_init();&#xA;    av_log_set_level(AV_LOG_ERROR); // Adjust logging level as needed&#xA;&#xA;    AVFormatContext* format_ctx = nullptr;&#xA;    if (avformat_open_input(&amp;format_ctx, file_path.c_str(), nullptr, nullptr) != 0) {&#xA;        std::cerr &lt;&lt; "Error: Could not open audio file." &lt;&lt; std::endl;&#xA;        return AudioSegment();  // Return an empty AudioSegment on failure&#xA;    }&#xA;&#xA;    if (avformat_find_stream_info(format_ctx, nullptr) &lt; 0) {&#xA;        std::cerr &lt;&lt; "Error: Could not find stream information." &lt;&lt; std::endl;&#xA;        avformat_close_input(&amp;format_ctx);&#xA;        return AudioSegment();&#xA;    }&#xA;&#xA;    int audio_stream_index = -1;&#xA;    for (unsigned 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;        std::cerr &lt;&lt; "Error: Could not find audio stream." &lt;&lt; std::endl;&#xA;        avformat_close_input(&amp;format_ctx);&#xA;        return AudioSegment();&#xA;    }&#xA;&#xA;    AVCodecParameters* codec_par = format_ctx->streams[audio_stream_index]->codecpar;&#xA;    const AVCodec* my_codec = avcodec_find_decoder(codec_par->codec_id);&#xA;    AVCodecContext* codec_ctx = avcodec_alloc_context3(my_codec);&#xA;&#xA;    if (avcodec_parameters_to_context(codec_ctx, codec_par) &lt; 0) {&#xA;        std::cerr &lt;&lt; "Error: Could not initialize codec context." &lt;&lt; std::endl;&#xA;        avformat_close_input(&amp;format_ctx);&#xA;        return AudioSegment();&#xA;    }&#xA;&#xA;    if (avcodec_open2(codec_ctx, my_codec, nullptr) &lt; 0) {&#xA;        std::cerr &lt;&lt; "Error: Could not open codec." &lt;&lt; std::endl;&#xA;        avcodec_free_context(&amp;codec_ctx);&#xA;        avformat_close_input(&amp;format_ctx);&#xA;        return AudioSegment();&#xA;    }&#xA;&#xA;    SwrContext* swr_ctx = swr_alloc();&#xA;    if (!swr_ctx) {&#xA;        std::cerr &lt;&lt; "Error: Could not allocate SwrContext." &lt;&lt; std::endl;&#xA;        avcodec_free_context(&amp;codec_ctx);&#xA;        avformat_close_input(&amp;format_ctx);&#xA;        return AudioSegment();&#xA;    }&#xA;&#xA;    av_opt_set_chlayout(swr_ctx, "in_chlayout", &amp;codec_ctx->ch_layout, 0);&#xA;    av_opt_set_int(swr_ctx, "in_sample_rate", codec_ctx->sample_rate, 0);&#xA;    av_opt_set_sample_fmt(swr_ctx, "in_sample_fmt", codec_ctx->sample_fmt, 0);&#xA;&#xA;    AVChannelLayout dst_ch_layout;&#xA;    av_channel_layout_copy(&amp;dst_ch_layout, &amp;codec_ctx->ch_layout);&#xA;    av_channel_layout_uninit(&amp;dst_ch_layout);&#xA;    av_channel_layout_default(&amp;dst_ch_layout, 2);&#xA;&#xA;    av_opt_set_chlayout(swr_ctx, "out_chlayout", &amp;dst_ch_layout, 0);&#xA;    av_opt_set_int(swr_ctx, "out_sample_rate", 48000, 0);&#xA;    av_opt_set_sample_fmt(swr_ctx, "out_sample_fmt", AV_SAMPLE_FMT_S16, 0);&#xA;&#xA;    if (swr_init(swr_ctx) &lt; 0) {&#xA;        std::cerr &lt;&lt; "Error: Failed to initialize the resampling context" &lt;&lt; std::endl;&#xA;        swr_free(&amp;swr_ctx);&#xA;        avcodec_free_context(&amp;codec_ctx);&#xA;        avformat_close_input(&amp;format_ctx);&#xA;        return AudioSegment();&#xA;    }&#xA;&#xA;    AVPacket packet;&#xA;    AVFrame* frame = av_frame_alloc();&#xA;    if (!frame) {&#xA;        std::cerr &lt;&lt; "Error: Could not allocate frame." &lt;&lt; std::endl;&#xA;        swr_free(&amp;swr_ctx);&#xA;        avcodec_free_context(&amp;codec_ctx);&#xA;        avformat_close_input(&amp;format_ctx);&#xA;        return AudioSegment();&#xA;    }&#xA;&#xA;    std::vector<char> output;&#xA;    while (av_read_frame(format_ctx, &amp;packet) >= 0) {&#xA;        if (packet.stream_index == audio_stream_index) {&#xA;            if (avcodec_send_packet(codec_ctx, &amp;packet) == 0) {&#xA;                while (avcodec_receive_frame(codec_ctx, frame) == 0) {&#xA;                    if (frame->pts != AV_NOPTS_VALUE) {&#xA;                        frame->pts = av_rescale_q(frame->pts, codec_ctx->time_base, format_ctx->streams[audio_stream_index]->time_base);&#xA;                    }&#xA;&#xA;                    uint8_t* output_buffer;&#xA;                    int output_samples = av_rescale_rnd(&#xA;                        swr_get_delay(swr_ctx, codec_ctx->sample_rate) &#x2B; frame->nb_samples,&#xA;                        48000, codec_ctx->sample_rate, AV_ROUND_UP);&#xA;&#xA;                    int output_buffer_size = av_samples_get_buffer_size(&#xA;                        nullptr, 2, output_samples, AV_SAMPLE_FMT_S16, 1);&#xA;&#xA;                    output_buffer = (uint8_t*)av_malloc(output_buffer_size);&#xA;&#xA;                    if (output_buffer) {&#xA;                        memset(output_buffer, 0, output_buffer_size); // Zero padding to avoid random noise&#xA;                        int converted_samples = swr_convert(swr_ctx, &amp;output_buffer, output_samples,&#xA;                            (const uint8_t**)frame->extended_data, frame->nb_samples);&#xA;&#xA;                        if (converted_samples >= 0) {&#xA;                            output.insert(output.end(), output_buffer, output_buffer &#x2B; output_buffer_size);&#xA;                        }&#xA;                        else {&#xA;                            std::cerr &lt;&lt; "Error: Failed to convert audio samples." &lt;&lt; std::endl;&#xA;                        }&#xA;&#xA;                        av_free(output_buffer);&#xA;                    }&#xA;                    else {&#xA;                        std::cerr &lt;&lt; "Error: Could not allocate output buffer." &lt;&lt; std::endl;&#xA;                    }&#xA;                }&#xA;            }&#xA;            else {&#xA;                std::cerr &lt;&lt; "Error: Failed to send packet to codec context." &lt;&lt; std::endl;&#xA;            }&#xA;        }&#xA;        av_packet_unref(&amp;packet);&#xA;    }&#xA;&#xA;    av_frame_free(&amp;frame);&#xA;    swr_free(&amp;swr_ctx);&#xA;    avcodec_free_context(&amp;codec_ctx);&#xA;    avformat_close_input(&amp;format_ctx);&#xA;&#xA;    std::map metadata = {&#xA;        {"sample_width", 2},&#xA;        {"frame_rate", 48000},&#xA;        {"channels", 2},&#xA;        {"frame_width", 4}&#xA;    };&#xA;&#xA;    return AudioSegment(static_cast<const>(output.data()), output.size(), metadata);&#xA;}&#xA;&#xA;&#xA;std::ofstream AudioSegment::export_segment(std::string&amp; out_f,&#xA;    const std::string&amp; format,&#xA;    const std::string&amp; codec,&#xA;    const std::string&amp; bitrate,&#xA;    const std::vector&amp; parameters,&#xA;    const std::map&amp; tags,&#xA;    const std::string&amp; id3v2_version,&#xA;    const std::string&amp; cover) {&#xA;    av_log_set_level(AV_LOG_DEBUG);&#xA;    AVCodecContext* codec_ctx = nullptr;&#xA;    AVFormatContext* format_ctx = nullptr;&#xA;    AVStream* stream = nullptr;&#xA;    AVFrame* frame = nullptr;&#xA;    AVPacket* pkt = nullptr;&#xA;    int ret;&#xA;&#xA;    // Open output file&#xA;    std::ofstream out_file(out_f, std::ios::binary);&#xA;    if (!out_file) {&#xA;        throw std::runtime_error("Failed to open output file.");&#xA;    }&#xA;&#xA;    // Initialize format context&#xA;    avformat_alloc_output_context2(&amp;format_ctx, nullptr, format.c_str(), out_f.c_str());&#xA;    if (!format_ctx) {&#xA;        throw std::runtime_error("Could not allocate format context.");&#xA;    }&#xA;&#xA;    // Find encoder&#xA;    const AVCodec* codec_ptr = avcodec_find_encoder_by_name(codec.c_str());&#xA;    if (!codec_ptr) {&#xA;        throw std::runtime_error("Codec not found.");&#xA;    }&#xA;&#xA;    // Add stream&#xA;    stream = avformat_new_stream(format_ctx, codec_ptr);&#xA;    if (!stream) {&#xA;        throw std::runtime_error("Failed to create new stream.");&#xA;    }&#xA;&#xA;    // Allocate codec context&#xA;    codec_ctx = avcodec_alloc_context3(codec_ptr);&#xA;    if (!codec_ctx) {&#xA;        throw std::runtime_error("Could not allocate audio codec context.");&#xA;    }&#xA;&#xA;    // Set codec parameters&#xA;    codec_ctx->bit_rate = std::stoi(bitrate);&#xA;    codec_ctx->sample_fmt = codec_ptr->sample_fmts ? codec_ptr->sample_fmts[0] : AV_SAMPLE_FMT_FLTP;&#xA;    codec_ctx->sample_rate = frame_rate_;&#xA;    codec_ctx->ch_layout.nb_channels = this->get_channels();&#xA;    AVChannelLayout ch_layout_1;&#xA;    av_channel_layout_uninit(&amp;ch_layout_1);&#xA;    av_channel_layout_default(&amp;ch_layout_1, this->get_channels());&#xA;    codec_ctx->ch_layout = ch_layout_1;&#xA;&#xA;    // Open codec&#xA;    ret = avcodec_open2(codec_ctx, codec_ptr, nullptr);&#xA;    if (ret &lt; 0) {&#xA;        throw std::runtime_error("Could not open codec.");&#xA;    }&#xA;&#xA;    // Initialize packet&#xA;    pkt = av_packet_alloc();&#xA;    if (!pkt) {&#xA;        throw std::runtime_error("Could not allocate AVPacket.");&#xA;    }&#xA;&#xA;    // Initialize frame&#xA;    frame = av_frame_alloc();&#xA;    if (!frame) {&#xA;        throw std::runtime_error("Could not allocate AVFrame.");&#xA;    }&#xA;&#xA;    frame->nb_samples = codec_ctx->frame_size;&#xA;    frame->format = codec_ctx->sample_fmt;&#xA;    frame->ch_layout = codec_ctx->ch_layout;&#xA;    frame->sample_rate = codec_ctx->sample_rate;&#xA;&#xA;    // Allocate data buffer&#xA;    ret = av_frame_get_buffer(frame, 0);&#xA;    if (ret &lt; 0) {&#xA;        throw std::runtime_error("Could not allocate audio data buffers.");&#xA;    }&#xA;&#xA;    // Encode frames&#xA;    int samples_read = 0;&#xA;    while (samples_read &lt; data_.size()) {&#xA;        ret = av_frame_make_writable(frame);&#xA;        if (ret &lt; 0) {&#xA;            throw std::runtime_error("Frame not writable.");&#xA;        }&#xA;&#xA;        // Determine the number of samples to copy into the frame&#xA;        int frame_size = std::min<int>(codec_ctx->frame_size, (data_.size() - samples_read) / frame_width_);&#xA;        int buffer_size = frame_size * frame_width_;&#xA;&#xA;        // Clear the frame data to avoid artifacts from previous data&#xA;        std::memset(frame->data[0], 0, codec_ctx->frame_size * frame_width_);&#xA;&#xA;        // Copy the actual audio data into the frame&#xA;        std::memcpy(frame->data[0], data_.data() &#x2B; samples_read, buffer_size);&#xA;        samples_read &#x2B;= buffer_size;&#xA;&#xA;        // If the frame is partially filled, pad the remaining part with zeros&#xA;        if (frame_size &lt; codec_ctx->frame_size) {&#xA;            std::memset(frame->data[0] &#x2B; buffer_size, 0, (codec_ctx->frame_size - frame_size) * frame_width_);&#xA;        }&#xA;&#xA;        // Send the frame for encoding&#xA;        ret = avcodec_send_frame(codec_ctx, frame);&#xA;        if (ret &lt; 0) {&#xA;            throw std::runtime_error("Error sending frame for encoding.");&#xA;        }&#xA;&#xA;        // Receive and write packets&#xA;        while (ret >= 0) {&#xA;            ret = avcodec_receive_packet(codec_ctx, pkt);&#xA;            if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) {&#xA;                break;&#xA;            }&#xA;            else if (ret &lt; 0) {&#xA;                throw std::runtime_error("Error encoding frame.");&#xA;            }&#xA;&#xA;            out_file.write(reinterpret_cast(pkt->data), pkt->size);&#xA;            av_packet_unref(pkt);&#xA;        }&#xA;    }&#xA;&#xA;    // **Explicitly flush the encoder**&#xA;    ret = avcodec_send_frame(codec_ctx, nullptr);&#xA;    if (ret &lt; 0) {&#xA;        throw std::runtime_error("Error flushing the encoder.");&#xA;    }&#xA;&#xA;    // Receive and write remaining packets after flushing&#xA;    while (ret >= 0) {&#xA;        ret = avcodec_receive_packet(codec_ctx, pkt);&#xA;        if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) {&#xA;            break;&#xA;        }&#xA;        else if (ret &lt; 0) {&#xA;            throw std::runtime_error("Error encoding frame during flush.");&#xA;        }&#xA;&#xA;        out_file.write(reinterpret_cast(pkt->data), pkt->size);&#xA;        av_packet_unref(pkt);&#xA;    }&#xA;&#xA;    // Cleanup&#xA;    av_frame_free(&amp;frame);&#xA;    av_packet_free(&amp;pkt);&#xA;    avcodec_free_context(&amp;codec_ctx);&#xA;    avformat_free_context(format_ctx);&#xA;&#xA;    return out_file;&#xA;}&#xA;</int></const></char>

    &#xA;

    I have no run time error but i see this message in console :

    &#xA;

    [libmp3lame @ 000002d26b239ac0] Trying to remove 47 more samples than there are in the queue&#xA;

    &#xA;

    I can play the exported mp3 file but there is background noise.

    &#xA;

  • Revision 33331 : simplifier les petitions : le tableau des signatures utilise les classe ...

    27 novembre 2009, par cedric@… — Log

    simplifier les petitions : le tableau des signatures utilise les classe generiques table.spip et autre qui lui permet d’etre par defaut dans le theme. Les class specifiques sur chaque element restent utilisables pour affiner si (...)