Recherche avancée

Médias (91)

Autres articles (21)

  • Demande de création d’un canal

    12 mars 2010, par

    En fonction de la configuration de la plateforme, l’utilisateur peu avoir à sa disposition deux méthodes différentes de demande de création de canal. La première est au moment de son inscription, la seconde, après son inscription en remplissant un formulaire de demande.
    Les deux manières demandent les mêmes choses fonctionnent à peu près de la même manière, le futur utilisateur doit remplir une série de champ de formulaire permettant tout d’abord aux administrateurs d’avoir des informations quant à (...)

  • Le plugin : Podcasts.

    14 juillet 2010, par

    Le problème du podcasting est à nouveau un problème révélateur de la normalisation des transports de données sur Internet.
    Deux formats intéressants existent : Celui développé par Apple, très axé sur l’utilisation d’iTunes dont la SPEC est ici ; Le format "Media RSS Module" qui est plus "libre" notamment soutenu par Yahoo et le logiciel Miro ;
    Types de fichiers supportés dans les flux
    Le format d’Apple n’autorise que les formats suivants dans ses flux : .mp3 audio/mpeg .m4a audio/x-m4a .mp4 (...)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

Sur d’autres sites (3748)

  • libavcodec : how to encode with h264 codec ,with mp4 container using controllable frame rate and bitrate(through c code)

    26 mai 2016, par musimbate

    I am trying to record the screen of a pc and encode the recorded frames using h264 encoder
    and wrap them into a mp4 container.I want to do this because this super user link http://superuser.com/questions/300897/what-is-a-codec-e-g-divx-and-how-does-it-differ-from-a-file-format-e-g-mp/300997#300997 suggests it allows good trade-off between size and quality of the output file.

    The application I am working on should allow users to record a few hours of video and have the minimum output file size with decent quality.

    The code I have cooked up so far allows me to record and save .mpg(container) files with the mpeg1video encoder

    Running :

    ffmpeg -i test.mpg

    on the output file gives the following output :

    [mpegvideo @ 028c7400] Estimating duration from bitrate, this may be inaccurate
    Input #0, mpegvideo, from 'test.mpg':
     Duration: 00:00:00.29, bitrate: 104857 kb/s
       Stream #0:0: Video: mpeg1video, yuv420p(tv), 1366x768 [SAR 1:1 DAR 683:384], 104857 kb/s, 25 fps, 25 tbr, 1200k tbn, 25 tbc

    I have these settings for my output :

    const char * filename="test.mpg";
       int codec_id= AV_CODEC_ID_MPEG1VIDEO;
       AVCodec *codec11;
       AVCodecContext *outContext= NULL;
       int got_output;
       FILE *f;
       AVPacket pkt;
       uint8_t endcode[] = { 0, 0, 1, 0xb7 };

       /* put sample parameters */
       outContext->bit_rate = 400000;
       /* resolution must be a multiple of two */
       outContext->width=pCodecCtx->width;
       outContext->height=pCodecCtx->height;
       /* frames per second */
       outContext->time_base.num=1;
       outContext->time_base.den=25;
       /* emit one intra frame every ten frames
        * check frame pict_type before passing frame
        * to encoder, if frame->pict_type is AV_PICTURE_TYPE_I
        * then gop_size is ignored and the output of encoder
        * will always be I frame irrespective to gop_size
        */
       outContext->gop_size = 10;
       outContext->max_b_frames = 1;
       outContext->pix_fmt = AV_PIX_FMT_YUV420P;

    When I change int codec_id= AV_CODEC_ID_MPEG1VIDEO to int codec_id= AV_CODEC_ID_H264 i get a file that does not play with vlc.

    I have read that writing the

    uint8_t endcode[] = { 0, 0, 1, 0xb7 };

    array at the end of your file when finished encoding makes your file a legitimate mpeg file.It is written like this :

    fwrite(endcode, 1, sizeof(endcode), f);
       fclose(f);

    in my code. Should I do the same thing when I change my encoder to AV_CODEC_ID_H264 ?

    I am capturing using gdi input like this :

    AVDictionary* options = NULL;
       //Set some options
       //grabbing frame rate
       av_dict_set(&options,"framerate","30",0);
       AVInputFormat *ifmt=av_find_input_format("gdigrab");
       if(avformat_open_input(&pFormatCtx,"desktop",ifmt,&options)!=0){
           printf("Couldn't open input stream.\n");
           return -1;
           }

    I want to be able to modify my grabbing rate to optimize for the outptut file size
    but When I change it to 20 for example I get a video that plays so fast.How do
    I get a video that plays with normal speed with frames captured at 20 fps or any
    lower frame rate value ?

    While recording I get the following output on the standard error output :

    [gdigrab @ 00cdb8e0] Capturing whole desktop as 1366x768x32 at (0,0)
    Input #0, gdigrab, from '(null)':
     Duration: N/A, start: 1420718663.655713, bitrate: 1006131 kb/s
       Stream #0:0: Video: bmp, bgra, 1366x768, 1006131 kb/s, 29.97 tbr, 1000k tbn, 29.97 tbc
    [swscaler @ 00d24120] Warning: data is not aligned! This can lead to a speedloss
    [mpeg1video @ 00cdd160] AVFrame.format is not set
    [mpeg1video @ 00cdd160] AVFrame.width or height is not set
    [mpeg1video @ 00cdd160] AVFrame.format is not set
    [mpeg1video @ 00cdd160] AVFrame.width or height is not set
    [mpeg1video @ 00cdd160] AVFrame.format is not set

    How do I get rid of this error in my code ?

    In summary :
    1) How do I encode h264 video wrapped into mp4 container ?

    2) How do I capture at lower frame rates and still play
    the encoded video at normal speed ?

    3) How do I set the format(and which format—depends on the codec ?)
    and width and height info on the frames I write ?

    The code I am using in its entirety is shown below

    extern "C"
    {
    #include "libavcodec/avcodec.h"
    #include "libavformat/avformat.h"
    #include "libswscale/swscale.h"
    #include "libavdevice/avdevice.h"


    #include <libavutil></libavutil>opt.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>
    //SDL
    #include "SDL.h"
    #include "SDL_thread.h"
    }

    //Output YUV420P
    #define OUTPUT_YUV420P 0
    //'1' Use Dshow
    //'0' Use GDIgrab
    #define USE_DSHOW 0

    int main(int argc, char* argv[])
    {

       //1.WE HAVE THE FORMAT CONTEXT
       //THIS IS FROM THE DESKTOP GRAB STREAM.
       AVFormatContext *pFormatCtx;
       int             i, videoindex;
       AVCodecContext  *pCodecCtx;
       AVCodec         *pCodec;

       av_register_all();
       avformat_network_init();

       //ASSIGN STH TO THE FORMAT CONTEXT.
       pFormatCtx = avformat_alloc_context();

       //Register Device
       avdevice_register_all();
       //Windows
    #ifdef _WIN32
    #if USE_DSHOW
       //Use dshow
       //
       //Need to Install screen-capture-recorder
       //screen-capture-recorder
       //Website: http://sourceforge.net/projects/screencapturer/
       //
       AVInputFormat *ifmt=av_find_input_format("dshow");
       //if(avformat_open_input(&amp;pFormatCtx,"video=screen-capture-recorder",ifmt,NULL)!=0){
       if(avformat_open_input(&amp;pFormatCtx,"video=UScreenCapture",ifmt,NULL)!=0){
           printf("Couldn't open input stream.\n");
           return -1;
       }
    #else
       //Use gdigrab
       AVDictionary* options = NULL;
       //Set some options
       //grabbing frame rate
       av_dict_set(&amp;options,"framerate","30",0);
       //The distance from the left edge of the screen or desktop
       //av_dict_set(&amp;options,"offset_x","20",0);
       //The distance from the top edge of the screen or desktop
       //av_dict_set(&amp;options,"offset_y","40",0);
       //Video frame size. The default is to capture the full screen
       //av_dict_set(&amp;options,"video_size","640x480",0);
       AVInputFormat *ifmt=av_find_input_format("gdigrab");
       if(avformat_open_input(&amp;pFormatCtx,"desktop",ifmt,&amp;options)!=0){
           printf("Couldn't open input stream.\n");
           return -1;
       }

    #endif
    #endif//FOR THE WIN32 THING.

       if(avformat_find_stream_info(pFormatCtx,NULL)&lt;0)
       {
           printf("Couldn't find stream information.\n");
           return -1;
       }
       videoindex=-1;
       for(i=0; inb_streams; i++)
           if(pFormatCtx->streams[i]->codec->codec_type
                   ==AVMEDIA_TYPE_VIDEO)
           {
               videoindex=i;
               break;
           }
       if(videoindex==-1)
       {
           printf("Didn't find a video stream.\n");
           return -1;
       }
       pCodecCtx=pFormatCtx->streams[videoindex]->codec;
       pCodec=avcodec_find_decoder(pCodecCtx->codec_id);
       if(pCodec==NULL)
       {
           printf("Codec not found.\n");
           return -1;
       }
       if(avcodec_open2(pCodecCtx, pCodec,NULL)&lt;0)
       {
           printf("Could not open codec.\n");
           return -1;
       }

       //THIS IS WHERE YOU CONTROL THE FORMAT(THROUGH FRAMES).
       AVFrame *pFrame;

       pFrame=av_frame_alloc();

       int ret, got_picture;

       AVPacket *packet=(AVPacket *)av_malloc(sizeof(AVPacket));

       //TRY TO INIT THE PACKET HERE
        av_init_packet(packet);


       //Output Information-----------------------------
       printf("File Information---------------------\n");
       av_dump_format(pFormatCtx,0,NULL,0);
       printf("-------------------------------------------------\n");


    //&lt;&lt;--FOR WRITING MPG FILES
       //&lt;&lt;--START:PREPARE TO WRITE YOUR MPG FILE.

       const char * filename="test.mpg";
       int codec_id= AV_CODEC_ID_MPEG1VIDEO;



       AVCodec *codec11;
       AVCodecContext *outContext= NULL;
       int got_output;
       FILE *f;
       AVPacket pkt;
       uint8_t endcode[] = { 0, 0, 1, 0xb7 };

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

       /* find the mpeg1 video encoder */
       codec11 = avcodec_find_encoder((AVCodecID)codec_id);
       if (!codec11) {
           fprintf(stderr, "Codec not found\n");
           exit(1);
       }

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

       /* put sample parameters */
       outContext->bit_rate = 400000;
       /* resolution must be a multiple of two */

       outContext->width=pCodecCtx->width;
       outContext->height=pCodecCtx->height;


       /* frames per second */
       outContext->time_base.num=1;
       outContext->time_base.den=25;

       /* emit one intra frame every ten frames
        * check frame pict_type before passing frame
        * to encoder, if frame->pict_type is AV_PICTURE_TYPE_I
        * then gop_size is ignored and the output of encoder
        * will always be I frame irrespective to gop_size
        */
       outContext->gop_size = 10;
       outContext->max_b_frames = 1;
       outContext->pix_fmt = AV_PIX_FMT_YUV420P;

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

       /* open it */
       if (avcodec_open2(outContext, codec11, 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);
       }


       AVFrame *outframe = av_frame_alloc();
       int nbytes = avpicture_get_size(outContext->pix_fmt,
                                      outContext->width,
                                      outContext->height);

       uint8_t* outbuffer = (uint8_t*)av_malloc(nbytes);

      //ASSOCIATE THE FRAME TO THE ALLOCATED BUFFER.
       avpicture_fill((AVPicture*)outframe, outbuffer,
                      AV_PIX_FMT_YUV420P,
                      outContext->width, outContext->height);

       SwsContext* swsCtx_ ;
       swsCtx_= sws_getContext(pCodecCtx->width,
                               pCodecCtx->height,
                               pCodecCtx->pix_fmt,
                               outContext->width, outContext->height,
                               outContext->pix_fmt,
                               SWS_BICUBIC, NULL, NULL, NULL);


       //HERE WE START PULLING PACKETS FROM THE SPECIFIED FORMAT CONTEXT.
       while(av_read_frame(pFormatCtx, packet)>=0)
       {
           if(packet->stream_index==videoindex)
           {
               ret= avcodec_decode_video2(pCodecCtx,
                                            pFrame,
                                            &amp;got_picture,packet );
               if(ret &lt; 0)
               {
                   printf("Decode Error.\n");
                   return -1;
               }
               if(got_picture)
               {

               sws_scale(swsCtx_, pFrame->data, pFrame->linesize,
                     0, pCodecCtx->height, outframe->data,
                     outframe->linesize);


               av_init_packet(&amp;pkt);
               pkt.data = NULL;    // packet data will be allocated by the encoder
               pkt.size = 0;


               ret = avcodec_encode_video2(outContext, &amp;pkt, outframe, &amp;got_output);
               if (ret &lt; 0) {
                  fprintf(stderr, "Error encoding frame\n");
                  exit(1);
                 }

               if (got_output) {
                   printf("Write frame %3d (size=%5d)\n", i, pkt.size);
                   fwrite(pkt.data, 1, pkt.size, f);
                   av_free_packet(&amp;pkt);
                  }

               }
           }

           av_free_packet(packet);
       }//THE LOOP TO PULL PACKETS FROM THE FORMAT CONTEXT ENDS HERE.



       //
       /* get the delayed frames */
       for (got_output = 1; got_output; i++) {
           //fflush(stdout);

           ret = avcodec_encode_video2(outContext, &amp;pkt, NULL, &amp;got_output);
           if (ret &lt; 0) {
               fprintf(stderr, "Error encoding frame\n");
               exit(1);
           }

           if (got_output) {
               printf("Write frame %3d (size=%5d)\n", i, pkt.size);
               fwrite(pkt.data, 1, pkt.size, f);
               av_free_packet(&amp;pkt);
           }
       }



       /* add sequence end code to have a real mpeg file */
       fwrite(endcode, 1, sizeof(endcode), f);
       fclose(f);

       avcodec_close(outContext);
       av_free(outContext);
       //av_freep(&amp;frame->data[0]);
       //av_frame_free(&amp;frame);

       //THIS WAS ADDED LATER
       av_free(outbuffer);

       avcodec_close(pCodecCtx);
       avformat_close_input(&amp;pFormatCtx);

       return 0;
    }

    Thank you for your time.

  • Python convert audio files to MP3

    19 janvier 2015, par Fernando Retimo

    I’m trying to write a small utility that get as input an m4a/ogg file and converts it to a MP3 audio file.
    My main goal is not to use any third party binaries such as ’Lame’ or ’ffmpeg’.
    I read allot about PyMedia and such, but my knowledge on audio codecs is very poor.
    Can any one help me and give me an elegant cross platform solution ?
    Thanks !

    EDIT :
    meanwhile I know it is very basic but this is my code :

    import sys

    def convert2mp3(input_file):
       .....
       some magic...
       ...
       return mp3file

    if __name__ == "__main__":
       if len(sys.argv) != 2:
           print "%prog Usage: %s <input file="file" />"
           sys.exit()

       convert2mp3(sys.argv[1])
  • Using ffmpeg on Windows, what is the command to capture hardware encoded H264 stream from Logitech c930e

    2 mai 2015, par Jeff

    I am using ffmpeg on Windows 8 and I would like to capture the built-in H264 hardware encoded stream from the Logitech c930e camera. The H264 built-in encoded stream is part of the UVC 1.5 interface.

    Using this command I have noticed that the c930e exposes two video pins through DirectShow : 0 and 1.

    ffmpeg -report -list_options true -f dshow -i video="Logitech Webcam C930e"

    [dshow @ 0000000002d89360]  Pin "Capture" (alternative pin name "0")

    [dshow @ 0000000002d89360]  Pin "Capture" (alternative pin name "1")

    It doesn’t seem to matter if I choose Pin 0 or 1, I still get raw video from the Logitech c930e webcam. On Linux, the supposed command involves v4l2, but this does not appear to exist in the default Windows version of ffmpeg from http://ffmpeg.zeranoe.com/builds/

    Does the default Windows build of ffmpeg support the direct capture of the UVC interface ?

    This is the closest I have gotten on this journey, but still isn’t quite right :

    ffmpeg -report -f dshow -i video="Logitech Webcam C930e" -s 1920x1080 -r 30 -video_pin_name 1 -vcodec H264 -c copy -f mp4 Logitechc930eFeed.mp4

    As of April 17, 2015 I am still trying to figure this out and have two new pieces of info.

    I found this interesting article on Logitech’s website instructing the user to change the default Logitech driver to the generic USB Video Device driver :
    https://support.logitech.com/en_us/article/Install-native-UVC-drivers-for-your-Logitech-webcam?product=a0qi00000069v0MAAQ#

    I also found that my C930e had an older firmware (8.0.866), and Logitech recommends updating the firmware to 8.0.875 to fix an unspecified UVC H.264 issue.

    So now I have the latest firmware, and am using the generic "USB Video Device" on Windows 8.1.

    ffmpeg -list_devices true -f dshow -i

    which gives this output :

    ffmpeg version N-69608-g9dc45d1 Copyright (c) 2000-2015 the FFmpeg developers
     built with gcc 4.9.2 (GCC)
     configuration: --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-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-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink --enable-zlib
     libavutil      54. 18.100 / 54. 18.100
     libavcodec     56. 21.102 / 56. 21.102
     libavformat    56. 19.100 / 56. 19.100
     libavdevice    56.  4.100 / 56.  4.100
     libavfilter     5.  9.103 /  5.  9.103
     libswscale      3.  1.101 /  3.  1.101
     libswresample   1.  1.100 /  1.  1.100
     libpostproc    53.  3.100 / 53.  3.100
    [dshow @ 00000000045c9360] DirectShow video devices (some may be both video and audio devices)
    [dshow @ 00000000045c9360]  "Logitech Webcam C930e"
    [dshow @ 00000000045c9360]     Alternative name "@device_pnp_\\?\usb#vid_046d&amp;pid_0843&amp;mi_00#7&amp;3693c0e6&amp;1&amp;0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"
    [dshow @ 00000000045c9360] DirectShow audio devices
    [dshow @ 00000000045c9360]  "Microphone (Logitech Webcam C930e)"
    [dshow @ 00000000045c9360]     Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{BB8BE70B-4DDC-465F-9247-86E6EC98D627}"
    dummy: Immediate exit requested

    And this command :
    ffmpeg -list_options true -f dshow -i video="Logitech Webcam C930e"

    still gives this output :

    ffmpeg version N-69608-g9dc45d1 Copyright (c) 2000-2015 the FFmpeg developers
     built with gcc 4.9.2 (GCC)
     configuration: --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-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-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink --enable-zlib
     libavutil      54. 18.100 / 54. 18.100
     libavcodec     56. 21.102 / 56. 21.102
     libavformat    56. 19.100 / 56. 19.100
     libavdevice    56.  4.100 / 56.  4.100
     libavfilter     5.  9.103 /  5.  9.103
     libswscale      3.  1.101 /  3.  1.101
     libswresample   1.  1.100 /  1.  1.100
     libpostproc    53.  3.100 / 53.  3.100
    [dshow @ 0000000004469360] DirectShow video device options (from video devices)
    [dshow @ 0000000004469360]  Pin "Capture" (alternative pin name "0")
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=640x480 fps=5 max s=640x480 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=640x480 fps=5 max s=640x480 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=160x120 fps=5 max s=160x120 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=160x120 fps=5 max s=160x120 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=176x144 fps=5 max s=176x144 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=176x144 fps=5 max s=176x144 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=320x180 fps=5 max s=320x180 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=320x180 fps=5 max s=320x180 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=320x240 fps=5 max s=320x240 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=320x240 fps=5 max s=320x240 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=352x288 fps=5 max s=352x288 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=352x288 fps=5 max s=352x288 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=424x240 fps=5 max s=424x240 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=424x240 fps=5 max s=424x240 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=480x270 fps=5 max s=480x270 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=480x270 fps=5 max s=480x270 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=640x360 fps=5 max s=640x360 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=640x360 fps=5 max s=640x360 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=800x448 fps=5 max s=800x448 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=800x448 fps=5 max s=800x448 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=800x600 fps=5 max s=800x600 fps=24
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=800x600 fps=5 max s=800x600 fps=24
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=848x480 fps=5 max s=848x480 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=848x480 fps=5 max s=848x480 fps=30
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=960x540 fps=5 max s=960x540 fps=15
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=960x540 fps=5 max s=960x540 fps=15
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=1024x576 fps=5 max s=1024x576 fps=15
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=1024x576 fps=5 max s=1024x576 fps=15
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=1280x720 fps=5 max s=1280x720 fps=10
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=1280x720 fps=5 max s=1280x720 fps=10
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=1600x896 fps=5 max s=1600x896 fps=7.5
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=1600x896 fps=5 max s=1600x896 fps=7.5
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=1920x1080 fps=5 max s=1920x1080 fps=5
    [dshow @ 0000000004469360]   pixel_format=yuyv422  min s=1920x1080 fps=5 max s=1920x1080 fps=5
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=640x480 fps=5 max s=640x480 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=640x480 fps=5 max s=640x480 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=160x120 fps=5 max s=160x120 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=160x120 fps=5 max s=160x120 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=176x144 fps=5 max s=176x144 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=176x144 fps=5 max s=176x144 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=320x180 fps=5 max s=320x180 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=320x180 fps=5 max s=320x180 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=320x240 fps=5 max s=320x240 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=320x240 fps=5 max s=320x240 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=352x288 fps=5 max s=352x288 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=352x288 fps=5 max s=352x288 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=424x240 fps=5 max s=424x240 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=424x240 fps=5 max s=424x240 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=480x270 fps=5 max s=480x270 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=480x270 fps=5 max s=480x270 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=640x360 fps=5 max s=640x360 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=640x360 fps=5 max s=640x360 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=800x448 fps=5 max s=800x448 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=800x448 fps=5 max s=800x448 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=800x600 fps=5 max s=800x600 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=800x600 fps=5 max s=800x600 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=848x480 fps=5 max s=848x480 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=848x480 fps=5 max s=848x480 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=960x540 fps=5 max s=960x540 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=960x540 fps=5 max s=960x540 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=1024x576 fps=5 max s=1024x576 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=1024x576 fps=5 max s=1024x576 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=1280x720 fps=5 max s=1280x720 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=1280x720 fps=5 max s=1280x720 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=1600x896 fps=5 max s=1600x896 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=1600x896 fps=5 max s=1600x896 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=1920x1080 fps=5 max s=1920x1080 fps=30
    [dshow @ 0000000004469360]   vcodec=mjpeg  min s=1920x1080 fps=5 max s=1920x1080 fps=30
    [dshow @ 0000000004469360]  Pin "Capture" (alternative pin name "1")
    video=Logitech Webcam C930e: Immediate exit requested