LINUX.ORG.RU

Сообщения gobot

 

Микрофон в Android как читать его с нескольких потоков

Форум — Development

https://developer.android.com/reference/android/media/AudioRecord

Хочу немного, читать микрофон AudioRecord.read и визуализировать его в виде Wave. Один поток читает и записывает в сеть или на диск другой...тоже его читает и... приложение вылетает. Не понятно из-за чего, каких внятных ошибок нет в логах, какие андроивские потроха сыпятся на уровне ядра.

Там сам вызов блокирующий, но есть параметр readMode=READ_BLOCKING, READ_NON_BLOCKING. Один тред читает с блокировкой - другой - пробовал и так и сяк, все равно вылетает. Если читает один только тред, то работает нормально

В общем нормально ли я вообще затеял это все или нужно один читальщик? Но дело в том, что буферы разные, для визуализации нужно побольше прочитать, а для записи там буфер мелкий совсем.


Один тред создается через new Thread, а второй - это тред UI. Но я пробовал в треде UI создавать новый тред, но все равно что-то не идет.

Вообще конечно по логике если разобраться, то так нельзя. Звук же будет прерываться, если например кусочек прочитаешь, то в файле уже этого кусочка не будет, будет пердеть, заикаться. Хотя нет. Многие приложения ведь используют один микрофон. Или нет?

Не знаю как быть, подскажите вообще не понимаю

 

gobot
()

Переход по путям и вот

Форум — Development

Хочу собрать libx264 под Android с NDK-29

Делаю вот
https://stackoverflow.com/questions/61056127/when-i-build-x264-with-android-n...

Там в папочке $TOOLCHAIN/bin/aarch64-linux-android21-clang
лежит вот что

aarch64-linux-android21-clang

#!/usr/bin/env bash
bin_dir=`dirname "$0"`
if [ "$1" != "-cc1" ]; then
    "$bin_dir/clang" --target=aarch64-linux-android21 "$@"
else
    # Target is already an argument.
    "$bin_dir/clang" "$@"
fi


Потом переходит по clang, а там вот
cat clang
clang-21


Ну и собственно clang-21 это бинарь 145095072 байта

А потом пишет в конце что

clang-21: error: no input files


Я так понимаю, что до clang-21 не доходят параметры

/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang x264.c


clang-21: error: no input files


Если запустить напрямую
/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/clang-21 x264.c

То нормально видит файл и начинает его компилить

Какая-то непонятная связка и переходы по скриптам. Ничего не пойду что намудрили разработчики Android


РЕШЕНО

Там были symlink, но архив разжимался на Windows, поэтому ссылки исчезли

РЕШЕНИЕ
Нужно скачать заново Android-NDK и распаковать ZIP архив на linux

 , ,

gobot
()

Есть ли такая настройка у nginx

Форум — Admin

Есть проксирование. Хочу чтобы, если от прокси в течении 1 сек. не поступили заголовки ответа (любые), то соединение рвалось со статусом 404. Есть proxy_read_timeout но это не совсем то, в середине передачи например может быть задержка 5с. и это нормально, а для заголовков нужно меньший таймаут. Или может какой-то workarround есть?

Дело в том, что прокси может никогда не ответить (если нет издателя (нет данных для ответа) он оформит подписку и клиент будет ждать вечно, от этого спасает proxy_read_timeout в 30 сек.), если они появились он шлет в ответ данные с заголовками.

Но если данных нет в самом начале он и заголовки не шлет. Этот момент нужно ловить и не заставлять клиента ждать бесконечно.

 

gobot
()

Отваливается UDP

Форум — Admin

Передаю по ffmpeg поток по UDP на другой сервер, возникает постоянно ошибка «Failed to write packet=1194B, ret=-11p»

Пробовал на другом сервере запускать, там стабильно идет часами без ошибок. Прову писал, отнекивается. В логах пусто.

Какие могут быть потенциальные причины?

