Рейтинг:0

ffmpeg alsa не может записывать звук с карты захвата UVC USB HDMI на сервер HLS

флаг it

в том же контексте раньше мне помог брат (llogan) 15 октября в 16:35, используя синтаксис его предложения, и я попробовал это, сначала у меня заикался звук, затем он снова стал тихим ,но почему-то я давно не заходил на этот блог,поэтому связь потеряна,поэтому кто-нибудь может мне помочь? текущее состояние мы используем синтаксис:

ffmpeg -f alsa -channels 2 -sample_rate 44100 -i hw:0 -f video4linux2 -i /dev/video0 -c:a aac -b:a 128k -c:v libx264 -preset veryfast -b:v 4000k -maxrate 4000k -bufsize 12000k -g 10 -vf "масштаб=1280:720,формат=yuv420p" -f flv rtmp://localhost/show/stream

и у меня есть информация, работающая от ffmpeg:

[alsa @ 0x556854b35c60] Буфер ALSA xrun. 
кадр = 237 кадров в секунду = 5,0 q = 13,0 размер = 21447 КБ время = 00:00:43,23 битрейт = 4063,4 кбит/с скорость = 0,9 
кадр = 239 кадров в секунду = 5,0 q = 13,0 размер = 21633 кБ время = 00:00:43,23 битрейт = 4098,6 кбит/с скорость = 0,9 
[alsa @ 0x556854b35c60] Буфер ALSA xrun. 
кадр = 242 кадра в секунду = 5,0 q = 13,0 размер = 21932 кБ время = 00:00:44,23 битрейт = 4061,5 кбит/с скорость = 0,9 
кадр = 244 кадра в секунду = 5,0 q = 13,0 размер = 22124 кБ время = 00:00:44,23 битрейт = 4097,1 кбит/с скорость = 0,9

что-то не так?, и мы останавливаем кодировщик, у нас есть информация:

[flv @ 0x5585283c6a40] Не удалось обновить заголовок с правильной продолжительностью.
[flv @ 0x5585283c6a40] Не удалось обновить заголовок с правильным размером файла.
кадр = 428826 кадров в секунду = 5,0 q = -1,0 Lsize = 40706449 КБ время = 23:49:20,70 битрейт = 3888,1 кбит / с скорость = 0,958x
видео: 428826 КБ аудио: 767 КБ субтитры: 0 КБ другие потоки: 0 КБ глобальные заголовки: 0 КБ накладные расходы на мультиплексирование: 0,025860%
[libx264 @ 0x5585283c8200] кадр I: 57274 средний QP: 7,20 размер: 151544
[libx264 @ 0x5585283c8200] кадр P: 263139 Средний QP: 10,57 Размер: 96778
[libx264 @ 0x5585283c8200] кадр B: 108413 Средний размер QP: 10,50: 69423
[libx264 @ 0x5585283c8200] последовательные B-кадры: 63,0% 7,8% 6,5% 22,7%
[libx264 @ 0x5585283c8200] мб I I16..4: 14,2% 12,6% 73,2%
[libx264 @ 0x5585283c8200] mb P I16..4: 12,6% 11,5% 27,5% P16..4: 8,2% 17,2% 20,3% 0,0% 0,0% пропустить: 2,7%
[libx264 @ 0x5585283c8200] mb B I16..4: 4,2% 2,4% 4,7% B16..8: 23,7% 26,8% 14,9% прямой:14,1% пропуск:9,1% L0:36,9% L1:34,7% BI:28,4%
[libx264 @ 0x5585283c8200] Преобразование 8x8 внутри: 19,5% между: 35,3%
[libx264 @ 0x5585283c8200] закодировано y,uvDC,uvAC внутри: 83,4% 88,7% 85,2% между: 78,4% 76,8% 46,4%
[libx264 @ 0x5585283c8200] i16 v,h,dc,p: 45% 40% 10% 5%
[libx264 @ 0x5585283c8200] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 25% 41% 12% 3% 3% 3% 5% 3% 5%
[libx264 @ 0x5585283c8200] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 26% 34% 8% 4% 6% 5% 6% 5% 6%
[libx264 @ 0x5585283c8200] i8c dc,h,v,p: 34% 35% 18% 13%
[libx264 @ 0x5585283c8200] Взвешенные P-кадры: Y: 2,6% UV: 1,9%
[libx264 @ 0x5585283c8200] кб/с: 3887,06
[aac @ 0x5585283cc760] Qavg: 65536.000
s710@sensorsip:~$

