anonymous@RULINUX.NET~# | Last login: 2024-11-10 04:56:55 |
Регистрация Вход | Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск |
Форум - Talks | [RSS] |
Я вообще противник ретроградства и сторонник движения вперёд, но одно из популярных нововведений в линуксе обошло меня стороной. Это звуковой сервер pulseaudio, который когда-то в дебиане сломал мне звук своим появлением, и отбил желание им (пульсаудио) пользоваться на многие годы вперёд. Вот так я и живу, используя чистую ALSA, и не зная печали. Ну почти.
Решил я совсем недавно записать короткое видео о том, как я играю в одну старую игру, чтобы отослать знакомому. Сначала попробовал популярный recordMyDesktop, но видео из него вышло какое-то дёрганое и притормаживающее. Рекомендуемый многими glc не подошел, так как игра не 3д. Ну да хрен с ним, мы пойдём правильным путём, и возьмём ffmpeg с x11grab. Попробовал - всё ок, всё летает, вот только звука нет.
Для запуска использовалась примерно такая команда, она давала хороший результат при нормальном расходе памяти:
ffmpeg -f alsa -i hw:0,0 -b:a 256k -codec:a libvorbis -f x11grab -r 30 -s 640x480 -i :0.0 -vcodec libx264 -preset ultrafast -crf 0 -threads 6 /tmp/output.mkv
Жирным я выделил самое важное, о чём пойдёт речь дальше. Гнусный лицензированный x264 использовался только для проверки, потом я бы подобрал что-нибудь с богоугодным vp8, но не суть.
Ну вот, собственно, звука нет. Начинаем гуглить, и видим, что захватить звук, который играется прямо сейчас, отнюдь не так просто. В рассылке ffmpeg честно предлагают использовать sox и пускать его параллельно. Мол, проблема может быть в карте. Однако sox (и arecord) тоже отказались работать. Ну да ладно, неужто в линуксе нельзя звук выводящийся записать?
После продолжительного гугления было найдено и перепробовано много чего, аж ядерный модуль snd-aloop. Модуль сходу компилироваться не захотел, а в ядре его не было, а красноглазить было лень. Некая юзерспейсная штука под названием alsaloop, напротив, заработала отлично, но не дала перенаправить output в capture вместо микрофона, что помогло бы записать звук через ffmpeg. Предлагалось и покрутить JACK, но обилие текста в инструкции отбило желание возиться ещё и с ним. Можно было бы и в ~/.asoundrc вписать что-то, что заставляло бы записывать вообще все звуки в wav-файл, но это как-то совсем не красиво. Ещё сводить их потом. Оказывается проблема-то вполне реальная, вон какие костыли придумывают.
В конце-концов было найдено какое-то решение. На второй моей звуковой карте оказалось возможным использовать некий stereo mixer как один из двух input source. Эта штука подавала выводящийся звук на вход в capture как-то аппаратно, как микрофон. Дальнейшие попытки домучать эту сволочь таки привели к результатам - получилась комбинация -f alsa -i plughw:1,0,1, которая таки давала на запись звук, который выводится (правда не через ту карту, ну да ладно). Но радость была недолгой - появились какие-то посторонние шумы и неприятный треск. Впрочем, от HDA audio я другого и не ждал. Однако дело сделано, и задачу можно было посчитать решенной.
Затем я решил обратиться к пульсаудио, который фигурирует в большинстве примеров с x11grab. Он, в отличии от прямой работы с ALSA, обещает раскидывать звуковые потоки на ходу как угодно, не заморачиваясь с вопросами "что умеет моя звуковая карта?". И сработало же. Ставим пульс, делаем -f alsa -i pulse, в pavucontrol тыкаем в нужную кнопочку на тему записи - звук в видео появляется. И без какого-либо потустороннего треска и прочей гадости.
Пульс, правда, я потом снёс, так как у меня тут пара скриптов на чистую ALSA завязано, и скринкасты я снимать больше не планирую, однако же. Поставлю я, когда-нибудь, этот пульс, когда время свободное появится в нём разобраться.
Таки есть толк от этого вашего Поттеринга, и говорить о том, что "оно не было сломано" по отношению к старому юниксо-линуксовому хламу не стоит. Ещё как было.
SystemV(*) (2013-03-09 23:05:22)
Emacs-w3m/1.4.513 w3m/0.5.3
|
|
|
Скрыть
Re:Pulseaudio и ретроградствоТы это говоришь так, будто голая альза претендует на что-то хорошее. Сделано через жопу изначально, поэтому и костыли некоторые прикручивают в виде пульсаудио, лол. Silvy(*)(2013-03-09 23:36:33)
Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0 |
Скрыть
Re:Pulseaudio и ретроградство>Тебя сегодня прорвало на длиные посты.
|
Скрыть
Re:Pulseaudio и ретроградство>Ты это говоришь так, будто голая альза претендует на что-то хорошее. Сделано через жопу изначально
|
Скрыть
Re:Pulseaudio и ретроградство>Ну противники пульса это утверждали, между прочим. А вообще да, именно что через жопу.
Silvy(*)(2013-03-10 00:20:53)
Отредактировано Silvy по причине Я объявляю свою жопу безъядерной зоной! Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0 |
Скрыть
Re:Pulseaudio и ретроградствоАльса - это не юникс. Юникс - это OSS. |
Скрыть
Re:Pulseaudio и ретроградствоТы рассуждаешь как человек предпочитающий консоль и работающий на десктопе. |
anonymous(*)(2013-03-10 12:14:26)
Mozilla/5.0 (X11; FreeBSD amd64; rv:18.0) Gecko/20100101 Firefox/18.0 |
Скрыть
Re:Pulseaudio и ретроградство>ЛОЛШТО?
Silvy(*)(2013-03-10 12:39:49)
Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0 |
Скрыть
Re:Pulseaudio и ретроградство>ffmpeg -f alsa -i hw:0,0 -b:a 256k -codec:a libvorbis -f x11grab -r 30 -s 640x480 -i :0.0 -vcodec libx264 -preset ultrafast -crf 0 -threads 6 /tmp/output.mkv
|
Скрыть
Re:Pulseaudio и ретроградство>у меня итоговый файл не проигрывается, почему?
|
Скрыть
Re:Pulseaudio и ретроградство>Таки единственный нормальный аудио сервер - это jack.
|
Скрыть
Re:Pulseaudio и ретроградствоТолько вот огорчает то, что каждому юзеру надо иметь свой пьльс сервер, а один общий (звуковуха-то общая) иметь поттеринг не велит. Поэтому, например звуковые предупреждения какие-нибудь из крон-скриптов или по другим системным событиям из под юзера не являющегося текущим залогиненным в Хы - ещё попробуй сделать :( |
Скрыть
Re:Pulseaudio и ретроградство>Только вот огорчает то, что каждому юзеру надо иметь свой пьльс сервер, а один общий (звуковуха-то общая) иметь поттеринг не велит.
|
Скрыть
Re:Pulseaudio и ретроградство> Вроде пишут, что если очень хочется - то можно.
|
Скрыть
Re:Pulseaudio и ретроградство>Ну да, но как-то они при этом очень настойчиво намекают что лучше этого не делать.
|
Скрыть
Re:Pulseaudio и ретроградствоКстати, в процессе неторопливого осмотра гугла, наткнулся на вот такую штуку: RoarAudio. RoarAudio is a modern, multi OS sound system. Its main purpose is to connect software (like media players) and devices (like soundcards) as a mid-layer adding features you expect from a modern sound system like software mixing and full network transparency. Есть и некая сравнительная таблица с пульсом и прочими: http://roaraudio.keep-cool.org/comp.html |
Silvy(*)(2013-03-10 17:36:32)
Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0 |
Скрыть
Re:Pulseaudio и ретроградствоНельзя разделять линупс на десктоп и сервер. Ну хотя бы возьми мультисит-конфигурацию. Вполне себе реалистичное применение - и для дома лучше одну мощную машину за которой кто-то играет в игрушки, кто-то музыку слушает или интернеты читает, кто-то базу данных в виртуалочке отлаживает.
|
Скрыть
Re:Pulseaudio и ретроградство>Нельзя разделять линупс на десктоп и сервер.
|
Скрыть
Re:Pulseaudio и ретроградство> за каждым рабместом закреплён хаб и всё что туда воткнуто (мышко, клавитуро, whatever else) автоматически принадлежит соответствующей сессии.
|
Скрыть
Re:Pulseaudio и ретроградствоСпроси у авторов вот этого документа: Note that USB hubs can be assigned to a seat as well, in which case all (current and future) devices plugged into it will also be assigned to the same seat (unless they are explicitly assigned to another seat). |
Скрыть
Re:Pulseaudio и ретроградство>OSS was created by Hannu Savolainen and is distributed under four license options, three of which are free software licences, thus making OSS free software.
|
Скрыть
Re:Pulseaudio и ретроградствоТак было не всегда. Они открылись только в июне 2007го года, когда даже им уже стало очевидно, что их поезд уже ушёл. В ведре 2.4 ещё были их проприетарные блобы, с ними приходилось мириться, в 2.6 их выкинули нахрен и заменили на алсу и теперь потребуется очень серьёзная мотивация чтобы менять всё обратно, потому что у разработчиков ведра пока и так есть чем заняться кроме выпиливания-впиливания OSS'а. |
Скрыть
Re:Pulseaudio и ретроградствоЯ знаю, да, но API у альсы — кака(да ещё и она странная, что нужно заводить всякие пульсы, угу) (т.е у OSS он лучше) |
|
|
|
Этот тред читают 2 пользователя: |
Анонимных: 2 Зарегистрированных: 0 |
Re:Pulseaudio и ретроградство
Тебя сегодня прорвало на длиные посты.
Для меня пульсаудио оказался самым удобным, напрягает только не работающий старый софт, зато очень юзер френдли и скромные потребности относительно jack.
Что харакетеро ты jack не рпименил, а так ео пиаррил :)
Mozilla/5.0 (X11; Linux x86_64; rv:19.0) Gecko/20100101 Firefox/19.0