Ошибка вызывается тут ffurl_write()
https://github.com/FFmpeg/FFmpeg/blob/ed007ad427a659667fd3b20e6b7bfebc2844c83...

Как я понимаю это не ошибка конкретного муксера, а глобальная функция отправки в сеть.

Пробовал всякие буферы увеличивать - ничего не дает, тем более если бы было переполнение вылазила бы ошибка дополнительная, а тут ничего

U> Такое происходит если передавать ОТ сервера и К этому серверу. То есть входящий\исходящий трафик без разницы

 

gobot
()

nping генерация пакетов > 1000pps

Форум — Admin

Хочу потестить сервис на UDP, хочу отправлять 20000 пакетов в сек. Ни меньше ни больше. Меньше 1000 можно, но если устанавливать --delay 0.5 то nmap убирает задержку вовсе и использует всю пропускную способность сети, что делает тест не корректным. Погуглил, посмотрел код nmap и пришел к выводу, что меньше 1ms задержку не поставить.

https://github.com/nmap/nmap/issues/1751

https://security.stackexchange.com/questions/136313/maximum-limit-of-nping-ra...

Какой-то странный инструмент, с одной стороны создавался для тестирования, но и тестировать нельзя. Что посоветуете, чем ещё можно тестить? Порбовал trafgen, но там какие-то сложные конфиги надо писать, оч. не удобный

Вобщем мне нужно как-то напрячь udp порт и посмотреть как ведет себя сервис

 nping

gobot
()

Как заставить ffmpeg менять выходное разрешение у картинок

Форум — Development

Если входное разрешение изменится, то ffmpeg продолжит писать картинки с исходным размером

ffmpeg -i "rtmp://example.com/live/stream" -f image2 -update 1 C:\tmp\stream.jpg


Сам он видит, что разрешение меняется, пишет

Reconfiguring filter graph because video parameters changed to yuv420p(unknown, unknown), 640x480

Reconfiguring filter graph because video parameters changed to yuv420p(unknown, unknown), 320x240

Reconfiguring filter graph because video parameters changed to yuv420p(unknown, unknown), 1280x960

но на выходе размер картинок остается первоначальным...


  Metadata:
    |RtmpSampleAccess: true
  Duration: N/A, start: 631336.102000, bitrate: N/A
  Stream #0:0: Video: h264 (Constrained Baseline), yuv420p(progressive), 320x240, 15 fps, 15 tbr, 1k tbn, start 631336.125000
  Stream #0:1: Audio: aac (LC), 48000 Hz, stereo, fltp, start 631336.102000
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native))
Press [q] to stop, [?] for help
Output #0, image2, to 'C:\tmp\stream.jpg':
  Metadata:
    |RtmpSampleAccess: true
    encoder         : Lavf62.3.100
  Stream #0:0: Video: mjpeg, yuv420p(pc, progressive), 320x240, q=2-31, 200 kb/s, 1 fps, 1 tbn
    Metadata:
      encoder         : Lavc62.11.100 mjpeg
    Side data:
      cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A

 

gobot
()

Каждую неделю все перезагружается

Форум — Admin

Как я понял это apt-daily-upgrade.service балуется, зараза. Какие то секурные обновления там или что... Все бы ничего, но у меня некоторые сервисы вообще нежелательно перезагружать. Стоит ли его отключить или как то ограничить в его желании все ПЕРЕЗАГРУЖАТЬ? Кто как это чудо настраивает? Раньше просто такого не было на старых версиях убунты, а сейчас что-то пошло не так...

Ubuntu 24.04.3 LTS

 

gobot
()

Откуда ошибки на eth0

Форум — Admin

При возрастании трафика (> 200mbps) на интерфейсе растут ошибки. Что не так? надо сказать, что машина довольна слабая... Raspberry Pi (4 core), но все же, стоит 1GPBS в ней, значит должна теоретически такой трафик проглатывать?

