DirectShow захват видео в формате MPEG-4, с FFmpeg
При использовании модуля FFmpeg dshow в качестве данных с веб-камеры используется MJPEG.
Input #0, dshow, from 'video=Logitech HD Pro Webcam C920:audio=CABLE Output (VB-Audio Virtual Cable)':
Duration: N/A, start: 17980.693000, bitrate: N/A
Stream #0:0: Video: mjpeg (MJPG / 0x47504A4D), yuvj422p(pc, bt470bg/unknown/unknown), 640x480, 30 tbr, 10000k tbn, 30 tbc
Stream #0:1: Audio: pcm_s16le, 44100 Hz, 2 channels, s16, 1411 kb/s
Моя веб-камера поддерживает аппаратное кодирование MPEG-4, которое определенно поможет мне сэкономить некоторую пропускную способность USB, и тогда мне не придется перекодировать в MPEG-4, освобождая кучу процессоров.
Можно ли использовать веб-камеры MPEG-4 с DirectShow API? И если это так, возможно ли это сделать с помощью модуля FFmpeg dshow?
Изменить: вывод из -list_options true
:
\Brad\bin\ffmpeg -list_options true -f dshow -i video="Logitech HD Pro Webcam C920"
ffmpeg version N-67731-gce80f9f Copyright (c) 2000-2014 the FFmpeg developers
built on Nov 15 2014 22:54:40 with gcc 4.9.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-font
config --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-libmp3la
me --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --e
nable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab
--enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libw
ebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 54. 13.100 / 54. 13.100
libavcodec 56. 12.101 / 56. 12.101
libavformat 56. 13.100 / 56. 13.100
libavdevice 56. 3.100 / 56. 3.100
libavfilter 5. 2.103 / 5. 2.103
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
[dshow @ 0000000002c457c0] DirectShow video device options
[dshow @ 0000000002c457c0] Pin "Capture"
[dshow @ 0000000002c457c0] pixel_format=bgr24 min s=640x480 fps=5 max s=640x480 fps=30
[dshow @ 0000000002c457c0] pixel_format=bgr24 min s=160x90 fps=5 max s=160x90 fps=30
[dshow @ 0000000002c457c0] pixel_format=bgr24 min s=160x120 fps=5 max s=160x120 fps=30
[dshow @ 0000000002c457c0] pixel_format=bgr24 min s=176x144 fps=5 max s=176x144 fps=30
[dshow @ 0000000002c457c0] pixel_format=bgr24 min s=320x180 fps=5 max s=320x180 fps=30
[dshow @ 0000000002c457c0] pixel_format=bgr24 min s=320x240 fps=5 max s=320x240 fps=30
[dshow @ 0000000002c457c0] pixel_format=bgr24 min s=352x288 fps=5 max s=352x288 fps=30
[dshow @ 0000000002c457c0] pixel_format=bgr24 min s=432x240 fps=5 max s=432x240 fps=30
[dshow @ 0000000002c457c0] pixel_format=bgr24 min s=640x360 fps=5 max s=640x360 fps=30
[dshow @ 0000000002c457c0] pixel_format=bgr24 min s=800x448 fps=5 max s=800x448 fps=30
[dshow @ 0000000002c457c0] pixel_format=bgr24 min s=800x600 fps=5 max s=800x600 fps=30
[dshow @ 0000000002c457c0] pixel_format=bgr24 min s=864x480 fps=5 max s=864x480 fps=30
[dshow @ 0000000002c457c0] pixel_format=bgr24 min s=960x720 fps=5 max s=960x720 fps=30
[dshow @ 0000000002c457c0] pixel_format=bgr24 min s=1024x576 fps=5 max s=1024x576 fps=30
[dshow @ 0000000002c457c0] pixel_format=bgr24 min s=1280x720 fps=5 max s=1280x720 fps=30
[dshow @ 0000000002c457c0] pixel_format=bgr24 min s=1600x896 fps=5 max s=1600x896 fps=30
[dshow @ 0000000002c457c0] pixel_format=bgr24 min s=1920x1080 fps=5 max s=1920x1080 fps=30
[dshow @ 0000000002c457c0] pixel_format=bgr24 min s=2304x1296 fps=2 max s=2304x1296 fps=2
[dshow @ 0000000002c457c0] pixel_format=bgr24 min s=2304x1536 fps=2 max s=2304x1536 fps=2
[dshow @ 0000000002c457c0] pixel_format=yuv420p min s=640x480 fps=5 max s=640x480 fps=30
[dshow @ 0000000002c457c0] pixel_format=yuv420p min s=160x90 fps=5 max s=160x90 fps=30
[dshow @ 0000000002c457c0] pixel_format=yuv420p min s=160x120 fps=5 max s=160x120 fps=30
[dshow @ 0000000002c457c0] pixel_format=yuv420p min s=176x144 fps=5 max s=176x144 fps=30
[dshow @ 0000000002c457c0] pixel_format=yuv420p min s=320x180 fps=5 max s=320x180 fps=30
[dshow @ 0000000002c457c0] pixel_format=yuv420p min s=320x240 fps=5 max s=320x240 fps=30
[dshow @ 0000000002c457c0] pixel_format=yuv420p min s=352x288 fps=5 max s=352x288 fps=30
[dshow @ 0000000002c457c0] pixel_format=yuv420p min s=432x240 fps=5 max s=432x240 fps=30
[dshow @ 0000000002c457c0] pixel_format=yuv420p min s=640x360 fps=5 max s=640x360 fps=30
[dshow @ 0000000002c457c0] pixel_format=yuv420p min s=800x448 fps=5 max s=800x448 fps=30
[dshow @ 0000000002c457c0] pixel_format=yuv420p min s=800x600 fps=5 max s=800x600 fps=30
[dshow @ 0000000002c457c0] pixel_format=yuv420p min s=864x480 fps=5 max s=864x480 fps=30
[dshow @ 0000000002c457c0] pixel_format=yuv420p min s=960x720 fps=5 max s=960x720 fps=30
[dshow @ 0000000002c457c0] pixel_format=yuv420p min s=1024x576 fps=5 max s=1024x576 fps=30
[dshow @ 0000000002c457c0] pixel_format=yuv420p min s=1280x720 fps=5 max s=1280x720 fps=30
[dshow @ 0000000002c457c0] pixel_format=yuv420p min s=1600x896 fps=5 max s=1600x896 fps=30
[dshow @ 0000000002c457c0] pixel_format=yuv420p min s=1920x1080 fps=5 max s=1920x1080 fps=30
[dshow @ 0000000002c457c0] pixel_format=yuv420p min s=2304x1296 fps=2 max s=2304x1296 fps=2
[dshow @ 0000000002c457c0] pixel_format=yuv420p min s=2304x1536 fps=2 max s=2304x1536 fps=2
[dshow @ 0000000002c457c0] vcodec=mjpeg min s=640x480 fps=5 max s=640x480 fps=30
[dshow @ 0000000002c457c0] vcodec=mjpeg min s=160x90 fps=5 max s=160x90 fps=30
[dshow @ 0000000002c457c0] vcodec=mjpeg min s=160x120 fps=5 max s=160x120 fps=30
[dshow @ 0000000002c457c0] vcodec=mjpeg min s=176x144 fps=5 max s=176x144 fps=30
[dshow @ 0000000002c457c0] vcodec=mjpeg min s=320x180 fps=5 max s=320x180 fps=30
[dshow @ 0000000002c457c0] vcodec=mjpeg min s=320x240 fps=5 max s=320x240 fps=30
[dshow @ 0000000002c457c0] vcodec=mjpeg min s=352x288 fps=5 max s=352x288 fps=30
[dshow @ 0000000002c457c0] vcodec=mjpeg min s=432x240 fps=5 max s=432x240 fps=30
[dshow @ 0000000002c457c0] vcodec=mjpeg min s=640x360 fps=5 max s=640x360 fps=30
[dshow @ 0000000002c457c0] vcodec=mjpeg min s=800x448 fps=5 max s=800x448 fps=30
[dshow @ 0000000002c457c0] vcodec=mjpeg min s=800x600 fps=5 max s=800x600 fps=30
[dshow @ 0000000002c457c0] vcodec=mjpeg min s=864x480 fps=5 max s=864x480 fps=30
[dshow @ 0000000002c457c0] vcodec=mjpeg min s=960x720 fps=5 max s=960x720 fps=30
[dshow @ 0000000002c457c0] vcodec=mjpeg min s=1024x576 fps=5 max s=1024x576 fps=30
[dshow @ 0000000002c457c0] vcodec=mjpeg min s=1280x720 fps=5 max s=1280x720 fps=30
[dshow @ 0000000002c457c0] vcodec=mjpeg min s=1600x896 fps=5 max s=1600x896 fps=30
[dshow @ 0000000002c457c0] vcodec=mjpeg min s=1920x1080 fps=5 max s=1920x1080 fps=30
[dshow @ 0000000002c457c0] Pin "Capture"
[dshow @ 0000000002c457c0] vcodec=h264 min s=640x480 fps=5 max s=640x480 fps=30
[dshow @ 0000000002c457c0] vcodec=h264 min s=160x90 fps=5 max s=160x90 fps=30
[dshow @ 0000000002c457c0] vcodec=h264 min s=160x120 fps=5 max s=160x120 fps=30
[dshow @ 0000000002c457c0] vcodec=h264 min s=176x144 fps=5 max s=176x144 fps=30
[dshow @ 0000000002c457c0] vcodec=h264 min s=320x180 fps=5 max s=320x180 fps=30
[dshow @ 0000000002c457c0] vcodec=h264 min s=320x240 fps=5 max s=320x240 fps=30
[dshow @ 0000000002c457c0] vcodec=h264 min s=352x288 fps=5 max s=352x288 fps=30
[dshow @ 0000000002c457c0] vcodec=h264 min s=432x240 fps=5 max s=432x240 fps=30
[dshow @ 0000000002c457c0] vcodec=h264 min s=640x360 fps=5 max s=640x360 fps=30
[dshow @ 0000000002c457c0] vcodec=h264 min s=800x448 fps=5 max s=800x448 fps=30
[dshow @ 0000000002c457c0] vcodec=h264 min s=800x600 fps=5 max s=800x600 fps=30
[dshow @ 0000000002c457c0] vcodec=h264 min s=864x480 fps=5 max s=864x480 fps=30
[dshow @ 0000000002c457c0] vcodec=h264 min s=960x720 fps=5 max s=960x720 fps=30
[dshow @ 0000000002c457c0] vcodec=h264 min s=1024x576 fps=5 max s=1024x576 fps=30
[dshow @ 0000000002c457c0] vcodec=h264 min s=1280x720 fps=5 max s=1280x720 fps=30
[dshow @ 0000000002c457c0] vcodec=h264 min s=1600x896 fps=5 max s=1600x896 fps=30
[dshow @ 0000000002c457c0] vcodec=h264 min s=1920x1080 fps=5 max s=1920x1080 fps=30
video=Logitech HD Pro Webcam C920: Immediate exit requested
1 ответ
ffmpeg -s 1920x1080 -framerate 30 -rtbufsize 100 МБ -f dshow -vcodec h264 -i video = "Logitech HD Pro Webcam C920" -copyinkf -vcodec копировать файл Out.mp4
Вы получите потоковое видео в формате Full HD 3 Мбит / с с камеры на диск без перекодирования. Я не смог найти способ запросить другой битрейт. Существует также задержка около 7 секунд при запуске. Я полагаю, что задержка связана с ключевыми кадрами, но я не смог проверить это или уменьшить задержку. Если кто-то может помочь, пожалуйста, сделайте.
Я использую:
ffmpeg версия N-80906-gd5edb6c Copyright (c) 2000-2016 разработчики FFmpeg построен с GCC 5.4.0 (GCC) конфигурация: --enable-gpl --enable-version3 --disable-w32threads --enable-dxva2 --enable-libmfx --enable-nvenc --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-libop enjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable -libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib libavutil 55. 28.100 / 55. 28.100 libavcodec 57. 48.101 / 57. 48.101 libavformat 57. 41.100 / 57. 41.100 libavdevice 57. 0.102 / 57. 0.102 libavfilter 6. 47.100 / 6. 47.100 libswscale 4. 1.100 / 4. 1.100 libswresample 2. 1.100 / 2. 1.100 libpostproc 54. 0.100 / 54. 0.100