Сначала мы запускаем ffmpg msg:

s710@sensorsip:~$ ffmpeg -f alsa -channels 2 -sample_rate 44100 -i hw:0 -f video4linux2 -i /dev/video0 -c:a aac -b:a 128k -c:v libx264 -preset veryfast -b :v 4000k -maxrate 4000k -bufsize 12000k -g 10 -vf "масштаб=1280:720,формат=yuv420p" -f flv rtmp://localhost/show/stream
ffmpeg версии 3.4.8-0ubuntu0.2 Copyright (c) 2000-2020 разработчики FFmpeg
  построен с помощью gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
  конфигурация: --prefix=/usr --extra-version=0ubuntu0.2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libie c61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
  libavutil 55. 78.100 / 55. 78.100
  libavcodec 57.107.100 / 57.107.100
  libavformat 57.83.100 / 57.83.100
  libavdevice 57. 10.100 / 57. 10.100
  libavfilter 6.107.100 / 6.107.100
  libavresample 3. 7. 0 / 3. 7. 0
  libswscale 4.8.100 / 4.8.100
  libswresample 2.9.100 / 2.9.100
  libpostproc 54.7.100 / 54.7.100
Угаданная схема расположения каналов для входного потока #0.0: стерео
Введите #0, также, из 'hw:0':
  Продолжительность: нет данных, начало: 1635926018.864251, битрейт: 1411 кбит/с
    Поток #0:0: Аудио: pcm_s16le, 44100 Гц, стерео, s16, 1411 кбит/с
Вход №1, video4linux2,v4l2, из '/dev/video0':
  Продолжительность: нет данных, начало: 89255.399764, битрейт: 165888 кбит/с
    Поток #1:0: Видео: rawvideo (YUY2 / 0x32595559), yuyv422, 1920x1080, 165888 кбит/с, 5 кадров в секунду, 5 tbr, 1000k tbn, 1000k tbc
Отображение потока:
  Поток #1:0 -> #0:0 (rawvideo (собственный) -> h264 (libx264))
  Поток #0:0 -> #0:1 (pcm_s16le (собственный) -> aac (собственный))
Нажмите [q], чтобы остановить, [?] для помощи
[alsa @ 0x5585283b2c60] Буфер ALSA xrun.
[libx264 @ 0x5585283c8200] с использованием возможностей процессора: MMX2 SSE2Fast SSSE3 SSE4.2
[libx264 @ 0x5585283c8200] профиль Высокий, уровень 3.1
[libx264 @ 0x5585283c8200] 264 - core 152 r2854 e9a5903 - кодек H.264/MPEG-4 AVC - Copyleft 2003-2017 - http://www.videolan.org/x264.html - варианты: cabac=1 ref=1 deblock =1:0:0 analyse=0x3:0x113 me=hex subme=2 psy=1 psy_rd=1.00:0.00mixed_ref=0 me_range=16 chroma_me=1 решетка=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip= 1 chroma_qp_offset=0 threads=6 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp =1 keyint=10 keyint_min=1 scenecut=40 intra_refresh=0 rc_lookahead=10 rc=cbr mbtree=1 битрейт=4000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=4000 vbv_bufsize=12000 nal_hrd=none filler=0 ip_ratio=1,40 aq=1:1,00
Вывод #0, flv, на «rtmp://localhost/show/stream»:
  Метаданные:
    кодировщик: Lavf57.83.100
    Поток #0:0: Видео: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p(прогрессив), 1280x720, q=-1--1, 4000 кбит/с, 5 кадр/с, 1к тбн, 5 тбк
    Метаданные:
      кодировщик: Lavc57.107.100 libx264
    Боковые данные:
      cpb: битрейт макс/мин/средн: 4000000/0/4000000 размер буфера: 12000000 vbv_delay: -1
    Поток #0:1: Аудио: aac (LC) ([10][0][0][0] / 0x000A), 44100 Гц, стерео, fltp, 128 кбит/с
    Метаданные:
      кодировщик: Lavc57.107.100 aac
