ffmpeg video+audio

Всем привет.
Есть задача: сделать что-то вроде видеорегистратора. Платформа выбрана: NanoPi Neo Air (из-за ограничений по размерам).
Туда поставил eflasher 20170531 с ядром 4.11 с оф.сайта, при установке в eMMC выбрал ubuntu core.
При помощи ffmpeg (из коробки) удается записать видео, а вот аудио никак. В поддерживаемых форматах ffmpeg отсутствует alsa.
Пробовал отдельно писать аудио arecord-ом - получается, и даже потом склеивал аудио и видео файлы, но это костыль. Ещё и задержка при записи следующего файла появляется, а это уже критично.
Кто-нибудь сталкивался проблемой записи аудио+видео ffmpeg в данном дистрибутиве?

@tanat А ffmpeg из свежих? Может быть стоит подключить репозитрий того же raspbian и установить оттуда свежую и правильно собраную версию пакета?
Еще как вариант, на попробовать - armbian, там пакеты должны быть в полном порядке.

@piman ffmpeg version 2.3.git скомпилирована аж 06.09.2016.
На счет raspbian не уверен будет ли там поддержка аппаратного сжатия h264 (cedrus264). В любом случае пересобирать придется, попробую.
Есть ещё вариант. Вот только мне не нравится версия libavdevice 56.0.100, потому что сейчас у меня точно такая же, а на ноутбуке libavdevice 56.4.100.

Этот вариант попробовал на официальном дистрибутиве elfasher_ubuntu_core_4.11_20170531. Вот только ошибка с поддержкой alsa в ffmpeg была связана с отсутствием libasound2-dev библиотеки потому как после configure в config.log можно было увидеть ошибку отсутствие asoundlib.h заголовочного файла в директории /usr/unclude/alsa (описание похожей проблемы ). После установки указанной библиотеки заголовочный файл asoundlib.h в /usr/include/alsa был установлен. Повторное выполнение configure ffmpeg было успешным, появились alsa input/output device

Но не все так просто. В новом официальном дистрибутиве проблему со встроенным аудио-кодеком разработчики решили, вот только зачем поддержку камеры ov5640 выкинули пока не понимаю.

С дистрибутивом armbian 2.25 - 3.4.113 вообще все печально с камерой, не видит и все (script.bin весь перелопатил), даже wi-fi завести не смог (наверно руки кривые).

Сегодня получил ответ от тех.поддержки по поводу камеры ov5640 в официальном дистрибутиве с ядром 4.11 от friendlyARM.

Hi,

  Now the kernel 4.11.2 haven't supported DVP driver, so doesn't support CAM500B  camera. We will add a description of the kernel 4.11 and the kernel 3.4 difference later.

thank you!

То есть поддержки камер с интерфейсом DVP (ov5640 и другие) вообще не будет в новом ядре. Имейте ввиду кому интересно.

Проблему с wifi решил в armbian 5.31.
Необходимо скачать папку https://github.com/armbian/build/tree/master/bin/firmware-overlay/ap6212
вставить содержимое в папку /lib/firmware/ap6212
Также необходимо скачать https://github.com/armbian/build/tree/master/bin/firmware-overlay/brcm и
скопировать /lib/firmware/brcm
Затем выполнить:

# cd /lib/firmware
# cat ap6212/fw_bcm43438a1.bin > brcm/brcmfmac43430-sdio.bin

в файле /etc/modules перед строчкой dhd необходимо прописать brcmfmac
в файлах /etc/wpa_supplicant/wpa_supplicant.conf и /etc/network/interfaces
прописать необходимые настройки для беспроводной сети и ребут системы.
Но с видео-камерой в armbian 5.31 все ещё проблемы.
Камеру определяет, устройство /dev/video0 появляется, а подступиться не могу после запуска mjpg-streamer выдает:
[VFE_ERR]bsp_csi_set_fmt error at vidioc_s_fmt_vid_cap!
Никто не сталкивался?

Вопрос решен.
Расклад таков:
одноплатник - nanopi neo air
модуль камеры - CAM500B (ov5640 image sensor)
звук - электретный двупроводный микрофон подключенный к MIC+ MIC- одноплатника.
дистрибутив - armbian 5.31 kernel 3.4.113
видео-аудио запись - собранный ffmpeg из этого и этого по инструкции отсюда

при попытке запустить аудио-видео запись:

ffmpeg -f v4l2 -s 640x480 -i /dev/video0 -f alsa -ar 22050 -i hw:0,0 -r 25 -framerate 25 -pix_fmt nv12 -c:v cedrus264 -b:v 270k -c:a mp3 -b:a 64k destination.avi

выдает ошибку как в предыдущем ответе, но стоило добавить параметр -channel 0 как все встало на свои места. Видео-аудио пишется, картинка - хорошая. В общем строка получилась следующая:

ffmpeg -f v4l2 -channel 0 -s 640x480 -i /dev/video0 -f alsa -ar 22050 -i hw:0,0 -r 25 -framerate 25 -pix_fmt nv12 -c:v cedrus264 -b:v 270k -c:a mp3 -b:a 64k destination.avi

Для поддержки звука перед компиляцией ffmpeg необходимо установить libasound2-dev.

К сожалению mjpg-streamer так и не заработал, пока только ffmpeg. Учитывая возникшую задачу - сгодится.

@tanat как нагрев после продолжительного использования? Разрешение 640*480 потому что больше не справляется? Пробовали без перекодировки писать большее разрешение?

@Zip0box

  1. Общий нагрев с родным радиатором в пределах 40-50 градусов (все 4 ядра включены).
  2. С большим разрешением справляется, проблем особых нет. При разрешении Full HD частота кадров выше 15 кадров/с не поднимается и греется серьезнее.
  3. Без перекодировки писать не пробовал, необходимо писать как можно дольше.
Log in to reply