Recherche avancée

Médias (91)

Autres articles (71)

  • MediaSPIP v0.2

    21 juin 2013, par

    MediaSPIP 0.2 est la première version de MediaSPIP stable.
    Sa date de sortie officielle est le 21 juin 2013 et est annoncée ici.
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Comme pour la version précédente, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

  • Mise à disposition des fichiers

    14 avril 2011, par

    Par défaut, lors de son initialisation, MediaSPIP ne permet pas aux visiteurs de télécharger les fichiers qu’ils soient originaux ou le résultat de leur transformation ou encodage. Il permet uniquement de les visualiser.
    Cependant, il est possible et facile d’autoriser les visiteurs à avoir accès à ces documents et ce sous différentes formes.
    Tout cela se passe dans la page de configuration du squelette. Il vous faut aller dans l’espace d’administration du canal, et choisir dans la navigation (...)

Sur d’autres sites (7141)

  • Added two new properties that expose how and elements …

    3 mars 2015, par jackmoore
    Added two new properties that expose how  and  elements are created, to give users direct control over those elements. Fixes #700.
  • Muxing Android MediaCodec encoded H264 packets into RTMP

    31 décembre 2015, par Vadym

    I am coming from a thread Encoding H.264 from camera with Android MediaCodec. My setup is very similar. However, I attempt to write mux the encoded frames and with javacv and broadcast them via rtmp.

    RtmpClient.java

    ...
    private volatile BlockingQueue mFrameQueue = new LinkedBlockingQueue(MAXIMUM_VIDEO_FRAME_BACKLOG);
    ...
    private void startStream() throws FrameRecorder.Exception, IOException {
       if (TextUtils.isEmpty(mDestination)) {
           throw new IllegalStateException("Cannot start RtmpClient without destination");
       }

       if (mCamera == null) {
           throw new IllegalStateException("Cannot start RtmpClient without camera.");
       }

       Camera.Parameters cameraParams = mCamera.getParameters();

       mRecorder = new FFmpegFrameRecorder(
               mDestination,
               mVideoQuality.resX,
               mVideoQuality.resY,
               (mAudioQuality.channelType.equals(AudioQuality.CHANNEL_TYPE_STEREO) ? 2 : 1));

       mRecorder.setFormat("flv");

       mRecorder.setFrameRate(mVideoQuality.frameRate);
       mRecorder.setVideoBitrate(mVideoQuality.bitRate);
       mRecorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);

       mRecorder.setSampleRate(mAudioQuality.samplingRate);
       mRecorder.setAudioBitrate(mAudioQuality.bitRate);
       mRecorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC);

       mVideoStream = new VideoStream(mRecorder, mVideoQuality, mFrameQueue, mCamera);
       mAudioStream = new AudioStream(mRecorder, mAudioQuality);

       mRecorder.start();

       // Setup a bufferred preview callback
       setupCameraCallback(mCamera, mRtmpClient, DEFAULT_PREVIEW_CALLBACK_BUFFERS,
               mVideoQuality.resX * mVideoQuality.resY * ImageFormat.getBitsPerPixel(
                       cameraParams.getPreviewFormat())/8);

       try {
           mVideoStream.start();
           mAudioStream.start();
       }
       catch(Exception e) {
           e.printStackTrace();
           stopStream();
       }
    }
    ...
    @Override
    public void onPreviewFrame(byte[] data, Camera camera) {
       boolean frameQueued = false;

       if (mRecorder == null || data == null) {
           return;
       }

       frameQueued = mFrameQueue.offer(data);

       // return the buffer to be reused - done in videostream
       //camera.addCallbackBuffer(data);
    }
    ...

    VideoStream.java

    ...
    @Override
    public void run() {
       try {
           mMediaCodec = MediaCodec.createEncoderByType("video/avc");
           MediaFormat mediaFormat = MediaFormat.createVideoFormat("video/avc", mVideoQuality.resX, mVideoQuality.resY);
           mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, mVideoQuality.bitRate);
           mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, mVideoQuality.frameRate);
           mediaFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420SemiPlanar);
           mediaFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 1);
           mMediaCodec.configure(mediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
           mMediaCodec.start();
       }
       catch(IOException e) {
           e.printStackTrace();
       }

       long startTimestamp = System.currentTimeMillis();
       long frameTimestamp = 0;
       byte[] rawFrame = null;

       try {
           while (!Thread.interrupted()) {
               rawFrame = mFrameQueue.take();

               frameTimestamp = 1000 * (System.currentTimeMillis() - startTimestamp);

               encodeFrame(rawFrame, frameTimestamp);

               // return the buffer to be reused
               mCamera.addCallbackBuffer(rawFrame);
           }
       }
       catch (InterruptedException ignore) {
           // ignore interrup while waiting
       }

       // Clean up video stream allocations
       try {
           mMediaCodec.stop();
           mMediaCodec.release();
           mOutputStream.flush();
           mOutputStream.close();
       } catch (Exception e){
           e.printStackTrace();
       }
    }
    ...
    private void encodeFrame(byte[] input, long timestamp) {
       try {
           ByteBuffer[] inputBuffers = mMediaCodec.getInputBuffers();
           ByteBuffer[] outputBuffers = mMediaCodec.getOutputBuffers();

           int inputBufferIndex = mMediaCodec.dequeueInputBuffer(0);

           if (inputBufferIndex >= 0) {
               ByteBuffer inputBuffer = inputBuffers[inputBufferIndex];
               inputBuffer.clear();
               inputBuffer.put(input);
               mMediaCodec.queueInputBuffer(inputBufferIndex, 0, input.length, timestamp, 0);
           }

           MediaCodec.BufferInfo bufferInfo = new MediaCodec.BufferInfo();

           int outputBufferIndex = mMediaCodec.dequeueOutputBuffer(bufferInfo, 0);

           if (outputBufferIndex >= 0) {
               while (outputBufferIndex >= 0) {
                   ByteBuffer outputBuffer = outputBuffers[outputBufferIndex];

                   // Should this be a direct byte buffer?
                   byte[] outData = new byte[bufferInfo.size - bufferInfo.offset];
                   outputBuffer.get(outData);

                   mFrameRecorder.record(outData, bufferInfo.offset, outData.length, timestamp);

                   mMediaCodec.releaseOutputBuffer(outputBufferIndex, false);
                   outputBufferIndex = mMediaCodec.dequeueOutputBuffer(bufferInfo, 0);
               }
           }
           else if (outputBufferIndex == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {
               outputBuffers = mMediaCodec.getOutputBuffers();
           } else if (outputBufferIndex == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
               // ignore for now
           }
       } catch (Throwable t) {
           t.printStackTrace();
       }

    }
    ...

    FFmpegFrameRecorder.java

    ...
    // Hackish codec copy frame recording function
    public boolean record(byte[] encodedData, int offset, int length, long frameCount) throws Exception {
       int ret;

       if (encodedData == null) {
           return false;
       }

       av_init_packet(video_pkt);

       // this is why i wondered whether I should get outputbuffer data into direct byte buffer
       video_outbuf.put(encodedData, 0, encodedData.length);

       video_pkt.data(video_outbuf);
       video_pkt.size(video_outbuf_size);

       video_pkt.pts(frameCount);
       video_pkt.dts(frameCount);

       video_pkt.stream_index(video_st.index());

       synchronized (oc) {
           /* write the compressed frame in the media file */
           if (interleaved && audio_st != null) {
               if ((ret = av_interleaved_write_frame(oc, video_pkt)) < 0) {
                   throw new Exception("av_interleaved_write_frame() error " + ret + " while writing interleaved video frame.");
               }
           } else {
               if ((ret = av_write_frame(oc, video_pkt)) < 0) {
                   throw new Exception("av_write_frame() error " + ret + " while writing video frame.");
               }
           }
       }
       return (video_pkt.flags() & AV_PKT_FLAG_KEY) == 1;
    }
    ...

    When I try to stream the video and run ffprobe on it, I get the following output :

    ffprobe version 2.5.3 Copyright (c) 2007-2015 the FFmpeg developers
     built on Jan 19 2015 12:56:57 with gcc 4.1.2 (GCC) 20080704 (Red Hat 4.1.2-55)
     configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --enable-bzlib --disable-crystalhd --enable-libass --enable-libdc1394 --enable-libfaac --enable-nonfree --disable-indev=jack --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-openal --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab --enable-avfilter --enable-avresample --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --enable-libcaca --shlibdir=/usr/lib64 --enable-runtime-cpudetect
     libavutil      54. 15.100 / 54. 15.100
     libavcodec     56. 13.100 / 56. 13.100
     libavformat    56. 15.102 / 56. 15.102
     libavdevice    56.  3.100 / 56.  3.100
     libavfilter     5.  2.103 /  5.  2.103
     libavresample   2.  1.  0 /  2.  1.  0
     libswscale      3.  1.101 /  3.  1.101
     libswresample   1.  1.100 /  1.  1.100
     libpostproc    53.  3.100 / 53.  3.100
    Metadata:
     Server                NGINX RTMP (github.com/arut/nginx-rtmp-module)
     width                 320.00
     height                240.00
     displayWidth          320.00
     displayHeight         240.00
     duration              0.00
     framerate             0.00
     fps                   0.00
     videodatarate         261.00
     videocodecid          7.00
     audiodatarate         62.00
     audiocodecid          10.00
     profile
     level
    [live_flv @ 0x1edb0820] Could not find codec parameters for stream 0 (Video: none, none, 267 kb/s): unknown codec
    Consider increasing the value for the 'analyzeduration' and 'probesize' options
    Input #0, live_flv, from 'rtmp://<server>/input/<stream>':
     Metadata:
       Server          : NGINX RTMP (github.com/arut/nginx-rtmp-module)
       displayWidth    : 320
       displayHeight   : 240
       fps             : 0
       profile         :
       level           :
     Duration: 00:00:00.00, start: 16.768000, bitrate: N/A
       Stream #0:0: Video: none, none, 267 kb/s, 1k tbr, 1k tbn, 1k tbc
       Stream #0:1: Audio: aac (LC), 16000 Hz, mono, fltp, 63 kb/s
    Unsupported codec with id 0 for input stream 0
    </stream></server>

    I am not, by any means, an expert in H264 or video encoding. I know that the encoded frames that come out from MediaCodec contain SPS NAL, PPS NAL, and frame NAL units. I’ve also written the MediaCodec output into a file and was able to play it back (I did have to specify the format and framerate as otherwise it would play too fast).

    My assumption is that things should work (see how little I know :)). Knowing that SPS and PPS are written out, decoder should know enough. Yet, ffprobe fails to recognize codec, fps, and other video information. Do I need to pass packet flag information to FFmpegFrameRecorder.java:record() function ? Or should I use direct buffer ? Any suggestion will be appreciated ! I should figure things out with a hint.

    PS : I know that some codecs use Planar and other SemiPlanar color formats. That distinction will come later if I get past this. Also, I didn’t go the Surface to MediaCodec way because I need to support API 17 and it requires more changes than this route, which I think helps me understand the more basic flow. Agan, I appreciate any suggestions. Please let me know if something needs to be clarified.

    Update #1

    So having done more testing, I see that my encoder outputs the following frames :

    000000016742800DDA0507E806D0A1350000000168CE06E2
    0000000165B840A6F1E7F0EA24000AE73BEB5F51CC7000233A84240...
    0000000141E2031364E387FD4F9BB3D67F51CC7000279B9F9CFE811...
    0000000141E40304423FFFFF0B7867F89FAFFFFFFFFFFCBE8EF25E6...
    0000000141E602899A3512EF8AEAD1379F0650CC3F905131504F839...
    ...

    The very first frame contains SPS and PPS. From what I was able to see, these are transmitted only once. The rest are NAL types 1 and 5. So, my assumption is that, for ffprobe to see stream info not only when the stream starts, I should capture SPS and PPS frames and re-transmit them myself periodically, after a certain number of frames, or perhaps before every I-frame. What do you think ?

    Update #2

    Unable to validate that I’m writing frames successfully. After having tried to read back the written packet, I cannot validate written bytes. As strange, on successful write of IPL image and streaming, I also cannot print out bytes of encoded packet after avcodec_encode_video2. Hit the official dead end.

  • 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