Я пытаюсь передавать потоковое аудио с использованием ffmpeg
внешнего USB-микрофона. Я следовал этому почти учебнику
Мне пришлось адаптировать некоторые шаги, но, наконец, я получил поток моего ноутбука с помощью этой команды:
ffmpeg -f oss -i /dev/dsp1 -acodec libmp3lame -ab 32k -ac 1 -re -f rtp rtp://192.168.28.116:1234
Процессор почти на 100%, у меня плохой звук в течение двух секунд и после ничего ... Я вижу в Wireshark, что плата непрерывно посылает кадры.
У кого-нибудь есть идеи по снижению загрузки процессора?
Ответы:
Чтобы ответить на ваш конкретный вопрос, вы можете уменьшить загрузку процессора, добавив arecord в ffmpeg:
Вам нужно будет заменить plughw: 1,0 вашей конкретной звуковой картой. Смотрите arecord -l для информации. На моем Rasp Pi он вырос с ~ 95% до ~ 35%.
источник
ALSA вход
Одна альтернатива состоит в том, чтобы пройти через ALSA. Команда, аналогичная приведенной выше, будет
Я не уверен, как это повлияет на использование процессора.
источник
Это работает и уменьшает использование процессора:
Обязательно замените значение по умолчанию: CARD = U0x46d0x819 на ваш идентификатор микрофона (полученный из arecord -l), или вы можете указать
-i hw:0,0
(или любое другое устройство).У меня была похожая проблема - кодирование mp3 занимало 90% + мощности процессора и просто не могло идти в ногу со звуком - поэтому я изменил его на кодировку mp2. При этом использовалось около 15-18% процессорного времени (измеренное vi
top
) и плавно передавалось в VLC в моей локальной сети. Это сделало бы идеальный радионяня или что угодно. Существует только секунда или около того задержка, которая является буферизацией на конце VLC.Примечание . IP-адрес является многоадресным ([224-239] .xyz). Вам не нужно нацеливать его на определенное сетевое устройство в вашей локальной сети, и ваш широкополосный маршрутизатор будет поддерживать локальный трафик (по умолчанию).
источник
Вы можете значительно снизить нагрузку на процессор, уменьшив частоту дискретизации звука на устройстве ввода (
-ar 8000
до-f alsa
) и установив битрейт аудио для кодека на 128k (-b:a 128k
). Также, по иронии судьбы, уменьшение количества каналов (-ac 1
), похоже, увеличивает нагрузку на процессор, поэтому я обнаружил, что эта команда работает при довольно низкой загрузке процессора:Хотя нужно помнить, что это также зависит от возможностей аппаратного обеспечения захвата, которое вы пытаетесь использовать, и версий ffmpeg / avconv.
источник