Recherche avancée

Médias (1)

Mot : - Tags -/Christian Nold

Autres articles (96)

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

  • Multilang : améliorer l’interface pour les blocs multilingues

    18 février 2011, par

    Multilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
    Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela.

  • ANNEXE : Les plugins utilisés spécifiquement pour la ferme

    5 mars 2010, par

    Le site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation ; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs ; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3) ; le plugin champs extras v2 nécessité par inscription3 (...)

Sur d’autres sites (8691)

  • ffmpeg concat doesn't keep video speed/framerate ?

    28 août 2016, par Nick

    I have a bunch of small webm clips in directory vidchunks. These clips were generated using javascript MediaRecorder API.

    MediaRecorder code :

    var mRecorder;
    var chunks = [];
    navigator.mediaDevices.getUserMedia({
     audio: false,
     video: {
     width: 1280,
     height: 760,
     mozMediaSource: "screen",
     mediaSource: "screen"
    }
    }).then(function(stream) {
     mRecorder = new MediaRecorder(stream,{mimeType:"video/webm"});
     mRecorder.ondataavailable = function(event) {
       var blob = event.data;
       chunks.push(blob);
       var vidchunk = new Blob(chunks);
       // save to directory vid chunk.
     };
     mRecorder.start(5000);
    }).catch(function(error) {
     console.log(error.message);
    });

    Then, once I have a bunch of these 5 second clips, I merge them :

    ffmpeg -safe 0 \
    -f concat -i <(for f in `ls vidchunks/* | sort -V`; do echo file $f; done) \
    -c:v copy -r 30 -vsync drop test.webm

    When I play back these chunks individually, they play correctly. All 5 seconds of video are rendered smoothly.

    However, once I merge, some 5 second chunks are condensed to like 1 second. So the total video, which should be 50 seconds for 10 chunks, turns out to be like 38 seconds because three of the chunks got condensed to 1 second.

    Any ideas on how to fix this ?

    EDIT : I’ve tried :

    • without "-r 30 -vsync drop"
    • without "-c:v copy"

    No changes...

    EDIT2 (some ffprobe outputs) :

    ffprobe 1472343170-1.webm

    ffprobe version 2.8.6-1ubuntu2 Copyright (c) 2007-2016 the FFmpeg developers
     built with gcc 5.3.1 (Ubuntu 5.3.1-11ubuntu1) 20160311
     configuration: --prefix=/usr --extra-version=1ubuntu2 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
     libavutil      54. 31.100 / 54. 31.100
     libavcodec     56. 60.100 / 56. 60.100
     libavformat    56. 40.101 / 56. 40.101
     libavdevice    56.  4.100 / 56.  4.100
     libavfilter     5. 40.101 /  5. 40.101
     libavresample   2.  1.  0 /  2.  1.  0
     libswscale      3.  1.101 /  3.  1.101
     libswresample   1.  2.101 /  1.  2.101
     libpostproc    53.  3.100 / 53.  3.100
    Input #0, matroska,webm, from '1472343170-1.webm':
     Metadata:
       encoder         : Chrome
     Duration: N/A, start: 0.000000, bitrate: N/A
       Stream #0:0(eng): Video: vp8, yuv420p, 1280x760, SAR 1:1 DAR 32:19, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)

    ffprobe 1472343245-16.webm

    ffprobe version 2.8.6-1ubuntu2 Copyright (c) 2007-2016 the FFmpeg developers
     built with gcc 5.3.1 (Ubuntu 5.3.1-11ubuntu1) 20160311
     configuration: --prefix=/usr --extra-version=1ubuntu2 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
     libavutil      54. 31.100 / 54. 31.100
     libavcodec     56. 60.100 / 56. 60.100
     libavformat    56. 40.101 / 56. 40.101
     libavdevice    56.  4.100 / 56.  4.100
     libavfilter     5. 40.101 /  5. 40.101
     libavresample   2.  1.  0 /  2.  1.  0
     libswscale      3.  1.101 /  3.  1.101
     libswresample   1.  2.101 /  1.  2.101
     libpostproc    53.  3.100 / 53.  3.100
    Input #0, matroska,webm, from '1472343245-16.webm':
     Metadata:
       encoder         : Chrome
     Duration: N/A, start: 0.000000, bitrate: N/A
       Stream #0:0(eng): Video: vp8, yuv420p, 1280x760, SAR 1:1 DAR 32:19, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)

    ffprobe 1472343350-37.webm

    ffprobe version 2.8.6-1ubuntu2 Copyright (c) 2007-2016 the FFmpeg developers
     built with gcc 5.3.1 (Ubuntu 5.3.1-11ubuntu1) 20160311
     configuration: --prefix=/usr --extra-version=1ubuntu2 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
     libavutil      54. 31.100 / 54. 31.100
     libavcodec     56. 60.100 / 56. 60.100
     libavformat    56. 40.101 / 56. 40.101
     libavdevice    56.  4.100 / 56.  4.100
     libavfilter     5. 40.101 /  5. 40.101
     libavresample   2.  1.  0 /  2.  1.  0
     libswscale      3.  1.101 /  3.  1.101
     libswresample   1.  2.101 /  1.  2.101
     libpostproc    53.  3.100 / 53.  3.100
    Input #0, matroska,webm, from '1472343350-37.webm':
     Metadata:
       encoder         : Chrome
     Duration: N/A, start: 0.000000, bitrate: N/A
       Stream #0:0(eng): Video: vp8, yuv420p, 1280x760, SAR 1:1 DAR 32:19, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)

    I also noticed that the merged video plays normal when the mouse is moving around on the screen, but when the mouse is not moving, it moves 5x faster.

    I know this because I have a timer on the screen that I’m recording, and I can see that the timer speeds up significantly when mouse isn’t moving but when mouse is moving, the timer moves at normal speed.

    EDIT3 :
    The DTS/PTS looks like resets after each file is merged :

    DTS -9223363446915256, next:6866667 st:0 invalid dropping
    PTS -9223363446915256, next:6866667 invalid dropping st:0
    DTS -9223363446915222, next:6900000 st:0 invalid dropping
    PTS -9223363446915222, next:6900000 invalid dropping st:0
    DTS -9223363446915188, next:6933333 st:0 invalid dropping
    PTS -9223363446915188, next:6933333 invalid dropping st:0
    [concat @ 0x1cde3e0] DTS -9223363446920184 < 5006 out of order
    DTS -9223363446920184, next:5033333 st:0 invalid dropping
    PTS -9223363446920184, next:5033333 invalid dropping st:0
    DTS -9223363446920056, next:5066667 st:0 invalid dropping
    PTS -9223363446920056, next:5066667 invalid dropping st:0
    DTS -9223363446919956, next:5100000 st:0 invalid dropping
    PTS -9223363446919956, next:5100000 invalid dropping st:0

    EDIT4 : Tried ffmpeg -i "$f" -y -c copy -fflags +genpts "$f" and then merge again.

    Works a lot better, but now other files are getting skipped.

    Here’s ffprobe from a file that’s skipped :

    Metadata:
       encoder         : Lavf56.40.101
     Duration: 00:00:01.17, start: 0.000000, bitrate: 428 kb/s
       Stream #0:0(eng): Video: vp8, yuv420p, 1280x760, SAR 1:1 DAR 32:19, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)
    [webm @ 0x1c01940] Codec for stream 0 does not use global headers but container format requires global headers
    Output #0, webm, to '1472343225-12.webm':
     Metadata:
       encoder         : Lavf56.40.101
       Stream #0:0(eng): Video: vp8, yuv420p, 1280x760 [SAR 1:1 DAR 32:19], q=2-31, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)
    Stream mapping:
     Stream #0:0 -> #0:0 (copy)

    Here’s ffprobe from a file not skipped :

    Input #0, matroska,webm, from '1472343215-10.webm':
     Metadata:
       encoder         : Lavf56.40.101
     Duration: 00:00:05.03, start: 0.000000, bitrate: 80 kb/s
       Stream #0:0(eng): Video: vp8, yuv420p, 1280x760, SAR 1:1 DAR 32:19, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)
    [webm @ 0x1349940] Codec for stream 0 does not use global headers but container format requires global headers
    Output #0, webm, to '1472343215-10.webm':
     Metadata:
       encoder         : Lavf56.40.101
       Stream #0:0(eng): Video: vp8, yuv420p, 1280x760 [SAR 1:1 DAR 32:19], q=2-31, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)
    Stream mapping:
     Stream #0:0 -> #0:0 (copy)
  • Anomalie #3825 (Nouveau) : Manque le champ "langue_choisie" dans la base "spip_syndic_articles"

    31 août 2016, par Eric Camus

    Système Windows + IIS, PHP 5.4 MySQL 5.0, SPIP 3.1 et 3.0.
    Quand on met un site avec syndication alors il pleut des erreurs dans le "mysql.log" et "spip.log" :

    2016-08-31 07:13:25 195.83.13.139 (pid 20516) :Pub:ERREUR : Erreur 1054 de mysql : Unknown column ’langue_choisie’ in ’field list’
    UPDATE `xxxx`.spip_syndic_articles
    SET lang=’fr’,langue_choisie=’oui’
    WHERE id_syndic_article=6427
    
  • FFmpeg RTP : Bad packed header lengths

    13 septembre 2016, par bot1131357

    I use the av_sdp_create() to generate my SDP file but I think something’s wrong. Here is the output :

    Output #0, rtp, to 'rtp://127.0.0.1:8554':
       Stream #0:0: Audio: vorbis (libvorbis), 44100 Hz, stereo, fltp, 64 kb/s
    v=0
    o=- 0 0 IN IP4 127.0.0.1
    s=No Name
    c=IN IP4 127.0.0.1
    t=0 0
    a=tool:libavformat 57.25.101
    m=audio 8554 RTP/AVP 96
    b=AS:64
    a=rtpmap:96 vorbis/44100/2
    a=fmtp:96 configuration=AAAAAf7Nug7RAh4AAXZvcmJpcwAAAAACRKwAAP////8A+gAA/////7gBBXZvcmJpcyFCQ1YBAAABABhjVClGmVLSSokZc5QxRplikkqJpYQWQkidcxRTqTnXnGusubUghBAaU1ApBZlSjlJpGWOQKQWZUhBLSSV0EjonnWMQW0nB1phri0G2HIQNmlJMKcSUUopCCBlTjCnFlFJKQgcldA465hxTjkooQbicc6u1lpZji6l0kkrnJGRMQkgphZJKB6VTTkJINZbWUikdc1JSakHoIIQQQrYghA2C0JBVAAABAMBAEBqyCgBQAAAQiqEYigKEhqwCADIAAASgKI7iKI4jOZJjSRYQGrIKAAACABAAAMBwFEmRFMmxJEvSLEvTRFFVfdU2VVX2dV3XdV3XdSA0ZBUAAAEAQEinmaUaIMIMZBgIDVkFACAAAABGKMIQA0JDVgEAAAEAAGIoOYgmtOZ8c46DZjloKsXmdHAi1eZJbirm5pxzzjknm3PGOOecc4pyZjFoJrTmnHMSg2YpaCa05pxznsTmQWuqtOacc8Y5p4NxRhjnnHOatOZBajbW5pxzFrSmOWouxeaccyLl5kltLtXmnHPOOeecc84555xzqhenc3BOOOecc6L25lpuQhfnnHM+Gad7c0I455xzzjnnnHPOOeecc4LQkFUAABAAAEEYNoZxpyBIn6OBGEWIacikB92jwyRoDHIKqUejo5FS6iCUVMZJKZ0gNGQVAAAIAAAhhBRSSCGFFFJIIYUUUoghhhhiyCmnnIIKKqmkoooyyiyzzDLLLLPMMuuws8467DDEEEMMrbQSS0211VhjrbnnnG

    If I try to use the SDP file anyway, I get the following message :

    >ffplay -i test2.sdp -protocol_whitelist file,udp,rtp
    ffplay version N-78598-g98a0053 Copyright (c) 2003-2016 the FFmpeg developers
     built with gcc 5.3.0 (GCC)
     configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --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. 18.100 / 55. 18.100
     libavcodec     57. 24.103 / 57. 24.103
     libavformat    57. 25.101 / 57. 25.101
     libavdevice    57.  0.101 / 57.  0.101
     libavfilter     6. 34.100 /  6. 34.100
     libswscale      4.  0.100 /  4.  0.100
     libswresample   2.  0.101 /  2.  0.101
     libpostproc    54.  0.100 / 54.  0.100
    [NULL @ 05aea880] Bad packed header lengths (30,0,616,3793) f=0/0
    [vorbis @ 05aea880] Extradata missing.
    [sdp @ 05ad7ec0] Failed to open codec in av_find_stream_info
       nan    :  0.000 fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0

    Am I overlooking something important ? Am I going about this the wrong way ? Any help would be much appreciated.

    Here is my source :

    #include "stdafx.h"
    #include
    extern "C"
    {
    #include <libavutil></libavutil>opt.h>
    #include <libavcodec></libavcodec>avcodec.h>
    #include <libavutil></libavutil>channel_layout.h>
    #include <libavutil></libavutil>common.h>
    #include <libavutil></libavutil>imgutils.h>
    #include <libavutil></libavutil>mathematics.h>
    #include <libavutil></libavutil>samplefmt.h>
    #include <libavformat></libavformat>avformat.h>
    }

    /* check that a given sample format is supported by the encoder */
    static int check_sample_fmt(AVCodec *codec, enum AVSampleFormat sample_fmt)
    {
       const enum AVSampleFormat *p = codec->sample_fmts;

       while (*p != AV_SAMPLE_FMT_NONE) {
           if (*p == sample_fmt)
               return 1;
           p++;
       }
       return 0;
    }


    /* just pick the highest supported samplerate */
    static int select_sample_rate(AVCodec *codec)
    {
       const int *p;
       int best_samplerate = 0;

       if (!codec->supported_samplerates)
           return 44100;

       p = codec->supported_samplerates;
       while (*p) {
           best_samplerate = FFMAX(*p, best_samplerate);
           p++;
       }
       return best_samplerate;
    }

    /* select layout with the highest channel count */
    static int select_channel_layout(AVCodec *codec)
    {
       const uint64_t *p;
       uint64_t best_ch_layout = 0;
       int best_nb_channels = 0;

       if (!codec->channel_layouts)
           return AV_CH_LAYOUT_STEREO;

       p = codec->channel_layouts;
       while (*p) {
           int nb_channels = av_get_channel_layout_nb_channels(*p);

           if (nb_channels > best_nb_channels) {
               best_ch_layout = *p;
               best_nb_channels = nb_channels;
           }
           p++;
       }
       return best_ch_layout;
    }


    static int write_frame(AVFormatContext *fmt_ctx, const AVRational *time_base, AVStream *st, AVPacket *pkt)
    {
       /* rescale output packet timestamp values from codec to stream timebase */
       av_packet_rescale_ts(pkt, *time_base, st->time_base);

       /* Write the compressed frame to the media file. */
       return av_interleaved_write_frame(fmt_ctx, pkt);
    }

    /*
    * Audio encoding example
    */
    static void audio_encode_example(const char *filename)
    {
       AVPacket pkt;
       int i, j, k, ret, got_output;
       int buffer_size;

       uint16_t *samples;
       float t, tincr;


       AVCodec *outCodec = NULL;
       AVCodecContext *outCodecCtx = NULL;
       AVFormatContext *outFormatCtx = NULL;
       AVStream * outAudioStream = NULL;
       AVFrame *outFrame = NULL;

       ret = avformat_alloc_output_context2(&amp;outFormatCtx, NULL, "rtp", filename);
       if (!outFormatCtx || ret &lt; 0)
       {
           fprintf(stderr, "Could not allocate output context");
       }

       outFormatCtx->flags |= AVFMT_FLAG_NOBUFFER | AVFMT_FLAG_FLUSH_PACKETS;
       outFormatCtx->max_interleave_delta = 1;
       outFormatCtx->oformat->audio_codec = AV_CODEC_ID_VORBIS;

       /* find the encoder */
       outCodec = avcodec_find_encoder(outFormatCtx->oformat->audio_codec);
       if (!outCodec) {
           fprintf(stderr, "Codec not found\n");
           exit(1);
       }

       outAudioStream = avformat_new_stream(outFormatCtx, outCodec);
       if (!outAudioStream)
       {
           fprintf(stderr, "Cannot add new audio stream\n");
           exit(1);
       }

       outAudioStream->id = outFormatCtx->nb_streams - 1;
       outAudioStream->time_base.den = 44100; // 44.100 kHz
       outAudioStream->time_base.num = 1;

       outCodecCtx = outAudioStream->codec;
       outCodecCtx->bit_rate = 64000;
       outCodecCtx->time_base.den = outAudioStream->time_base.den;
       outCodecCtx->time_base.num = outAudioStream->time_base.num;


       /* check that the encoder supports input */
       outCodecCtx->sample_fmt = AV_SAMPLE_FMT_FLTP;
       if (!check_sample_fmt(outCodec, outCodecCtx->sample_fmt)) {
           fprintf(stderr, "Encoder does not support sample format %s",
               av_get_sample_fmt_name(outCodecCtx->sample_fmt));
           exit(1);
       }

       /* select other audio parameters supported by the encoder */
       outCodecCtx->sample_rate = select_sample_rate(outCodec);
       outCodecCtx->channel_layout = select_channel_layout(outCodec);
       outCodecCtx->channels = av_get_channel_layout_nb_channels(outCodecCtx->channel_layout);

       /* open it */
       if (avcodec_open2(outCodecCtx, outCodec, NULL) &lt; 0) {
           fprintf(stderr, "Could not open codec\n");
           exit(1);
       }

       av_dump_format(outFormatCtx, 0, filename, 1);

       char buff[2048] = { 0 };
       av_sdp_create(&amp;outFormatCtx, 1, buff, 1024);
       printf("%s", buff);

       (...SDP printed here...)

       ret = avio_open2(&amp;outFormatCtx->pb, filename, AVIO_FLAG_WRITE, NULL, NULL);
       ret = avformat_write_header(outFormatCtx, NULL);
       printf("ret = %d\n", ret);
       if (ret &lt;0)
           exit(1);

       /* frame containing input audio */
       outFrame = av_frame_alloc();
       if (!outFrame) {
           fprintf(stderr, "Could not allocate audio frame\n");
           exit(1);
       }

       outFrame->nb_samples = outCodecCtx->frame_size;
       outFrame->format = outCodecCtx->sample_fmt;
       outFrame->channel_layout = outCodecCtx->channel_layout;

       /* the codec gives us the frame size, in samples,
       * we calculate the size of the samples buffer in bytes */
       buffer_size = av_samples_get_buffer_size(NULL, outCodecCtx->channels, outCodecCtx->frame_size,
           outCodecCtx->sample_fmt, 0);
       if (buffer_size &lt; 0) {
           fprintf(stderr, "Could not get sample buffer size\n");
           exit(1);
       }
       samples = (uint16_t*)av_malloc(buffer_size);
       if (!samples) {
           fprintf(stderr, "Could not allocate %d bytes for samples buffer\n",
               buffer_size);
           exit(1);
       }
       /* setup the data pointers in the AVFrame */
       ret = avcodec_fill_audio_frame(outFrame, outCodecCtx->channels, outCodecCtx->sample_fmt,
           (const uint8_t*)samples, buffer_size, 0);
       if (ret &lt; 0) {
           fprintf(stderr, "Could not setup audio frame\n");
           exit(1);
       }

       /* encode a single tone sound */
       t = 0;
       int next_pts = 0;
       tincr = 2 * M_PI * 440.0 / outCodecCtx->sample_rate;
       for (i = 0; i &lt; 44000; i++) {
           av_init_packet(&amp;pkt);
           pkt.data = NULL; // packet data will be allocated by the encoder
           pkt.size = 0;

           for (j = 0; j &lt; outCodecCtx->frame_size; j++) {
               samples[2 * j] = (int)(sin(t) * 10000);

               for (k = 1; k &lt; outCodecCtx->channels; k++)
                   samples[2 * j + k] = samples[2 * j];
               t += tincr;
           }

           // Sets time stamp
           next_pts += outFrame->nb_samples;
           outFrame->pts = next_pts;

           /* encode the samples */
           ret = avcodec_encode_audio2(outCodecCtx, &amp;pkt, outFrame, &amp;got_output);
           if (ret &lt; 0) {
               fprintf(stderr, "Error encoding audio frame\n");
               exit(1);
           }
           if (got_output) {
               //fwrite(pkt.data, 1, pkt.size, f);
               //pkt.stream_index = pktidx++;
               write_frame(outFormatCtx, &amp;outCodecCtx->time_base, outAudioStream, &amp;pkt);
               av_packet_unref(&amp;pkt);
           }

       }

       /* get the delayed frames */
       for (got_output = 1; got_output; i++) {
           ret = avcodec_encode_audio2(outCodecCtx, &amp;pkt, NULL, &amp;got_output);
           if (ret &lt; 0) {
               fprintf(stderr, "Error encoding frame\n");
               exit(1);
           }

           if (got_output) {
               //fwrite(pkt.data, 1, pkt.size, f);
               pkt.pts = AV_NOPTS_VALUE;
               write_frame(outFormatCtx, &amp;outCodecCtx->time_base, outAudioStream, &amp;pkt);
               av_packet_unref(&amp;pkt);
           }
       }

       av_freep(&amp;samples);
       av_frame_free(&amp;outFrame);
       avcodec_close(outCodecCtx);
       av_free(outCodecCtx);
    }


    int main(int argc, char **argv)
    {
       const char *output;

       /* register all the codecs */
       //avcodec_register_all();
       av_register_all();
       avformat_network_init(); // for network streaming

       audio_encode_example("rtp://127.0.0.1:8554");

       return 0;
    }