[alsa @ 0x5585283b2c60] Блокировка очереди сообщений потока; рассмотрите возможность увеличения параметра thread_queue_size (текущее значение: 8)

Так где же достоверность, а? Аппаратное обеспечение процессора слишком низкое? , мой процессор: Intel i5 Gen 2, Ram 8Gb, SSD 500GB (Futjisu lifebook S Series S710), OS ubuntu 18.4 (я только начал изучать Linux)

Я вижу из VLC захваченный аудиокодек ADTS и статика тоже есть, но звука нет, Если я правильно помню, когда я выключал HLS Server, в последнюю секунду был звук и умирал поток.

Я пытаюсь захватить информацию в VLC следующим образом: звук кодека, захваченный на VLC сбор статистики на VLC

если моя проблема в аппаратном аспекте, можно ли добавить карту NVEDIA GPU с помощью аппаратного ускорителя CUDA, можно ли это решить?

мы запускаем aplay -l и v4l2-ctl --list-device msg:

**** Список аппаратных устройств ВОСПРОИЗВЕДЕНИЯ ****
карта 0: MID [HDA Intel MID], устройство 0: ALC269 Analog [ALC269 Analog]
  Подустройства: 1/1
  Подустройство №0: подустройство №0
карта 0: MID [HDA Intel MID], устройство 3: HDMI 0 [HDMI 0]
  Подустройства: 1/1
  Подустройство №0: подустройство №0
карта 0: MID [HDA Intel MID], устройство 7: HDMI 1 [HDMI 1]
  Подустройства: 1/1
  Подустройство №0: подустройство №0

s710@sensorsip:~$ v4l2-ctl --list-device
USB-видео: USB-видео (usb-0000:00:1a.0-1.2):
        /dev/video0

USB-видео: USB-видео (usb-0000:00:1a.0-1.3):
        /dev/видео1

Веб-камера USB: веб-камера USB (usb-0000:00:1d.0-1.3):
        /dev/видео2

мы используем сейчас USB Video 0, используя команду HW: 0

Спасибо за вашу помощь..

с уважением,

Кристиан Хунг

