записывать длинные видео с нескольких веб-камер с FFmpeg - PullRequest
0 голосов
/ 04 августа 2020

Я использую

ffmpeg -f dshow -vcodec mjpeg -t 6000 -rtbufsize 2.14748e+09 -video_size 1920x1080 -framerate 60 -i video=camID-0 -f dshow -vcodec mjpeg -t 6000 -rtbufsize 2.14748e+09 -video_size 1920x1080 -framerate 60 -i video=camID-1 -map 0 -c:v libx264 -preset ultrafast -y -r 30 fileName_0.mp4 -map 1 -c:v libx264 -preset ultrafast -y -r 30 fileName_1.mp4

для записи видео с двух веб-камер. Поскольку вывод будет сжиматься дальше по строке, меня больше беспокоит качество, а не потеря кадров. Но примерно через 2 минуты буфер реального времени заполняется:

[dshow @ 00000221716edf80] real-time buffer [@device_pnp_\\?\usb#vid_15aa&pid_1555&mi_00#6&b8e4142&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global] [video input] too full or near too full (75% of size: 2147480000 [rtbufsize parameter])! frame dropped!

С другой стороны, захват несжатого видео приводит к огромным размерам файлов (1,3 ТБ в течение часа), но кодирование с настройками выше компьютера не может успевать. В настоящее время веб-камеры фиксируют 60 кадров в секунду, что не является обязательным, но я не могу установить для них значение ниже. управляемый?

ffmpeg -f dshow -list_options true -i video="3.0 USB Camera"



ffmpeg version 4.3 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 9.3.1 (GCC) 20200621
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
[dshow @ 000001f32953c380] DirectShow video device options (from video devices)
[dshow @ 000001f32953c380]  Pin "Capture" (alternative pin name "0")
[dshow @ 000001f32953c380]   vcodec=mjpeg  min s=1920x1080 fps=60.0002 max s=1920x1080 fps=60.0002
[dshow @ 000001f32953c380]   vcodec=mjpeg  min s=1920x1080 fps=60.0002 max s=1920x1080 fps=60.0002
[dshow @ 000001f32953c380]   vcodec=mjpeg  min s=1280x720 fps=60.0002 max s=1280x720 fps=60.0002
[dshow @ 000001f32953c380]   vcodec=mjpeg  min s=1280x720 fps=60.0002 max s=1280x720 fps=60.0002
[dshow @ 000001f32953c380]   vcodec=mjpeg  min s=640x480 fps=60.0002 max s=640x480 fps=60.0002
[dshow @ 000001f32953c380]   vcodec=mjpeg  min s=640x480 fps=60.0002 max s=640x480 fps=60.0002
[dshow @ 000001f32953c380]   pixel_format=yuyv422  min s=1920x1080 fps=60.0002 max s=1920x1080 fps=60.0002
[dshow @ 000001f32953c380]   pixel_format=yuyv422  min s=1920x1080 fps=60.0002 max s=1920x1080 fps=60.0002
[dshow @ 000001f32953c380]   pixel_format=yuyv422  min s=1280x720 fps=60.0002 max s=1280x720 fps=60.0002
[dshow @ 000001f32953c380]   pixel_format=yuyv422  min s=1280x720 fps=60.0002 max s=1280x720 fps=60.0002
[dshow @ 000001f32953c380]   pixel_format=yuyv422  min s=640x480 fps=60.0002 max s=640x480 fps=60.0002
[dshow @ 000001f32953c380]   pixel_format=yuyv422  min s=640x480 fps=60.0002 max s=640x480 fps=60.0002
video=3.0 USB Camera: Immediate exit requested
...