Recherche avancée

Médias (3)

Mot : - Tags -/pdf

Autres articles (14)

  • Keeping control of your media in your hands

    13 avril 2011, par

    The vocabulary used on this site and around MediaSPIP in general, aims to avoid reference to Web 2.0 and the companies that profit from media-sharing.
    While using MediaSPIP, you are invited to avoid using words like "Brand", "Cloud" and "Market".
    MediaSPIP is designed to facilitate the sharing of creative media online, while allowing authors to retain complete control of their work.
    MediaSPIP aims to be accessible to as many people as possible and development is based on expanding the (...)

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

  • Les vidéos

    21 avril 2011, par

    Comme les documents de type "audio", Mediaspip affiche dans la mesure du possible les vidéos grâce à la balise html5 .
    Un des inconvénients de cette balise est qu’elle n’est pas reconnue correctement par certains navigateurs (Internet Explorer pour ne pas le nommer) et que chaque navigateur ne gère en natif que certains formats de vidéos.
    Son avantage principal quant à lui est de bénéficier de la prise en charge native de vidéos dans les navigateur et donc de se passer de l’utilisation de Flash et (...)

Sur d’autres sites (3437)

  • MKV Video Faster Plays Faster

    4 avril 2014, par Ankush

    I have C# program which screenshots 3 times per second & adds this to mkv ( VP8 ) video, set FPS to 3,encoded video works but plays faster, the total length of video player shows is wrong & while playing it doesn't plays smooth it jumps like from 1sec -> 3sec -> 5sec means instread of 1 -> 2 ->3..

    There is something wrong with pts value,

    if ( codecContext->coded_frame->pts != AV_NOPTS_VALUE )
    {
    packet.pts = av_rescale_q( packet.pts, codecContext->time_base, pVideoStream->time_base );
    }

    if ( codecContext->coded_frame->pkt_dts != AV_NOPTS_VALUE )
    {
    packet.dts = av_rescale_q( packet.dts, codecContext->time_base, pVideoStream->time_base );
    }

    while debugging codecContext->time_base shows 3FPS ( num=1 den=3 ) & pVideoStream->time_base shows ( num=1 den=1000) & packet.pts & packet.dts shows 0 ( everytime )

    Whats wrong ? Anyone please give me some hint atleast.

  • Error installing package in anaconda : Attempted to make prefix record for unknown package type

    25 janvier 2020, par ashwinids

    I’m getting the error below for doing any operation install, update or uninstall

    ERROR conda.core.link:_execute(700) : An error occurred while
    uninstalling package ’::ffmpeg-3.2.4-2’. Rolling back
    transaction : done

    ValueError(’Attempted to make prefix record for unknown package type :
    ffmpeg-3.2.4-2’,)

    Details about the environment :
    OS : ubuntu 18.04
    python version : intelpython3

    Conda info

        active environment : base
       active env location : /home/p****/intelpython3
               shell level : 1
          user config file : /home/p****/.condarc
    populated config files : /home/p****/.condarc
             conda version : 4.7.12
       conda-build version : not installed
            python version : 3.6.8.final.0
          virtual packages : __cuda=10.1
          base environment : /home/p****/intelpython3  (writable)
              channel URLs : https://conda.anaconda.org/intel/linux-64
                             https://conda.anaconda.org/intel/noarch
                             https://repo.anaconda.com/pkgs/main/linux-64
                             https://repo.anaconda.com/pkgs/main/noarch
                             https://repo.anaconda.com/pkgs/r/linux-64
                             https://repo.anaconda.com/pkgs/r/noarch
             package cache : /home/p****/intelpython3/pkgs
                             /home/p****/.conda/pkgs
          envs directories : /home/p****/intelpython3/envs
                             /home/p****/.conda/envs
                  platform : linux-64
                user-agent : conda/4.7.12 requests/2.20.1 CPython/3.6.8 Linux/5.0.0-36-generic ubuntu/18.04.3 glibc/2.27
                   UID:GID : 1000:1000
                netrc file : None
              offline mode : False

    Conda list

    # packages in environment at /home/p****/intelpython3:
    #
    # Name                    Version                   Build  Channel
    _tflow_select             2.1.0                       gpu    anaconda
    absl-py                   0.8.0                    py36_0    anaconda
    affine                    2.3.0                    pypi_0    pypi
    asn1crypto                0.24.0                   py36_3    intel
    astor                     0.8.0                    py36_0    anaconda
    atomicwrites              1.3.0                    pypi_0    pypi
    attrs                     19.3.0                   pypi_0    pypi
    audioread                 2.1.6                    py36_0    <unknown>
    awscli                    1.16.292                 pypi_0    pypi
    backcall                  0.1.0                    py36_2    <unknown>
    backports                 1.0                      py36_9    <unknown>
    bayesian-optimization     1.0.1                    pypi_0    pypi
    bleach                    2.1.3                    py36_2    <unknown>
    boto3                     1.10.19                  pypi_0    pypi
    botocore                  1.13.28                  pypi_0    pypi
    bzip2                     1.0.6                        17    intel
    c-ares                    1.15.0            h7b6447c_1001    anaconda
    causalgraphicalmodels     0.0.4                    pypi_0    pypi
    certifi                   2018.1.18                py36_2    intel
    cffi                      1.11.5                   py36_3    intel
    chardet                   3.0.4                    py36_3    intel
    click                     7.0                      pypi_0    pypi
    click-plugins             1.1.1                    pypi_0    pypi
    cligj                     0.5.0                    pypi_0    pypi
    colorama                  0.4.1                    pypi_0    pypi
    conda                     4.7.12                   py36_0  
    conda-env                 2.6.0                         1  
    conda-package-handling    1.6.0            py36h7b6447c_0    anaconda
    cryptography              2.3                      py36_1    intel
    cudatoolkit               10.1.243             h6bb024c_0  
    cudnn                     7.6.0                cuda10.1_0    anaconda
    cupti                     10.1.168                      0    anaconda
    cvxopt                    1.2.3                    pypi_0    pypi
    cycler                    0.10.0                   py36_7    intel
    cython                    0.29.6           py36h7b7c402_0    intel
    daal                      2019.4                intel_243    <unknown>
    daal4py                   2019.4           py36h7b7c402_0    intel
    dbus                      1.13.12              h746ee38_0  
    decorator                 4.3.0                    py36_3    <unknown>
    descartes                 1.1.0                    pypi_0    pypi
    docutils                  0.15.2                   pypi_0    pypi
    dowhy                     0.1.1                    pypi_0    pypi
    entrypoints               0.2.3                    py36_2    <unknown>
    expat                     2.2.6                he6710b0_0  
    ffmpeg                    3.2.4                         2    <unknown>
    fiona                     1.8.11                   pypi_0    pypi
    fontconfig                2.12.6               h49f89f6_0  
    freetype                  2.8                  hab7d2ae_1  
    funcsigs                  1.0.2                    py36_7    intel
    gast                      0.3.2                      py_0    anaconda
    geopandas                 0.6.2                    pypi_0    pypi
    get_terminal_size         1.0.0                    py36_7    <unknown>
    glib                      2.63.1               h5a9c865_0  
    google-pasta              0.1.7                      py_0    anaconda
    grpcio                    1.14.1           py36h9ba97e2_0    anaconda
    gst-plugins-base          1.12.4               h33fb286_0  
    gstreamer                 1.12.4               hb53b477_0  
    h5py                      2.9.0            py36h7918eee_0    anaconda
    hdf5                      1.10.4               hb1b8bf9_0    anaconda
    html5lib                  1.0.1                    py36_4    <unknown>
    icc_rt                    2019.4                intel_243    <unknown>
    icu                       58.2                 h9c2bf20_1  
    idna                      2.6                      py36_3    intel
    imageio                   2.6.1                    pypi_0    pypi
    imgaug                    0.2.6                    pypi_0    pypi
    impi_rt                   2019.4                intel_243    <unknown>
    importlib-metadata        0.23                     pypi_0    pypi
    intel-openmp              2019.4                intel_243    <unknown>
    intelpython               2019.4                        0    intel
    ipp                       2019.4                intel_243    <unknown>
    ipykernel                 4.6.1                    py36_2    <unknown>
    ipython                   6.3.1                    py36_3    <unknown>
    ipython_genutils          0.2.0                    py36_2    <unknown>
    jedi                      0.12.0                   py36_2    <unknown>
    jinja2                    2.10.3                   pypi_0    pypi
    jmespath                  0.9.4                    pypi_0    pypi
    joblib                    0.13.2                   pypi_0    pypi
    jpeg                      9b                   h024ee3a_2  
    json5                     0.8.5                    pypi_0    pypi
    jsonschema                3.2.0                    pypi_0    pypi
    jupyter                   1.0.0                    py36_7    intel
    jupyter_client            5.1.0                    py36_5    <unknown>
    jupyter_console           5.1.0                    py36_2    <unknown>
    jupyter_core              4.4.0                    py36_6    <unknown>
    jupyterlab                1.2.3                    pypi_0    pypi
    jupyterlab-server         1.0.6                    pypi_0    pypi
    keras                     2.3.1                    pypi_0    pypi
    keras-applications        1.0.8                      py_0    anaconda
    keras-bert                0.80.0                   pypi_0    pypi
    keras-embed-sim           0.7.0                    pypi_0    pypi
    keras-layer-normalization 0.14.0                   pypi_0    pypi
    keras-multi-head          0.22.0                   pypi_0    pypi
    keras-pos-embd            0.11.0                   pypi_0    pypi
    keras-position-wise-feed-forward 0.6.0                    pypi_0    pypi
    keras-preprocessing       1.1.0                      py_1    anaconda
    keras-rectified-adam      0.17.0                   pypi_0    pypi
    keras-self-attention      0.41.0                   pypi_0    pypi
    keras-transformer         0.31.0                   pypi_0    pypi
    kiwisolver                1.0.1                    py36_2    intel
    libffi                    3.2.1                        11    intel
    libgcc-ng                 9.1.0                hdf63c60_0    anaconda
    libgfortran-ng            7.3.0                hdf63c60_0    anaconda
    libiconv                  1.14                          4    <unknown>
    libpng                    1.6.36                        2    intel
    libprotobuf               3.9.2                hd408876_0    anaconda
    librosa                   0.6.3                    pypi_0    pypi
    libsodium                 1.0.16                        3    <unknown>
    libstdcxx-ng              9.1.0                hdf63c60_0    anaconda
    libtiff                   4.0.9                he85c1e1_1  
    libxcb                    1.13                 h1bed415_1  
    libxml2                   2.9.8                hf84eae3_0  
    lightgbm                  2.3.1                    pypi_0    pypi
    llvmlite                  0.27.1                   py36_0    intel
    markdown                  3.1.1                    py36_0    anaconda
    markupsafe                1.0                      py36_3    <unknown>
    matplotlib                2.1.0            py36hba5de38_0  
    mercantile                1.1.2                    pypi_0    pypi
    metaflow                  2.0.0                    pypi_0    pypi
    mistune                   0.8.3                    py36_2    <unknown>
    mkl                       2019.4                intel_243    <unknown>
    mkl-service               1.0.0           py36h7b7c402_11    intel
    mkl_fft                   1.0.11           py36h7b7c402_2    intel
    mkl_random                1.0.2            py36h7b7c402_4    intel
    more-itertools            7.2.0                    pypi_0    pypi
    mpi4py                    3.0.0                    py36_3    intel
    mpmath                    1.1.0                    pypi_0    pypi
    munch                     2.5.0                    pypi_0    pypi
    nbconvert                 5.2.1                    py36_2    <unknown>
    nbformat                  4.4.0                    py36_2    <unknown>
    networkx                  2.4                      pypi_0    pypi
    ninja                     1.9.0            py36hfd86e86_0  
    noisyopt                  0.2.2                    pypi_0    pypi
    notebook                  5.2.2                    py36_1    intel
    numba                     0.42.1              np116py36_2    intel
    numexpr                   2.6.8                    py36_2    intel
    numpy                     1.16.2           py36h7b7c402_0    intel
    numpy-base                1.16.2                   py36_0    intel
    oauthlib                  3.1.0                    pypi_0    pypi
    olefile                   0.46                       py_0  
    openssl                   1.0.2r                        2    intel
    packaging                 19.2                     pypi_0    pypi
    pandas                    0.24.1                   py36_3    intel
    pandocfilters             1.4.1                    py36_2    <unknown>
    parso                     0.2.0                    py36_2    <unknown>
    path.py                   11.0.1                   py36_2    <unknown>
    pcre                      8.43                 he6710b0_0  
    pexpect                   4.2.1                    py36_4    <unknown>
    pickleshare               0.7.4                    py36_3    <unknown>
    pillow                    6.2.1                    pypi_0    pypi
    pip                       19.3.1                   pypi_0    pypi
    pluggy                    0.13.1                   pypi_0    pypi
    prompt_toolkit            1.0.15                   py36_2    <unknown>
    protobuf                  3.9.2            py36he6710b0_0    anaconda
    ptyprocess                0.5.2                    py36_2    <unknown>
    pulp                      2.0                      pypi_0    pypi
    py                        1.8.0                    pypi_0    pypi
    pyasn1                    0.4.8                    pypi_0    pypi
    pycosat                   0.6.3                    py36_3    intel
    pycparser                 2.18                     py36_2    intel
    pydot                     1.4.1                    pypi_0    pypi
    pyeditline                2.0.0                    py36_0    intel
    pygments                  2.2.0                    py36_5    <unknown>
    pygmy                     0.2.0                    pypi_0    pypi
    pyopenssl                 17.5.0                   py36_2    intel
    pyparsing                 2.2.0                    py36_2    intel
    pyportfolioopt            0.4.3                    pypi_0    pypi
    pyproj                    2.4.2.post1              pypi_0    pypi
    pyqt                      5.6.0            py36h22d08a2_6  
    pyrsistent                0.15.6                   pypi_0    pypi
    pysocks                   1.6.7                    py36_1    intel
    pytesseract               0.3.0                    pypi_0    pypi
    pytest                    4.6.6                    pypi_0    pypi
    python                    3.6.8                         7    intel
    python-dateutil           2.6.0                   py36_12    intel
    python-graphviz           0.13                     pypi_0    pypi
    pytorch                   1.3.1           py3.6_cuda10.1.243_cudnn7.6.3_0    pytorch
    pytz                      2018.4                   py36_3    intel
    pywavelets                1.1.1                    pypi_0    pypi
    pyyaml                    4.1                      py36_3    intel
    pyzmq                     16.0.2                   py36_6    <unknown>
    qt                        5.6.2               hd25b39d_14  
    rasterio                  1.1.1                    pypi_0    pypi
    regex                     2019.11.1                pypi_0    pypi
    requests                  2.20.1                   py36_1    intel
    requests-oauthlib         1.3.0                    pypi_0    pypi
    resampy                   0.2.1                    pypi_0    pypi
    rio-cogeo                 1.1.6                    pypi_0    pypi
    rsa                       3.4.2                    pypi_0    pypi
    ruamel_yaml               0.11.14                  py36_4    intel
    s3transfer                0.2.1                    pypi_0    pypi
    sacremoses                0.0.35                   pypi_0    pypi
    scikit-image              0.16.2                   pypi_0    pypi
    scikit-learn              0.20.3           py36h7b7c402_5    intel
    scipy                     1.3.3                    pypi_0    pypi
    seaborn                   0.9.0                    pypi_0    pypi
    sentencepiece             0.1.83                   pypi_0    pypi
    setuptools                39.0.1                   py36_0    intel
    shapely                   1.6.4.post2              pypi_0    pypi
    simplegeneric             0.8.1                    py36_7    <unknown>
    sip                       4.18.1           py36hf484d3e_2  
    six                       1.11.0                   py36_3    intel
    smp                       0.1.4                    py36_0    intel
    snuggs                    1.4.7                    pypi_0    pypi
    sqlite                    3.27.2                        4    intel
    supermercado              0.0.5                    pypi_0    pypi
    sympy                     1.4                      pypi_0    pypi
    tbb                       2019.6                intel_243    <unknown>
    tbb4py                    2019.6             py36_intel_0    <unknown>
    tcl                       8.6.4                        24    intel
    tensorboard               1.14.0           py36hf484d3e_0    anaconda
    tensorflow                1.14.0          gpu_py36h3fb9ad6_0    anaconda
    tensorflow-base           1.14.0          gpu_py36he45bfe2_0    anaconda
    tensorflow-estimator      1.14.0                     py_0    anaconda
    tensorflow-gpu            1.14.0               h0d30ee6_0    anaconda
    termcolor                 1.1.0                    py36_1    anaconda
    terminado                 0.8.1                    py36_2    <unknown>
    testpath                  0.3.1                    py36_2    <unknown>
    tk                        8.6.4                        29    intel
    torchvision               0.4.2                py36_cu101    pytorch
    tornado                   4.5.2                    py36_5    <unknown>
    tqdm                      4.36.1                     py_0    anaconda
    traitlets                 4.3.2                    py36_3    <unknown>
    transformers              2.1.1                    pypi_0    pypi
    tweepy                    3.8.0                    pypi_0    pypi
    urllib3                   1.22                     pypi_0    pypi
    wcwidth                   0.1.7                    py36_6    <unknown>
    webencodings              0.5.1                    py36_0    <unknown>
    werkzeug                  0.16.0                     py_0    anaconda
    wheel                     0.31.0                   py36_3    intel
    widgetsnbextension        3.2.0                    py36_1    <unknown>
    wrapt                     1.11.2           py36h7b6447c_0    anaconda
    x264                      20131218                      0    <unknown>
    xgboost                   0.81                     py36_0    intel
    xz                        5.2.3                         2    intel
    yaml                      0.1.7                         2    intel
    zipp                      0.6.0                    pypi_0    pypi
    zlib                      1.2.11                        5    intel
    </unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown></unknown>
  • Screen Recording with FFmpeg-Lib with c++

    27 janvier 2020, par Baschdel

    I’m trying to record the whole desktop stream with FFmpeg on Windows.
    I found a working example here. The Problem is that some og the functions depricated. So I tried to replace them with the updated ones.

    But there are some slight problems. The error "has triggered a breakpoint." occurse and also "not able to read the location."
    The bigger problem is that I don’t know if this is the right way to do this..

    My code looks like this :

    using namespace std;

    /* initialize the resources*/
    Recorder::Recorder()
    {

       av_register_all();
       avcodec_register_all();
       avdevice_register_all();
       cout&lt;&lt;"\nall required functions are registered successfully";
    }

    /* uninitialize the resources */
    Recorder::~Recorder()
    {

       avformat_close_input(&amp;pAVFormatContext);
       if( !pAVFormatContext )
       {
           cout&lt;&lt;"\nfile closed sucessfully";
       }
       else
       {
           cout&lt;&lt;"\nunable to close the file";
           exit(1);
       }

       avformat_free_context(pAVFormatContext);
       if( !pAVFormatContext )
       {
           cout&lt;&lt;"\navformat free successfully";
       }
       else
       {
           cout&lt;&lt;"\nunable to free avformat context";
           exit(1);
       }

    }

    /* establishing the connection between camera or screen through its respective folder */
    int Recorder::openCamera()
    {

       value = 0;
       options = NULL;
       pAVFormatContext = NULL;

       pAVFormatContext = avformat_alloc_context();//Allocate an AVFormatContext.

       openScreen(pAVFormatContext);

       /* set frame per second */
       value = av_dict_set( &amp;options,"framerate","30",0 );
       if(value &lt; 0)
       {
         cout&lt;&lt;"\nerror in setting dictionary value";
          exit(1);
       }

       value = av_dict_set( &amp;options, "preset", "medium", 0 );
       if(value &lt; 0)
       {
         cout&lt;&lt;"\nerror in setting preset values";
         exit(1);
       }

    //  value = avformat_find_stream_info(pAVFormatContext,NULL);
       if(value &lt; 0)
       {
         cout&lt;&lt;"\nunable to find the stream information";
         exit(1);
       }

       VideoStreamIndx = -1;

       /* find the first video stream index . Also there is an API available to do the below operations */
       for(int i = 0; i &lt; pAVFormatContext->nb_streams; i++ ) // find video stream posistion/index.
       {
         if( pAVFormatContext->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO )
         {
            VideoStreamIndx = i;
            break;
         }

       }

       if( VideoStreamIndx == -1)
       {
         cout&lt;&lt;"\nunable to find the video stream index. (-1)";
         exit(1);
       }

       // assign pAVFormatContext to VideoStreamIndx
       pAVCodecContext = pAVFormatContext->streams[VideoStreamIndx]->codec;

       pAVCodec = avcodec_find_decoder(pAVCodecContext->codec_id);
       if( pAVCodec == NULL )
       {
         cout&lt;&lt;"\nunable to find the decoder";
         exit(1);
       }

       value = avcodec_open2(pAVCodecContext , pAVCodec , NULL);//Initialize the AVCodecContext to use the given AVCodec.
       if( value &lt; 0 )
       {
         cout&lt;&lt;"\nunable to open the av codec";
         exit(1);
       }
    }

    /* initialize the video output file and its properties  */
    int Recorder::init_outputfile()
    {
       outAVFormatContext = NULL;
       value = 0;
       output_file = "output.mp4";

       avformat_alloc_output_context2(&amp;outAVFormatContext, NULL, NULL, output_file);
       if (!outAVFormatContext)
       {
           cout&lt;&lt;"\nerror in allocating av format output context";
           exit(1);
       }

    /* Returns the output format in the list of registered output formats which best matches the provided parameters, or returns NULL if there is no match. */
       output_format = av_guess_format(NULL, output_file ,NULL);
       if( !output_format )
       {
        cout&lt;&lt;"\nerror in guessing the video format. try with correct format";
        exit(1);
       }

       video_st = avformat_new_stream(outAVFormatContext ,NULL);
       if( !video_st )
       {
           cout&lt;&lt;"\nerror in creating a av format new stream";
           exit(1);
       }

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

       outAVCodec = avcodec_find_encoder(AV_CODEC_ID_MPEG4);
       if (!outAVCodec)
       {
           cout &lt;&lt; "\nerror in finding the av codecs. try again with correct codec";
           exit(1);
       }

       outAVCodecContext = avcodec_alloc_context3(outAVCodec);
       if( !outAVCodecContext )
       {
           cout&lt;&lt;"\nerror in allocating the codec contexts";
           exit(1);
       }

       /* set property of the video file */
       outAVCodecContext = video_st->codec;
       outAVCodecContext->codec_id = AV_CODEC_ID_MPEG4;// AV_CODEC_ID_MPEG4; // AV_CODEC_ID_H264 // AV_CODEC_ID_MPEG1VIDEO
       outAVCodecContext->codec_type = AVMEDIA_TYPE_VIDEO;
       outAVCodecContext->pix_fmt  = AV_PIX_FMT_YUV420P;
       outAVCodecContext->bit_rate = 400000; // 2500000
       outAVCodecContext->width = 1920;
       outAVCodecContext->height = 1080;
       outAVCodecContext->gop_size = 3;
       outAVCodecContext->max_b_frames = 2;
       outAVCodecContext->time_base.num = 1;
       outAVCodecContext->time_base.den = 30; //15fps


       /* Some container formats (like MP4) require global headers to be present
          Mark the encoder so that it behaves accordingly. */

       if ( outAVFormatContext->oformat->flags &amp; AVFMT_GLOBALHEADER)
       {
           outAVCodecContext->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
       }

       value = avcodec_open2(outAVCodecContext, outAVCodec, NULL);
       if( value &lt; 0)
       {
           cout&lt;&lt;"\nerror in opening the avcodec";
           exit(1);
       }

       /* create empty video file */
       if ( !(outAVFormatContext->flags &amp; AVFMT_NOFILE) )
       {
        if( avio_open2(&amp;outAVFormatContext->pb , output_file , AVIO_FLAG_WRITE ,NULL, NULL) &lt; 0 )
        {
         cout&lt;&lt;"\nerror in creating the video file";
         exit(1);
        }
       }

       if(!outAVFormatContext->nb_streams)
       {
           cout&lt;&lt;"\noutput file dose not contain any stream";
           exit(1);
       }

       /* imp: mp4 container or some advanced container file required header information*/
       value = avformat_write_header(outAVFormatContext , &amp;options);
       if(value &lt; 0)
       {
           cout&lt;&lt;"\nerror in writing the header context";
           exit(1);
       }

       /*
       // uncomment here to view the complete video file informations
       cout&lt;&lt;"\n\nOutput file information :\n\n";
       av_dump_format(outAVFormatContext , 0 ,output_file ,1);
       */
    }

    int Recorder::stop() {
       threading = false;

       demux->join();
       rescale->join();
       mux->join();

       return 0;
    }

    int Recorder::start() {
       initVideoThreads();
       return 0;
    }

    int Recorder::initVideoThreads() {
       demux = new thread(&amp;Recorder::demuxVideoStream, this, pAVCodecContext, pAVFormatContext, VideoStreamIndx);

       rescale = new thread(&amp;Recorder::rescaleVideoStream, this, pAVCodecContext, outAVCodecContext);

       demux = new thread(&amp;Recorder::encodeVideoStream, this, outAVCodecContext);
       return 0;
    }

    void Recorder::demuxVideoStream(AVCodecContext* codecContext, AVFormatContext* formatContext, int streamIndex)
    {
       // init packet
       AVPacket* packet = (AVPacket*)av_malloc(sizeof(AVPacket));
       av_init_packet(packet);

       int ctr = 0;

       while (threading)
       {
           if (av_read_frame(formatContext, packet) &lt; 0) {
               exit(1);
           }

           if (packet->stream_index == streamIndex)
           {
               int return_value; // = 0;
               ctr++;

               do
               {
                   return_value = avcodec_send_packet(codecContext, packet);
               } while (return_value == AVERROR(EAGAIN) &amp;&amp; threading);

               //int i = avcodec_send_packet(codecContext, packet);
               if (return_value &lt; 0 &amp;&amp; threading) { // call Decoder
                   cout &lt;&lt; "unable to decode video";
                   exit(1);
               }
           }
       }

       avcodec_send_packet(codecContext, NULL); // flush decoder

       // return 0;
    }

    void Recorder::rescaleVideoStream(AVCodecContext* inCodecContext, AVCodecContext* outCodecContext)
    {
       bool closing = false;
       AVFrame* inFrame = av_frame_alloc();
       if (!inFrame)
       {
           cout &lt;&lt; "\nunable to release the avframe resources";
           exit(1);
       }

       int nbytes = av_image_get_buffer_size(outAVCodecContext->pix_fmt, outAVCodecContext->width, outAVCodecContext->height, 32);
       uint8_t* video_outbuf = (uint8_t*)av_malloc(nbytes);
       if (video_outbuf == NULL)
       {
           cout &lt;&lt; "\nunable to allocate memory";
           exit(1);
       }

       AVFrame* outFrame = av_frame_alloc();//Allocate an AVFrame and set its fields to default values.
       if (!outFrame)
       {
           cout &lt;&lt; "\nunable to release the avframe resources for outframe";
           exit(1);
       }

       // Setup the data pointers and linesizes based on the specified image parameters and the provided array.
       int value = av_image_fill_arrays(outFrame->data, outFrame->linesize, video_outbuf, AV_PIX_FMT_YUV420P, outAVCodecContext->width, outAVCodecContext->height, 1); // returns : the size in bytes required for src
       if (value &lt; 0)
       {
           cout &lt;&lt; "\nerror in filling image array";
       }
       int ctr = 0;

       while (threading || !closing) {
           int value = avcodec_receive_frame(inCodecContext, inFrame);
           if (value == 0) {
               ctr++;
               SwsContext* swsCtx_ = sws_getContext(inCodecContext->width,
                   inCodecContext->height,
                   inCodecContext->pix_fmt,
                   outAVCodecContext->width,
                   outAVCodecContext->height,
                   outAVCodecContext->pix_fmt,
                   SWS_BICUBIC, NULL, NULL, NULL);
               sws_scale(swsCtx_, inFrame->data, inFrame->linesize, 0, inCodecContext->height, outFrame->data, outFrame->linesize);


               int return_value;
               do
               {
                   return_value = avcodec_send_frame(outCodecContext, outFrame);
               } while (return_value == AVERROR(EAGAIN) &amp;&amp; threading);
           }
           closing = (value == AVERROR_EOF);
       }
       avcodec_send_frame(outCodecContext, NULL);


       // av_free(video_outbuf);

       // return 0;
    }

    void Recorder::encodeVideoStream(AVCodecContext* codecContext)
    {
       bool closing = true;
       AVPacket* packet = (AVPacket*)av_malloc(sizeof(AVPacket));
       av_init_packet(packet);

       int ctr = 0;

       while (threading || !closing) {
           packet->data = NULL;    // packet data will be allocated by the encoder
           packet->size = 0;
           ctr++;
           int value = avcodec_receive_packet(codecContext, packet);
           if (value == 0) {
               if (packet->pts != AV_NOPTS_VALUE)
                   packet->pts = av_rescale_q(packet->pts, video_st->codec->time_base, video_st->time_base);
               if (packet->dts != AV_NOPTS_VALUE)
                   packet->dts = av_rescale_q(packet->dts, video_st->codec->time_base, video_st->time_base);

               //printf("Write frame %3d (size= %2d)\n", j++, packet->size / 1000);
               if (av_write_frame(outAVFormatContext, packet) != 0)
               {
                   cout &lt;&lt; "\nerror in writing video frame";
               }
           }

           closing = (value == AVERROR_EOF);
       }

       value = av_write_trailer(outAVFormatContext);
       if (value &lt; 0)
       {
           cout &lt;&lt; "\nerror in writing av trailer";
           exit(1);
       }

       // av_free(packet);

       // return 0;
    }


    int Recorder::openScreen(AVFormatContext* pFormatCtx) {
       /*

       X11 video input device.
       To enable this input device during configuration you need libxcb installed on your system. It will be automatically detected during configuration.
       This device allows one to capture a region of an X11 display.
       refer : https://www.ffmpeg.org/ffmpeg-devices.html#x11grab
       */
       /* current below is for screen recording. to connect with camera use v4l2 as a input parameter for av_find_input_format */
       pAVInputFormat = av_find_input_format("gdigrab");
       //value = avformat_open_input(&amp;pAVFormatContext, ":0.0+10,250", pAVInputFormat, NULL);

       value = avformat_open_input(&amp;pAVFormatContext, "desktop", pAVInputFormat, NULL);
       if (value != 0)
       {
           cout &lt;&lt; "\nerror in opening input device";
           exit(1);
       }
       return 0;
    }