Recherche avancée

Médias (2)

Mot : - Tags -/media

Autres articles (75)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

  • Ecrire une actualité

    21 juin 2013, par

    Présentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
    Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
    Vous pouvez personnaliser le formulaire de création d’une actualité.
    Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...)

  • Le profil des utilisateurs

    12 avril 2011, par

    Chaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
    L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...)

Sur d’autres sites (9845)

  • "How can we use Ffmpeg to apply blur, overlay a logo and waveform, and add a border around a video, step by step ? [closed]

    1er février 2024, par itsfaisalkhalid

    We're looking to enhance a video using Ffmpeg by implementing several effects sequentially. First, we aim to apply a blur effect to the entire video. Then, we want to overlay a logo and a waveform onto the blurred video. Finally, we need to add a border around the entire composition. This step-by-step process requires precise commands and careful consideration of parameters to achieve the desired result effectively.

    


    I utilized Ffmpeg commands to sequentially apply blur, overlay the logo and waveform, and add a border to the video. I expected each effect to be applied in the specified order, resulting in a visually enhanced video with all desired elements. However, I encountered challenges in properly configuring the parameters for each effect, leading to unexpected results such as misaligned overlays or improper blur intensity.

    


    @echo off
setlocal enabledelayedexpansion

rem Set paths and directories
set "ffmpeg_path=C:\ffmpeg\bin\ffmpeg.exe"
set "input_dir=_input"
set "output_dir=_output"

rem Ensure input and output directories exist
if not exist "%input_dir%" (
    echo Error: Input directory "%input_dir%" not found.
    exit /b 1
)

if not exist "%output_dir%" (
    mkdir "%output_dir%"
)

rem Loop through input directory
for %%t in ("%input_dir%\*.*") DO (

    rem Process each file with ffmpeg
"%ffmpeg_path%" -y -i "%%t" -i logo.png -filter_complex "\
    [0:v]eq=brightness=0.2:saturation=2.0:contrast=1.2, crop=iw/1.2:ih/1.2, \
    boxblur=1:2 [blurred_bg]; \
    [blurred_bg][1:v]overlay=(main_w-overlay_w)/2:(main_h-overlay_h-10)[bg_with_logo]; \
    [0:a]showwaves=s=1080x100:mode=line:colors=white [waveform]; \
    [bg_with_logo][waveform]overlay=10:H-h-10, \
    format=yuv420p[v]; \
    [v]pad=iw+20:ih+20:x=10:y=10:color=white[final_output]" \
    -map "[final_output]" -map 0:a -c:v h264 -c:a aac -b:a 128k -ar 44100 "%output_dir%\temp.mp4"

    rem Check if output file exists
    if exist "%output_dir%\temp.mp4" (
        rem Calculate new MD5 hash
        certutil -hashfile "%output_dir%\temp.mp4" MD5 > "%output_dir%\temp_md5.txt"

        rem Remove ID3 tag metadata
        "%ffmpeg_path%" -i "%output_dir%\temp.mp4" -map_metadata -1 -c:v copy -c:a copy "%output_dir%\%%~nt.mp4"

        rem Clean up temporary files
        del "%output_dir%\temp.mp4"
        del "%output_dir%\temp_md5.txt"
    ) else (
        echo Error: Failed to create output file for "%%~nt"
    )
)

