Két hang kimenet hogyan?

Fórumok

Sziasztok!

Van egy Qt (5.x) programom, ami a vlc-qt segítségével játszik le videókat. A felhasználó ugyan azzal a géppel zenét is le akar játszani, automatikusan kezelőfelület nélkül.

Ez eddig úgy ment Windows-on, hogy a programom használta az alapértelmezett audio kimenetet (HDMI), a VLC pedig úgy lett beállítva, hogy csak a tálcán jelenik meg, lejátssza egy könyvtár tartalmát, és egy másik audio kimenet van a VLC-ben beállítva.

Az egész bukott a VLC 3.0 megjelenésével, mivel ahhoz nincs SDK, így a programom nem fordítható le. Sebaj a program megy Linux-on is, ott ilyen probléma nincs. Van helyette más:

Ubuntu 20.04-en próbálkozom, és nem tudom beállítani, hogy a VLC és a programom különböző audio kimenetet használjon. Találtam egy leírást: https://linuxconfig.org/how-to-enable-multiple-simultaneous-audio-outpu… . Ezzel csak az a baj, hogy amikor a paprefs-ben elvégzem a beállítást, akkor fel kellene ugrania egy másik beállító ablaknak, ami nem ugrik fel, és itt el is akadtunk.

A VLC-ben ahol a Windows esetén be lehet állítani az audio kimenetet, ott a Linux-nál ilyet nem lehet állítani. Máshol ugyan a VLC-ben be tudom állítani az audio kimenetet, csakhogy úgy tűnik akkor az a programom kimenetét is átirányítja. Az Ubuntu audio beállításoknál látszik a két lejátszó, a nevük azonos, és állítható a hangerejük, de hogy melyik audio kimenetre menjenek arra nem látok lehetőséget.

Régebben próbálkoztam a programomban is az audio kimenet kiválasztásával, de sajnos a Qt minta példa sem volt működőképes, így azt feladtam.

Valami ötlet?

Hozzászólások

Két külön hangkártya esetleg?

"Nem akkor van baj amikor nincs baj, hanem amikor van!"
Népi bölcsesség

Nem értem mit nem értesz. A lejátszott videók a HDMI-n jelennek meg kép és a hang is. Ez eddig működik is, de az ettől független zene lejátszás hangja is ugyan ott jelenik meg. Tehát vagy a hang vezérlő kimeneten van mindkét hang összekeverve, vagy a HDMI-n. De nem egyszerre akarnak zenét hallgatni, és videót nézni, hanem egyik helyen ezt, a másikon meg azt. Mint említettem, Windows-on ez működik, és igen a videó kártya lényegében tartalmaz egy független, butított "hangkártyát".

Tehát ugyanazt a hangkimenetet akarod beállítani mindkét lejátszóba és ez nem sikerül valami miatt? A "hang vezérlő kimenet" az egy hangkártya kimenet? A hdmi hangkimenetetől független kimenet?

"Nem akkor van baj amikor nincs baj, hanem amikor van!"
Népi bölcsesség

A videó lejátszónak nem lehet parancsorból megadni, hogy milyen hangeszközt használjon? Tehát általában van egy alapbeállítás, hogy mi rendszer hangkimenete. És az ettől eltérőt külön beállítod parancssori opcióval amikor indítod.  A VLC-nek v. mi ez, megadod a videokártyán lévő hangeszközt, a zenének meg marad az alapbeállítás. 

"antiegalitarian, antiliberal, antidemocratic, and antipopular"

(Ha van rá mód, írhatnál arról, ez az ember mit/mire/hogyan használ.)

:)

Szerintem csak szórakozol, de legyünk jóhiszeműek!

Adva van egy számítógép. Erre rákötve HDMI-n több TV. Továbbá egy hang rendszer, amin hangszórók lógnak, melyek más helyiségekben vannak, mint a TV-k. Eddig világos?
A TV-ken megadott program szerint videók mennek. Ezt egy Qt-ban megírt program csinálja. Feladata a videók ütemezése, és a műsor összeállítása, távvezérlés, feliratok elhelyezése, stb.. A Qt program a videók lejátszását a Qt-vlc modulon keresztül hajtja végre.

A hangszórókon zenét akarnak lejátszani. Itt csak egy könyvtárból kell lejátszani zeneszámokat. A zenelejátszása (eddig) a VLC program elindításával történt.