llogan avatar
флаг jp
1) Ваш ffmpeg устарел. [Загрузить](https://johnvansickle.com/ffmpeg/) версию "git master" (не релизную версию) или [скомпилировать](https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu) новый ffmpeg .2) Вы получили предупреждающее сообщение «Блокировка очереди сообщений потока; рассмотрите возможность увеличения параметра thread_queue_size (текущее значение: 8)`. Попробуйте увеличить это значение (после обновления), например `ffmpeg -f alsa -channels 2 -sample_rate 44100 -thread_queue_size 128 -i hw:0 ...`. 128 — это произвольное число, просто для примера: вам нужно поэкспериментировать, чтобы найти то, что работает для вас. Увеличивайте до тех пор, пока предупреждающее сообщение не исчезнет.
llogan avatar
флаг jp
Кроме того, проверьте запись звука с помощью `arecord`. Тоже не работает или плохо звучит? Если да, то проблема скорее всего не в ffmpeg.
Hung Christian avatar
флаг it
Спасибо братан, завтра скачаю и попробую
Hung Christian avatar
флаг it
1. спасибо, мы можем обновить ffmpeg до версии 4,4, как обновить?, можете научить меня? 2. мы используем кодек mpeg4 кодер в файл mp4 тоже хороший звук, но используя кодек libx264 dan libx265 не можем получить звук, могу получить, но хромают может помочь мне снова?, спасибо.
llogan avatar
флаг jp
Чтобы обновить [скачать](https://johnvansickle.com/ffmpeg/) ffmpeg и вставить в `/usr/local/bin`. Или следуйте инструкциям [компиляции](https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu). Что касается libx264, вам нужно протестировать новый ffmpeg, прежде чем делать что-либо еще, а затем попробуйте поднять параметр thread_queue_size. Вы еще не тестировали arecord?
Hung Christian avatar
флаг it
@llogan, в последний день я уже обновил свою Ubuntu с 18.04 до Ubuntu 20.04.3 и установил обратно ffmpeg теперь версии 4.2.4, но я запускаю v4l2-ctl, показывающий, что моя карта захвата UBS теперь является USB-видео: USB-видео (usb-0000 :00:1a.0-1.3): /dev/video0 /dev/видео1 как я могу отличить, какой из них аудио и видео, и какую команду я должен использовать для ALSA?, спасибо за помощь
Hung Christian avatar
флаг it
@llogan, я пытаюсь вернуться к вашему предложению "ffmpeg -f alsa -channels 2 -sample_rate 44100 -i hw:0 -f video4linux2 -i /dev/video0 -c:a aac -b:a 128k -c:v libx264 - предустановка veryfast -b:v 4000k -maxrate 4000k -bufsize 12000k -g 10 -vf "scale=1280:720,format=yuv420p" -f flv rtmp://localhost/show/stream " , и теперь мы не можем запустить alsa hw:0 или hw:1, сообщение об ошибке: hw:0: протокол не найден, вы имели в виду файл:hw:0? , и я использую hw:1 , сообщение hw:1: протокол не найден, Вы имели в виду файл:hw:1 ?, что мне делать? , Спасибо за вашу помощь
Hung Christian avatar
флаг it
только что я попытался запустить с помощью команды "s710@sensorsip:~$ ffmpeg -f alsa -channels 2 -sample_rate 44100 -i /dev/video0 -f video4linux2 -i /dev/video1 -c:a aac -b:a 128k -c:v libx264 -preset veryfast -b:v 4000k -maxrate 4000k -bufsize 12000k -g 10 -vf "масштаб=1280:720,формат=yuv420p" -f flv rtmp://localhost/show/stream ", i получил сообщение об ошибке: «[alsa @ 0x56355f45dac0] не может открыть аудиоустройство /dev/video0 (нет такого файла или каталога) /dev/video0: ошибка ввода/вывода», и я попытался заменить команду «/dev/video0 на dev /video1", результат тоже такой же, пожалуйста, помогите мне, спасибо.
Hung Christian avatar
флаг it
@llogan, извините, забыл ответить на ваши вопросы в соответствии с тестом, я не пробовал, потому что до того, как я использовал кодек mpeg4, я мог получить звук, только я использую кодеки libx264 или libx265, которые не могут получить звук, и я я пробовал только потоковое аудио, это работает (на версии 18.4 ubuntu, теперь я не знаю команду, чтобы получить устройство в alsa, извините за беспокойство, еще раз спасибо за вашу помощь
Hung Christian avatar
флаг it
устройство моей звуковой карты сейчас: s710@sensorsip:~$ arecord -l **** Список аппаратных устройств CAPTURE **** карта 0: MS2109_1 [MS2109], устройство 0: USB Audio [USB Audio] Подустройства: 1/1 Подустройство №0: подустройство №0 карта 1: MS2109 [MS2109], устройство 0: USB Audio [USB Audio] Подустройства: 1/1 Подустройство №0: подустройство №0 карта 2: MID [HDA Intel MID], устройство 0: ALC269 Analog [ALC269 Analog] Подустройства: 1/1 Подустройство №0: подустройство №0
llogan avatar
флаг jp
Релизная ветка FFmpeg 4.2 устарела. Загрузите или скомпилируйте новую версию, прежде чем делать что-либо еще.
Hung Christian avatar
флаг it
уже установил 4.4.1, битрейт звука кодировщика alsa составляет 48000, но я устанавливаю 44100 с использованием hw: 0, и если я использую hw: 2, битрейт звука кодировщика составляет 44100, но до сих пор нет песни, спасибо
Hung Christian avatar
флаг it
@llogan, похоже, у меня проблема, с которой я столкнулся, моя карта захвата hw: 0 в alsamixer не обнаружена конфигурация звука, отображается только «Это звуковое устройство не имеет элементов управления воспроизведением», но обнаружена карта: MS2109, Чип: USB Mixer, View: F3 [Playback], и как только нажимаю F3, результат quit alsamixer, уже не знаю что делать, но попробую запустить из windows решение, кто знает помогите , Благодарность

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.