DirectShow захват видео в формате MPEG-4, с FFmpeg

1226
Brad

При использовании модуля FFSmpeg 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 
0
`Ffmpeg -list_options true -f dshow -i video =" Logitech HD Pro Webcam C920 "` показывает дополнительную информацию о входе? (Но я не уверен, что так и будет, поскольку я не пользователь Windows). LordNeckbeard 8 лет назад 0
@LordNeckbeard Это делает! Благодарю. Теперь сложная часть ... есть две булавки, обе называются «Захват». Любая идея, как я могу указать, какой вывод, когда есть избыточное имя? Brad 8 лет назад 0
@LordNeckbeard `ffmpeg -f dshow -vcodec h264 -video_size 1920x1080 -framerate 30 -i video =" Logitech HD Pro Webcam C920 -vcodec copy test.mp4` правильно отображает видеопоток в качестве входных и выходных данных, но кадры не работают Камера загорается, как будто она записывает, но FFmpeg просто сидит в кадре 0, время 00: 00: 00.00, битрейт = N / A. Дает возможность поработать пару минут, кажется, никогда не запускается. Есть предложения? Brad 8 лет назад 0
Возможно `-video_pin_name 1` выбрать второй так называемый" пин ". Не уверен, почему было выбрано это слово ... У меня будет доступ к машине с Windows в понедельник, если кто-то другой не предложит более полезную информацию. LordNeckbeard 8 лет назад 0

1 ответ на вопрос

0
ScottC

ffmpeg -s 1920x1080 -фрейм 30 -rtbufsize 100 МБ -f dshow -vcodec h264 -i video = "Logitech HD Pro Webcam C920" -copyinkf -vcodec copy файл 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 
Я пытаюсь это сделать и получаю: `[dshow @ 00000000006c2cc0] Не удалось установить параметры видео` и` video = Logitech HD Pro Webcam C920: ошибка ввода-вывода` Dzwiedziu-nkg 7 лет назад 0