@ibalashov24

Как заставить работать FFMPEG на Raspberry Pi?

Здравствуйте. Иногда мне нужно удалённо (через SSH) записывать видео 5-10 fps с USB веб-камеры, подключенной к Raspberry Pi 2 (мощности должно хватить). Для этих целей был выбран ffmpeg/avconv, но проблема в том, что ни тот, ни другой работать на малине не хочет: они тупо зацикливаются при введении любой команды. При этом, если воткнуть камеру в ПК (на Ubuntu 14.04) с установленным ffmpeg, то те же самые команды на этом ПК выполняются без проблем.

Вывод avconv на любую команду:
pi@raspberrypi:~ $ avconv -f video4linux2 -i /dev/video0 out.mpg
avconv version 11.7-6:11.7-1~deb8u1+rpi1, Copyright (c) 2000-2016 the Libav developers
  built on Jun 17 2016 02:13:49 with gcc 4.9.2 (Raspbian 4.9.2-10)
... Далее висит ...

Вывод avconv с флагом -loglevel debug
pi@raspberrypi:~ $ avconv -loglevel debug -f video4linux2 -i /dev/video0 out.mpg
avconv version 11.7-6:11.7-1~deb8u1+rpi1, Copyright (c) 2000-2016 the Libav developers
  built on Jun 17 2016 02:13:49 with gcc 4.9.2 (Raspbian 4.9.2-10)
  configuration: --arch=arm --enable-pthreads --enable-runtime-cpudetect --extra-version='6:11.7-1~deb8u1+rpi1' --libdir=/usr/lib/arm-linux-gnueabihf --prefix=/usr --disable-yasm --disable-avserver --disable-protocol=concat --disable-armv6t2 --disable-neon --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/arm-linux-gnueabihf --enable-shared --disable-static --disable-armv6t2 --disable-neon
  avutil      configuration: --arch=arm --enable-pthreads --enable-runtime-cpudetect --extra-version='6:11.7-1~deb8u1+rpi1' --libdir=/usr/lib/arm-linux-gnueabihf --prefix=/usr --disable-yasm --disable-avserver --disable-protocol=concat --disable-armv6t2 --disable-neon --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/arm-linux-gnueabihf/neon/vfp --cpu=armv7-a --extra-cflags='-mfpu=neon -fPIC -DPIC' --enable-shared --disable-static
  avcodec     configuration: --arch=arm --enable-pthreads --enable-runtime-cpudetect --extra-version='6:11.7-1~deb8u1+rpi1' --libdir=/usr/lib/arm-linux-gnueabihf --prefix=/usr --disable-yasm --disable-avserver --disable-protocol=concat --disable-armv6t2 --disable-neon --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/arm-linux-gnueabihf/neon/vfp --cpu=armv7-a --extra-cflags='-mfpu=neon -fPIC -DPIC' --enable-shared --disable-static
  avformat    configuration: --arch=arm --enable-pthreads --enable-runtime-cpudetect --extra-version='6:11.7-1~deb8u1+rpi1' --libdir=/usr/lib/arm-linux-gnueabihf --prefix=/usr --disable-yasm --disable-avserver --disable-protocol=concat --disable-armv6t2 --disable-neon --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/arm-linux-gnueabihf/neon/vfp --cpu=armv7-a --extra-cflags='-mfpu=neon -fPIC -DPIC' --enable-shared --disable-static
  avdevice    configuration: --arch=arm --enable-pthreads --enable-runtime-cpudetect --extra-version='6:11.7-1~deb8u1+rpi1' --libdir=/usr/lib/arm-linux-gnueabihf --prefix=/usr --disable-yasm --disable-avserver --disable-protocol=concat --disable-armv6t2 --disable-neon --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/arm-linux-gnueabihf/neon/vfp --cpu=armv7-a --extra-cflags='-mfpu=neon -fPIC -DPIC' --enable-shared --disable-static
  avfilter    configuration: --arch=arm --enable-pthreads --enable-runtime-cpudetect --extra-version='6:11.7-1~deb8u1+rpi1' --libdir=/usr/lib/arm-linux-gnueabihf --prefix=/usr --disable-yasm --disable-avserver --disable-protocol=concat --disable-armv6t2 --disable-neon --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/arm-linux-gnueabihf/neon/vfp --cpu=armv7-a --extra-cflags='-mfpu=neon -fPIC -DPIC' --enable-shared --disable-static
  avresample  configuration: --arch=arm --enable-pthreads --enable-runtime-cpudetect --extra-version='6:11.7-1~deb8u1+rpi1' --libdir=/usr/lib/arm-linux-gnueabihf --prefix=/usr --disable-yasm --disable-avserver --disable-protocol=concat --disable-armv6t2 --disable-neon --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/arm-linux-gnueabihf/neon/vfp --cpu=armv7-a --extra-cflags='-mfpu=neon -fPIC -DPIC' --enable-shared --disable-static
  swscale     configuration: --arch=arm --enable-pthreads --enable-runtime-cpudetect --extra-version='6:11.7-1~deb8u1+rpi1' --libdir=/usr/lib/arm-linux-gnueabihf --prefix=/usr --disable-yasm --disable-avserver --disable-protocol=concat --disable-armv6t2 --disable-neon --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/arm-linux-gnueabihf/neon/vfp --cpu=armv7-a --extra-cflags='-mfpu=neon -fPIC -DPIC' --enable-shared --disable-static
  libavutil     54.  3. 0 / 54.  3. 0
  libavcodec    56.  1. 0 / 56.  1. 0
  libavformat   56.  1. 0 / 56.  1. 0
  libavdevice   55.  0. 0 / 55.  0. 0
  libavfilter    5.  0. 0 /  5.  0. 0
  libavresample  2.  1. 0 /  2.  1. 0
  libswscale     3.  0. 0 /  3.  0. 0
Splitting the commandline.
Reading option '-loglevel' ... matched as option 'loglevel' (set libav* logging level) with argument 'debug'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'video4linux2'.
Reading option '-i' ... matched as input file with argument '/dev/video0'.
Reading option 'out.mpg' ... matched as output file.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option loglevel (set libav* logging level) with argument debug.
Successfully parsed a group of options.
Parsing a group of options: input file /dev/video0.
Applying option f (force format) with argument video4linux2.
Successfully parsed a group of options.
Opening an input file: /dev/video0.
[video4linux2 @ 0x30b200] [4]Capabilities: 84200001
[video4linux2 @ 0x30b200] Querying the device for the current frame size
[video4linux2 @ 0x30b200] Setting frame size to 320x240
[video4linux2 @ 0x30b200] The V4L2 driver changed the pixel format from 0x32315559 to 0x56595559
    Last message repeated 1 times
[video4linux2 @ 0x30b200] The V4L2 driver changed the pixel format from 0x50323234 to 0x56595559
[video4linux2 @ 0x30b200] The V4L2 driver set input_id: 0, input: Camera 1
... Далее висит ...

Процессор при этом нагружен на 1%.

С ffmpeg ситуация в точности аналогичная, разве что после Ctrl+C в выходной директории создаётся пустой файл.

Как можно заставить это работать?
  • Вопрос задан
  • 1700 просмотров
Пригласить эксперта
Ответы на вопрос 1
greyhard
@greyhard
Программист, автолюбитель
я записываю видео так , с подключенной по USB Logitech камеры
/usr/bin/avconv -f video4linux2 -r 12 -i /dev/video0 -strict experimental -vcodec mpeg4 -y video.avi
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы