при записи микрофона через kdenlive - запись (сам wav файл) получается битый - из него вырезаны фрагменты того что происходило на самом деле. Например, если я запишу аудио на дорожке в kdenlive и скажу там "раз два три", то в результате в аудио будет слышно "ра три" (пропало "два" и часть "раз"). Это может происходить по разному, но суть одна и та же - если я записываю звук 2 секунды, то запись будет урезана чуть больше чем в 2 раза (примерно 0,8 секунд), причём не с конца обрезана, а прямо из разных мест записи будут вырезаны фрагменты и из-за этого запись будет совсем не пригодной Подробнее я приложил во вложении - там видеоролик с проблемой (извиняюсь за эхо, я забыл надеть наушники, так что обратите внимание именно на проблему а не это)
к сожаление вложение весит 8 мб, не влезло в багзиллу, поэтому отправляю ссылку на видео в облаке https://disk.yandex.ru/d/qBmNGiBikSBRSA
Здравствуйте Спасибо за подробное описание. Стенд (p11): ALT K Workstation 11.4 x86-64 Пакеты: libqt6-multimedia 6.11.2 kdenlive-26.04.3-alt1.x86_64 pipewire-1.4.7-alt1.x86_64 wireplumber-0.5.13-alt1.x86_64 Дополнительная диагностика: 1. Audacity работает корректно с тем же микрофоном. Это доказывает, что проблема не в оборудовании и не в PipeWire. 2. Причина: в функции RecordingEngine::stopAndDeleteThreads() (qffmpegrecordingengine.cpp:296) энкодеры и муксер уничтожаются через clear()/reset() без вызова cleanup(). Очереди m_audioBufferQueue и m_packetQueue теряются, av_write_trailer() закрывает файл без последних данных. 3. Логи Qt подтверждают конвертацию: микрофон отдаёт s32, kdenlive просит s16, создаётся ресемплер [ s32 ] -> [ s16 ]. Это вызывает джиттер планировщика PipeWire (WAIT 100+ мкс) и переполнение очереди. Этот баг upstream: https://bugs.kde.org/show_bug.cgi?id=510457. Проблема воспроизводится на версиях Qt (6.9.2, 6.11.2), что подтверждает: это не специфика ALT Linux, а upstream-баг Qt Multimedia. Проверка на Sisyphus: ошибка не воспроизводится. В Sisyphus стоят pipewire-1.6.11 и wireplumber-0.5.14. В логах Qt: Resampler is not needed due to no-conversion format [ s16 ]. Новый PipeWire отдаёт s16 напрямую, ресемплер не нужен.
Created attachment 22857 [details] стек потока во время записи Во время записи в стеке присутствуют потоки AudioEncoder и Muxer (TID 373318–373324), которые находятся в QWaitCondition::wait и удерживают блокировки (стек содержит вызовы из libQt6Multimedia.so).
Created attachment 22858 [details] стек после нажатия "стоп" После нажатия «Стоп» эти же потоки потеряли вызовы из libQt6Multimedia.so — объекты, к которым они обращались, уничтожены функцией RecordingEngine::stopAndDeleteThreads() (вызовы clear()/reset() без cleanup()). Потоки акстивировались, но данные уже потеряны.
https://packages.altlinux.org/ru/tasks/439856/