Tehát Linux-on (Ubuntu 20.04), adva van egy program, ami teszi a dolgát és tolja a videókat a HDMI-re. Kéne egy ettől független zenelejátszó, ami tud zenét lejátszani a hang kimeneten (a 3.5 jack  kimeneten és nem a HDMI hang kimenetén). Ez a független(ül működő) zenelejátszó a VLC volt Windows-on. Linuxon viszont vagy nem tudom hogyan, és mit kell ehhez beállítani. Vagy ha ez VLC-vel mint zenelejátszóval nem ez megy, akkor mit kellene helyette használni, és hogyan?

A Windows kieset, mint használható oprendszer, mert ahhoz, hogy egy Qt-VLC-t használó programot le tudjunk fordítani kell a Qt-VLC bináris. Mivel csak forrás van a Qt-VLC-t is le kell fordítani, de ehhez meg kell a VLC SDK, ami Windows-on nincs, csak ha lefordítjuk forrásból a VLC-t. Na a VLC-t fordítsa le az akinek hat anyja van.

Elnézést, de ennél érthetőbben nem tudom leírni.

A pulseaudio elvileg tudja, nem? Ha 3 videot jatszik a firefox, azt tudom 3 kulonbozo kimenetre kuldeni.

Ha a kulonbozo app peldanyok kimenetet beallitod, akkor mashova megy a hang.

Persze, valoszinuleg, uj peldanyok inditasa a orokli majd a legutoljara beallitottat. Kicsit maceras, de kezivezerlessel mukodhet...

Sajnos a saját programom kimenetét nem tudom állítani. Mivel a Qt-ben az ezt demonstráló példaprogram nem működik (nem lát egy kimenetet sem, és abból lehet választani). Ezenfelül, mivel nem a Qt könyvtárat használom lejátszásra, hanem lényegében a VLC-t nem biztos, hogy hatásos lenne a beállítás.

A Windows-ban a programom mindig az alapértelmezett kimenetet használta. Linux-on pedig (eddig úgy tűnik) azt amit a VLC-ben beállítok.

Nem voltam egyertelmu (es lusta voltam javitani). A pulseaudio mixerevel (pl. pavucontrol) be tudod allitani, hogy az egyes forrasok merre menjenek. Kisebb konfig zsonglorkodessel tobb kimenetre is tudsz kuldeni egy forrast, ha netan ezt szeretned.

Nem tokeletes amugy.

Ha ugyanazon programbol tobb peldany fut, vagy mint a firefox, tobb forraskent latszik, akkor lehetnek gondok. Pl. a firefox idegesito szokasa, hogy egy video stop/pause elobb-utobb lezarja a forrast, ezert kesobb uj forraskent jelenik meg, amelyet ujra at kell iranyitani a megfelelo kimenet (nyelo) fele.

Majd, ha kesz lesz. De addigra a pulse is jo lesz talan, en meg tuti nyugdijas leszek :)

Most itt allt ket orat a ff, nem zarta le a forrasokat. Mentek resume utan ujra oda jutott a hang, ahova eredetileg beallitottam. Viszont, ha uj videot kezdek (pl next gomb a youtube-n), akkor valami alapjan keres maganak egy kimenetet. Gondolom az utoljara hasznaltat/beallitottat, es nem koveti a tab-ra szabott beallitast. Mondjuk honnan is tudna a pulse, hiszen neki a ff a forras program, nem a tab, csak epp az adott applikacionak tobbe audio streamje van. Ha uj stream indul az adott appbol, akkor valahogy valasztania kell. Tobb ff peldannyal meg nem probaltam...

Pulseaudio +1 pavucontrollal lehet állítani mit hova küld az ember bemenet/szoftver/kimenet kombinációkban. Nekem más felállással de tökéletesen megy (pl hdmi-n kimegy a videó kép és a hang, a hangkártyán meg a videokonferencia hangja khm...).

Csaba

Szerkesztve: 2021. 05. 28., p – 20:53

Ezt mindenféle bűvészkedés nélkül tudja a pulseaudio is és a pipewire is. Szerintem lehetőleg pipewire-t használj. Van egy pasystray nevű alkalmazás, amelyet lehet dokkolni a system tray-re, valamint ebből - bár ettől függetlenül is akár - lehet indítani a pavucontrol nevű alkalmazást. Ez utóbbival akár lejátszás közben meg tudod csinálni, hogy egy adott audio stream-et átdobj másik kimenetre.

Ha pipewire-t használsz, akkor a Carla nevű alkalmazással a patchbay fülön illetve a Canvas menüben Show external bepipálása mellett lehet grafikusan kábelezni szintén valós időben, lejátszás közben, mi hova menjen. Itt olyan beteg dolgokat is lehet csinálni, hogy az adott alkalmazás bal csatornája menjen a notebook jobb hangszórójába, a jobb csatornája meg mondjuk bluetooth-on menjen ki monoban mindkét hangszóróra. Értelme ennek már nem sok van, de meg tudod vele csinálni. :)