pause



    


  • cap.isOpened() : returns false in CentOS for Python 3 and OpenCV 3.1.0

    29 octobre 2017, par Mona Jalal

    So cap from opencv 3 doesn’t work in CentOS. I had no problem in OSX or Windows 7 which I tried initially.
    Here is the example code :

    import cv2
    cap = cv2.VideoCapture('/home/grad3/jalal/PycharmProjects/hw4_cs58‌​5/Concession_LAN_8‌​‌​00‌​k.mp4',cv2.CAP_FFMPEG)

    if not cap.isOpened():
       print('not opened')

    while True:
       ret,frame = cap.read()

       if ret == False:
           print('frame empty')
           break
       cv2.imshow('frame', frame)
       if cv2.waitKey(1) == ord('q'):
           break

    And I get :

    /usr/local/anaconda3/bin/python /home/grad3/jalal/PycharmProjects/hw4_cs585/test.py
    not opened
    frame empty

    Process finished with exit code 0

    I can open the video using ffplay vid_name and also here is the result of https://pastebin.com/YGk2DDCi here https://pastebin.com/HSyHSsEZ (ffmpeg codecs). How should I fix this ?

    I have opencv 3.1.0 and here’s some sys info.

    $ uname -a
    Linux goku.bu.edu 3.10.0-693.5.2.el7.x86_64 #1 SMP Fri Oct 20 20:32:50 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

    and

    $ lsb_release -a
    LSB Version:    :core-4.1-amd64:core-4.1-noarch
    Distributor ID: CentOS
    Description:    CentOS Linux release 7.4.1708 (Core)
    Release:    7.4.1708
    Codename:   Core

    cv2. getBuildInformation()
    General configuration for OpenCV 3.1.0 =====================================
     Version control:               unknown

     Platform:
       Host:                        Linux 4.8.0-46-generic x86_64
       CMake:                       3.6.3
       CMake generator:             Unix Makefiles
       CMake build tool:            /usr/bin/gmake
       Configuration:               Release

     C/C++:
       Built as dynamic libs?:      YES
       C++ Compiler:                /opt/rh/devtoolset-2/root/usr/bin/c++  (ver 4.8.2)
       C++ flags (Release):         -I/cs/software/anaconda3/include    -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mno-avx -msse3 -mno-ssse3 -mno-sse4.1 -mno-sse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -fopenmp -O3 -DNDEBUG  -DNDEBUG
       C++ flags (Debug):           -I/cs/software/anaconda3/include    -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mno-avx -msse3 -mno-ssse3 -mno-sse4.1 -mno-sse4.2 -ffunction-sections -fvisibility=hidden -fvisibility-inlines-hidden -fopenmp -g  -O0 -DDEBUG -D_DEBUG
       C Compiler:                  /opt/rh/devtoolset-2/root/usr/bin/cc
       C flags (Release):           -I/cs/software/anaconda3/include    -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mno-avx -msse3 -mno-ssse3 -mno-sse4.1 -mno-sse4.2 -ffunction-sections -fvisibility=hidden -fopenmp -O3 -DNDEBUG  -DNDEBUG
       C flags (Debug):             -I/cs/software/anaconda3/include    -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -mno-avx -msse3 -mno-ssse3 -mno-sse4.1 -mno-sse4.2 -ffunction-sections -fvisibility=hidden -fopenmp -g  -O0 -DDEBUG -D_DEBUG
       Linker flags (Release):
       Linker flags (Debug):
       Precompiled headers:         YES
       Extra dependencies:          /cs/software/anaconda3/lib/libjpeg.so /cs/software/anaconda3/lib/libpng.so /cs/software/anaconda3/lib/libtiff.so /cs/software/anaconda3/lib/libhdf5.so /usr/lib64/librt.so /usr/lib64/libpthread.so /cs/software/anaconda3/lib/libz.so /usr/lib64/libdl.so /usr/lib64/libm.so dl m pthread rt
       3rdparty dependencies:       libwebp libjasper IlmImf libprotobuf

     OpenCV modules:
       To be built:                 core flann hdf imgproc ml photo reg surface_matching video dnn fuzzy imgcodecs shape videoio highgui objdetect plot superres xobjdetect xphoto bgsegm bioinspired dpm face features2d line_descriptor saliency text calib3d ccalib datasets rgbd stereo structured_light tracking videostab xfeatures2d ximgproc aruco optflow stitching python3
       Disabled:                    world contrib_world
       Disabled by dependency:      -
       Unavailable:                 cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev java python2 ts viz cvv matlab sfm

     GUI:
       QT:                          NO
       GTK+:                        NO
       GThread :                    NO
       GtkGlExt:                    NO
       OpenGL support:              NO
       VTK support:                 NO

     Media I/O:
       ZLib:                        /cs/software/anaconda3/lib/libz.so (ver 1.2.8)
       JPEG:                        /cs/software/anaconda3/lib/libjpeg.so (ver 80)
       WEBP:                        build (ver 0.3.1)
       PNG:                         /cs/software/anaconda3/lib/libpng.so (ver 1.6.27)
       TIFF:                        /cs/software/anaconda3/lib/libtiff.so (ver 42 - 4.0.6)
       JPEG 2000:                   build (ver 1.900.1)
       OpenEXR:                     build (ver 1.7.1)
       GDAL:                        NO

     Video I/O:
       DC1394 1.x:                  NO
       DC1394 2.x:                  NO
       FFMPEG:                      NO
         codec:                     NO
         format:                    NO
         util:                      NO
         swscale:                   NO
         resample:                  NO
         gentoo-style:              NO
       GStreamer:                   NO
       OpenNI:                      NO
       OpenNI PrimeSensor Modules:  NO
       OpenNI2:                     NO
       PvAPI:                       NO
       GigEVisionSDK:               NO
       UniCap:                      NO
       UniCap ucil:                 NO
       V4L/V4L2:                    YES/YES
       XIMEA:                       NO
       Xine:                        NO
       gPhoto2:                     NO

     Parallel framework:            OpenMP

     Other third-party libraries:
       Use IPP:                     9.0.1 [9.0.1]
            at:                     /opt/conda/conda-bld/opencv_1491943704081/work/opencv-3.1.0/3rdparty/ippicv/unpack/ippicv_lnx
       Use IPP Async:               NO
       Use VA:                      NO
       Use Intel VA-API/OpenCL:     NO
       Use Eigen:                   YES (ver 3.2.8)
       Use Cuda:                    NO
       Use OpenCL:                  NO
       Use custom HAL:              NO

     Python 2:
       Interpreter:                 (ver 3.5.3)

     Python 3:
       Interpreter:                 /cs/software/anaconda3/bin/python (ver 3.5.3)
       Libraries:                   /cs/software/anaconda3/lib/libpython3.5m.so (ver 3.5.3)
       numpy:                       /cs/software/anaconda3/lib/python3.5/site-packages/numpy/core/include (ver 1.12.1)
       packages path:               /cs/software/anaconda3/lib/python3.5/site-packages

     Python (for build):            

     Java:
       ant:                         NO
       JNI:                         NO
       Java wrappers:               NO
       Java tests:                  NO

     Matlab:                        NO

     Tests and samples:
       Tests:                       NO
       Performance tests:           NO
       C/C++ Examples:              NO

     Install path:                  /cs/software/anaconda3

     cvconfig.h is in:              /opt/conda/conda-bld/opencv_1491943704081/work/opencv-3.1.0/build
    -----------------------------------------------------------------

    UPDATE : tried .avi and .flv formats and the same problem !

  • Make Qt Player codec independent

    16 mars 2016, par Tejas Virpariya

    I develop Qt application which can play more then one video file using bellow code.

    QMediaPlayer *player;
    QString fileName = "C:/username/test.h264";
    player->setmedia(QUrl::fromLocalFile(fileName));

    In starting I cannot play all types of video file, so I install codec on my system, now when my player start codec decoder start, and my CPU usage reach at high.(Show the bellow Image)

    enter image description here

    You can see in above image right side bottom corner LAW(Red label) which saw external decoder started.

    Now, I want to make my Qt Player codec independent, means I know my player have to play only .h264 file, so I will use only h264 decoder and no need of audio so I will not use audio decoder.

    As per my knowledge, QMediaPlayer start decoder when it come in picture, correct me if i am wrong. So What can I do to stop external decoder and decode frame internally and play successfully ?

    EDIT : code for audio decode using FFmpeg

    FFmpegAudio.pro

    TARGET = fooAudioFFMPEG
    QT       += core gui qml quick widgets
    TEMPLATE = app
    SOURCES += main.cpp \
       mainwindow.cpp
    HEADERS += mainwindow.h \
       wrapper.h
    FORMS += mainwindow.ui
    QMAKE_CXXFLAGS += -D__STDC_CONSTANT_MACROS

    LIBS += -pthread
    LIBS += -L/usr/local/lib
    LIBS += -lavdevice
    LIBS += -lavfilter
    LIBS += -lpostproc
    LIBS += -lavformat
    LIBS += -lavcodec
    LIBS += -ldl
    LIBS += -lXfixes
    LIBS += -lXext
    LIBS += -lX11
    LIBS += -lasound
    LIBS += -lSDL
    LIBS += -lx264
    LIBS += -lvpx
    LIBS += -lvorbisenc
    LIBS += -lvorbis
    LIBS += -logg
    LIBS += -lopencore-amrwb
    LIBS += -lopencore-amrnb
    LIBS += -lmp3lame
    LIBS += -lfaac
    LIBS += -lz
    LIBS += -lrt
    LIBS += -lswscale
    LIBS += -lavutil
    LIBS += -lm

    mainwindow.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H

    #include <qmainwindow>

    namespace Ui {
       class MainWindow;
    }

    class MainWindow : public QMainWindow {
       Q_OBJECT
    public:
       MainWindow(QWidget *parent = 0);
       ~MainWindow();

    protected:
       void changeEvent(QEvent *e);

    private:
       Ui::MainWindow *ui;

    private slots:
       void on_pushButton_clicked();
    };

    #endif // MAINWINDOW_H
    </qmainwindow>

    wrapper.h

    #ifndef WRAPPER_H_
    #define WRAPPER_H_

    #include

    #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>

    #define INBUF_SIZE 4096
    #define AUDIO_INBUF_SIZE 20480
    #define AUDIO_REFILL_THRESH 4096



    /* 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_channells   = 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_channells) {
               best_ch_layout    = *p;
               best_nb_channells = nb_channels;
           }
           p++;
       }
       return best_ch_layout;
    }

    /*
    * Audio encoding example
    */
    static void audio_encode_example(const char *filename)
    {
       AVCodec *codec;
       AVCodecContext *c= NULL;
       AVFrame *frame;
       AVPacket pkt;
       int i, j, k, ret, got_output;
       int buffer_size;
       FILE *f;
       uint16_t *samples;
       float t, tincr;

       printf("Encode audio file %s\n", filename);

       /* find the MP2 encoder */
       codec = avcodec_find_encoder(AV_CODEC_ID_MP2);
       if (!codec) {
           fprintf(stderr, "Codec not found\n");
           exit(1);
       }

       c = avcodec_alloc_context3(codec);
       if (!c) {
           fprintf(stderr, "Could not allocate audio codec context\n");
           exit(1);
       }

       /* put sample parameters */
       c->bit_rate = 64000;

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

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

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

       f = fopen(filename, "wb");
       if (!f) {
           fprintf(stderr, "Could not open %s\n", filename);
           exit(1);
       }

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

       frame->nb_samples     = c->frame_size;
       frame->format         = c->sample_fmt;
       frame->channel_layout = c->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, c->channels, c->frame_size,
                                                c->sample_fmt, 0);
       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(frame, c->channels, c->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;
       tincr = 2 * M_PI * 440.0 / c->sample_rate;
       for(i=0;i&lt;200;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; c->frame_size; j++) {
               samples[2*j] = (int)(sin(t) * 10000);

               for (k = 1; k &lt; c->channels; k++)
                   samples[2*j + k] = samples[2*j];
               t += tincr;
           }
           /* encode the samples */
           ret = avcodec_encode_audio2(c, &amp;pkt, frame, &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);
               av_free_packet(&amp;pkt);
           }
       }

       /* get the delayed frames */
       for (got_output = 1; got_output; i++) {
           ret = avcodec_encode_audio2(c, &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);
               av_free_packet(&amp;pkt);
           }
       }
       fclose(f);

       av_freep(&amp;samples);
       avcodec_free_frame(&amp;frame);
       avcodec_close(c);
       av_free(c);
    }

    /*
    * Audio decoding.
    */
    static void audio_decode_example(const char *outfilename, const char *filename)
    {
       AVCodec *codec;
       AVCodecContext *c= NULL;
       int len;
       FILE *f, *outfile;
       uint8_t inbuf[AUDIO_INBUF_SIZE + FF_INPUT_BUFFER_PADDING_SIZE];
       AVPacket avpkt;
       AVFrame *decoded_frame = NULL;

       av_init_packet(&amp;avpkt);

       printf("Decode audio file %s to %s\n", filename, outfilename);

       /* find the mpeg audio decoder */
       codec = avcodec_find_decoder(AV_CODEC_ID_MP2);
       if (!codec) {
           fprintf(stderr, "Codec not found\n");
           exit(1);
       }

       c = avcodec_alloc_context3(codec);
       if (!c) {
           fprintf(stderr, "Could not allocate audio codec context\n");
           exit(1);
       }

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

       f = fopen(filename, "rb");
       if (!f) {
           fprintf(stderr, "Could not open %s\n", filename);
           exit(1);
       }
       outfile = fopen(outfilename, "wb");
       if (!outfile) {
           av_free(c);
           exit(1);
       }

       /* decode until eof */
       avpkt.data = inbuf;
       avpkt.size = fread(inbuf, 1, AUDIO_INBUF_SIZE, f);

       while (avpkt.size > 0) {
           int got_frame = 0;

           if (!decoded_frame) {
               if (!(decoded_frame = avcodec_alloc_frame())) {
                   fprintf(stderr, "Could not allocate audio frame\n");
                   exit(1);
               }
           } else
               avcodec_get_frame_defaults(decoded_frame);

           len = avcodec_decode_audio4(c, decoded_frame, &amp;got_frame, &amp;avpkt);
           if (len &lt; 0) {
               fprintf(stderr, "Error while decoding\n");
               exit(1);
           }
           if (got_frame) {
               /* if a frame has been decoded, output it */
               int data_size = av_samples_get_buffer_size(NULL, c->channels,
                                                          decoded_frame->nb_samples,
                                                          c->sample_fmt, 1);
               fwrite(decoded_frame->data[0], 1, data_size, outfile);
           }
           avpkt.size -= len;
           avpkt.data += len;
           avpkt.dts =
           avpkt.pts = AV_NOPTS_VALUE;
           if (avpkt.size &lt; AUDIO_REFILL_THRESH) {
               /* Refill the input buffer, to avoid trying to decode
                * incomplete frames. Instead of this, one could also use
                * a parser, or use a proper container format through
                * libavformat. */
               memmove(inbuf, avpkt.data, avpkt.size);
               avpkt.data = inbuf;
               len = fread(avpkt.data + avpkt.size, 1,
                           AUDIO_INBUF_SIZE - avpkt.size, f);
               if (len > 0)
                   avpkt.size += len;
           }
       }

       fclose(outfile);
       fclose(f);

       avcodec_close(c);
       av_free(c);
       avcodec_free_frame(&amp;decoded_frame);
    }

    /*
    * Main WRAPPER function
    */
    void service(){


       /* register all the codecs */
       avcodec_register_all();


       audio_encode_example("test.mp2");
       audio_decode_example("test.sw", "test.mp2");

    }

    #endif

    main.cpp

    #include <qapplication>
    #include "mainwindow.h"

    extern "C"{
       #include "wrapper.h"
    }

    int main(int argc, char *argv[])
    {
       service(); //calling the function service inside the wrapper

       QApplication a(argc, argv);
       MainWindow w;
       w.show();
       return a.exec();
    }
    </qapplication>

    mainwindow.cpp

    #include "mainwindow.h"
    #include "ui_mainwindow.h"

    MainWindow::MainWindow(QWidget *parent) :
       QMainWindow(parent),
       ui(new Ui::MainWindow)
    {
       ui->setupUi(this);
    }

    MainWindow::~MainWindow()
    {
       delete ui;
    }

    void MainWindow::changeEvent(QEvent *e)
    {
       QMainWindow::changeEvent(e);
       switch (e->type()) {
       case QEvent::LanguageChange:
           ui->retranslateUi(this);
           break;
       default:
           break;
       }
    }

    void MainWindow::on_pushButton_clicked()
    {
           this->close();
    }

    mainwindow.ui
    //Nothing important

    Thanks.