RX packets 793084540  bytes 512344690042 (512.3 GB)
RX errors 117445  dropped 117445  overruns 0  frame 1
TX packets 1256437452  bytes 1675880930706 (1.6 TB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

gobot
()

Где хранит сертификаты Angie

Форум — Admin

Где Angie хранит загруженные по amce сертификаты? Хочу сохранить один никак не пойду где она лежат

acme main;
ssl_certificate $acme_cert_main;
ssl_certificate_key $acme_cert_key_main;


Спасибо всем, нашел

/var/lib/angie/acme

 ,

gobot
()

Как поделить файл между процессами

Форум — Admin

1 процесс периодически создает файл, другой процесс его хочет скопировать и удалить. Иногда возникает ошибка доступа, если в один момент копирует, а тот пытается создать. Как быть?

 

gobot
()

Что делать со свопом?

Форум — Admin

Скажи, а что нужно делать со swap памятью если она 100%? Я так и не понял

 

gobot
()

Почему ffmpeg запускают везде с 1 тредом?

Форум — Admin

Во многих примерах в гугле ffmpeg запускают с ключом -threads 1. Почему? Я только что проверил с -threads 12 он кодирует намного быстрее, точно не засекал но секунды на глаз бегут в раза 3 быстрее

 ,

gobot
()

Убить дочерний процесс bash

Форум — Admin

Запускается app -> bash -> ffmpeg

app убивает (SIGKILL) bash, а ffmpeg живет спокойненько
Через trap в баше SIGKILL не ловится. Как быть?

Код примерно такой

cleanup() {
   kill -9 "$FFMPEG_PID"
}


trap cleanup EXIT SIGINT SIGTERM SIGHUP TERM INT

fmpeg &
FFMPEG_PID=$!
wait


В самом ffmpeg можно конечно тайм-аут сделать, но как то это не кошерно... Охота сразу его пришибать

 ,

gobot
()

Bash: парсинг параметров

Форум — Development

Неужели за долгие долгие долгие... ГОДА. В баше так и не сделали нормальный парсинг аргументов из КОРОБКИ? Неужели нужно вечно страдать, втыкать в каждый файлик лапшу из ИИ гугла одну и ту же?

while [[ "$#" -gt 0 ]]; do
    case "$1" in
        -o|--output)
            output_file="$2"
            shift # Consume the argument's value
            ;;
        -v|--verbose)
            verbose=true
            ;;
        -i|--input)
            input_value="$2"
            shift # Consume the argument's value
            ;;
        *)
            echo "Unknown parameter: $1"
            exit 1
            ;;
    esac
    shift # Consume the current argument (flag or unknown)
done


с этими корявыми закорючками, которые никогда не запомнишь?

Вот это вообще что такое?

while [[ "$#" -gt 0 ]]; do


Я до сих пор не могу это понять интуитивно. Кто это вообще придумывал такой синтаксис? Что он ел? Что пил?

;;

Зачем делать 2 точки с запятой?

 ,

gobot
()

Выкинул nginx, перешел на Angie

Форум — Admin

Выкинул nginx со всех серверов, установил Angie (форк nginx)
Теперь нет возни с сертификатами, оч. удобно

Из минусов: нет в ubuntu пакетов. Почему?

Кстати, почему нет тега angie (хм, добавился, но в выпадающем списке не было)?

 ,

gobot
()

Как заставить ffmpeg искать дорожку принудительно

Форум — Development

Если ffmpeg не нашел audio дорожку из INPUT, не начинать кодирование и продолжать\анализировать входной поток. Заголовок FLV сначала cодержит только video, потом прилетает новый заголовок где есть audio, но ffmpeg начинает кодировать сразу же ТОЛЬКО видео. Как быть?