Én egyébként rendszeresen csinálom, hogy bluetooth-on a micro hifi felé audacious zenét játszik le, miközben firefox yuoutube-on valami szöveges anyagot a notebook saját hangszóróján játszik le.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Ez a projekt kicsit felfüggesztődött, csak most sikerült vele foglalkoznom.

Olyan megoldás kellet, ami automatikus, beállítom, az user csak bekapcsolja a gépet, és az működik (a júzer ennyire képes).

Alapvetően az a baj, hogy a rendszer nem tudja megkülönböztetni (vagy legalábbis láthatóan nem) a programomat, meg a VLC-t, mivel mindkettő a VLC könyvtáron keresztül játszik le.

A megoldás: A zene lejátszás nem VLC hanem a MOC, a hangja megy a beállítások szerinti alapértelmezett kimenetre, ami a hangkártya kimenete. A videókat lejátszó program hang kimenetét pedig be lehet állítani a VLC-ben, ami így a HDMI lehet.

Szerintem olyat nem is lehet, hogy a rendszer tudja megkülönböztetni. Ezt mindenképp az egyes progikban kéne bekonfigolni, hogy automatikusan x vagy y nevű kimenetet használjon. pulseaudio biztosan tud két kimenetet egyszerre, de a részleteit illetően passz, nem használtam még soha. Én arra gyanakszok, hogy semmilyen program nem kell ehhez, egyik programban beállítod az egyik, a másikban a másik kimenetet és egyszerre kéne szóljon. Persze lehet tévedek, de szerintem csak túlbonyolítod.

A computer is like air conditioning – it becomes useless when you open Windows.” (Linus Torvalds)

Név alapján azonosítja, s alkalmazásonként megjegyzi a hangerőt, route-ot, valahogy így:

 "restore.stream.Output/Audio.application.name:ALSA plug-in [seren]": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }
 "restore.stream.Output/Audio.application.name:Firefox": { "volume": 1.000000, "mute": false, "volumes": [ 0.000000, 0.000000 ], "channels": [ "FL", "FR" ] }

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

A két program (amit én írtam és a VLC) azonos néven jelenik meg az audió beállításokban. És itt nem lehet megadni a kimenetet, a két programra, csak együtt. A saját programomban nem lehet megválasztani a kimenetet, az mindig a default. A VLC-ben meg lehet választani a kimenetet, de az az én programomra is érvényes lesz, mivel ugyan azt a lib-et használják.

Azt, még senki sem írta le, hogy mivel, hogyan kell két programra beállítani különböző kimenetet, mindenki csak hivatkozik rá, mint triviális dologra. A Google csak egy releváns(nak tűnő) találatot adott, ami nem működik, és persze ott is megemlítik, hogy ez baromira egyszerű :/ .

A MOC-ot még ki kell ismerni, ha tudom rendesen vezérelni, akkor jó lesz.

Azt, még senki sem írta le, hogy mivel, hogyan kell két programra beállítani különböző kimenetet, mindenki csak hivatkozik rá, mint triviális dologra. A Google csak egy releváns(nak tűnő) találatot adott, ami nem működik, és persze ott is megemlítik, hogy ez baromira egyszerű :/ .

Ha be van konfigolva több kimeneti csatorna, akkor a pavucontrol Playback tabján minden egyes hangforrásra egy legördülő menüből kiválaszthatod a kimeneti csatornát. Pl per pillanat a Google Chrome böngészőmben két YT videót játszok két tabon, és simán kiküldöm az egyiket a hangkártyára kötött hangfalra, a másikat a monitorra HDMI-n keresztül. Kb, mint itt.

Csaba

Amit írtál programot, a simple API-t használja? Mert ezt írja az újság:

It can only support a single stream per connection and has no support for handling of complex features like events, channel mappings and volume control.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

nalam az alapertelmezett a hdmi minden azon megy ki, kiveve ami az erositore megy:

- mplayer

/etc/mplayer/mplayer.conf:

ao=alsa:noblock:device=hw=1.0

- audacious

kimenet / hang beallitasok... / hang / kimenet bovitmeny: ALSA kimenet / Beallitasok: PCM eszkoz: hw:1,0

neked aztan fura humorod van...

Azért, ha tartós megoldást akarsz, akkor érdemes körülnézni a JackAudio környékén is.