ffmpeg video+audio


  • 0

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



  • 1

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



  • 2

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



  • 3

    Этот вариант попробовал на официальном дистрибутиве 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 завести не смог (наверно руки кривые).



  • 4

    Сегодня получил ответ от тех.поддержки по поводу камеры 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 и другие) вообще не будет в новом ядре. Имейте ввиду кому интересно.



  • 5

    Проблему с 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!
    Никто не сталкивался?



  • 6

    Вопрос решен.
    Расклад таков:
    одноплатник - 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. Учитывая возникшую задачу - сгодится.





Похоже, подключение к PiBoard было разорвано, подождите, пока мы пытаемся восстановить соединение.