Input #0, flv, from 'rtmp://127.0.0.1:1935/live/stream':
  Metadata:
    |RtmpSampleAccess: true
  Duration: N/A, start: 2816209.627000, bitrate: N/A
  Stream #0:0: Data: none
  Stream #0:1: Video: h264 (Constrained Baseline), yuv420p(progressive), 320x240, 7.50 fps, 7.50 tbr, 1k tbn, start 2816209.627000


Спустя некоторое время цепляется AUDIO
  Stream #0:0: Video: h264 ([7][0][0][0] / 0x0007), yuv420p(tv, bt709, progressive), 360x202 [SAR 404:405 DAR 16:9], q=2-31, 128 kb/s, 20 fps, 1k tbn
    Metadata:
      encoder         : Lavc62.15.100 libx264
    Side data:
      CPB properties: bitrate max/min/avg: 0/0/128000 buffer size: 0 vbv_delay: N/A
  Stream #0:1: Audio: aac (LC) ([10][0][0][0] / 0x000A), 44100 Hz, stereo, fltp, 48 kb/s
    Metadata:
      encoder         : Lavc62.15.100 aac


Если ко выходу добавить

-map a:0 -map v:0

то если нет аудио, ffmpeg завершается с ошибкой, повторный запуск ffmpegс этими параметрами (когда в стриме уже есть audio) — идет нормальная кодировка. Как бы заставить его ждать пока придет аудио, а не завершать работу?

 , ,

gobot
()

Как сменить драйвер по ssh

Форум — Admin

Начал виснуть сервер, точнее сеть. Второй раз при пиковой сетевой нагрузке посыпались сообщения от драйвера r8169. Провайдер посоветовал сменить драйвер на r8168

Там вроде все просто описано, компилируешь (./autorun.sh), потом проверяешь lsmod | grep r8168.

Нужно ли для этого выключать интерфейс? Там написано что после установки драйвера выполните ifconfig ethX up. Значит до установки нужно выключать сеть? И как старый драйвер выгрузить (и нужно ли?), он же в ядре, что для этого нужно?

 ,

gobot
()

Сервер грохнулся

Форум — Admin

Сервер завис. Не отвечал никак и ни на что. После перезагрузки очухался. В логах ничего. Просто глухо с момента X.

После истечения некоторого времени снова был затык, один процесс завис наглухо

В логах

journalctl -k -S -50m

r8169 0000:01:00.0 eth0: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 5128 ms
r8169 0000:01:00.0 eth0: rtl_txcfg_empty_cond == 0 (loop: 42, delay: 100)
r8169 0000:01:00.0: can't disable ASPM; OS doesn't have ASPM control
r8169 0000:01:00.0 eth0: rtl_rxtx_empty_cond == 0 (loop: 42, delay: 100).


И ещё в момент делал strace процесса
strace -p pid
epoll_wait(3, [], 4096, 173)            = 0
epoll_wait(3, [], 4096, 1)              = 0
epoll_wait(3, [], 4096, 1000)           = 0
epoll_wait(3, [], 4096, 1000)           = 0
epoll_wait(3, [], 4096, 1000)           = 0
///
Больше ничего от него не было


Какие диагнозы?

 

gobot
()

Как собрать проект в Windows, но с Linux окружением

Форум — Development

Есть CLion, хочу собрать проект

В проекте есть CMakeLists.txt для CLion, но в этом файле содержатся команды специфичные для linux, например

execute_process(
        COMMAND bash -c "cd ${PROJECT_SOURCE_DIR}/../../ && pwd"
        OUTPUT_VARIABLE DIR
)


как быть?

 , ,

gobot
()

ffmpeg завис

Форум — Admin

FFmpeg завис и не отвечает на kill SIGTERM (убиваю через node)

Вот что он делает

strace: Process 3808110 attached
futex(0x79922ce03990, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, 3808948, NULL, FUTEX_BITSET_MATCH_ANY



Может кто-нибудь подскажет что он ждет и почему не реагирует?

 

gobot
()

RSS подписка на новые темы