Sziasztok,
egy elég érdekes problémával nézek szembe. Egy több napos rendezvényre kellene multimédiát szolgáltatni és a következő lenne a feladat:
Zenét kellene szolgáltatni egy szerver gépen, méghozzá konzolból, de mintha ez nem lenne elég, PHP-ból kellene tudni irányítani és ráadásul az egészet minimum kétcsatornásan, mert a zene mellett az announce üzenetek mennének a másikon.
A terv az, hogy egy webes felület (amit még elkészítek) kezelné az egészet egy szerveren és a különböző munkaállomásokról kerülnének be az announce-ok és a zenék a lejátszási sorba.
Tehát amire szükségem lenne, az egy elég alacsony szinten konfigurálható zenelejátszó daemon.
Amit eddig találtam a témában, az vagy konzolos, de rendes "grafikus" felületes program, illetve ráakadtam az mpd-re (music player daemon) de az nem volt elég okos.
Kérdés: ismertek ilyen szoftvert vagy nekem kell megoldani? Esetleg lehetőség arra, hogy két párhuzamosan futó program kimenetét összemixeljem?
Ha fontos, Ubuntu Server és ALSA fut a gépen. Esetleg ha valaki otthon van a témában az is érdekelne, hogy hogy tudok a 7.1-es hangkártyámon különböző csatornákat megcímezni.
Köszi
J
- 1554 megtekintés
Hozzászólások
hi, a VLC, és a IceCast jutott eszembe; mindkettő nagy tudású, amennyire tudom a VLC konzolból szépen vezérelhető.
- A hozzászóláshoz be kell jelentkezni
Azt elfelejtettem mondani, hogy nincs X. Nem láttam olyan opciót, hogy a VLC csak command lineból fusson...
- A hozzászóláshoz be kell jelentkezni
Pedig van, console vagy CLI interface használatát kell neki megadni wx helyett
- A hozzászóláshoz be kell jelentkezni
Köszi, ha az alsaplayer nem teszi meg, akkor megpróbálom... egyelőre úgy néz ki, hogy menni fog. Sajnos igazából úgy kellene megcsinálni, hogy nekiállok C++-ban kódolni, mert az ütemezőnek is gyorsabban kellene futnia, de most csak a PHP-s megoldásra lesz szabad kapacitásom.
Esetleg érdekel valakit az eredmény egyébként? Mert ha igen, akkor csinálok belőle szép opensource projektet.
- A hozzászóláshoz be kell jelentkezni
icecast+madplay? mi ilyet hasznalunk, az egyetlen problemaja, ha egy epp lejatszott tracket kell megszakitani, es mas szamra lepni, ekkor dobja az osszes klienst, bar ez ellen elvileg lehetne az icecast configban tenni vmit. konzolra sajnos meg jobbat en sem talaltam, ami valoban elfutna X nelkul, es php-bol tudnad vezerelni.
- A hozzászóláshoz be kell jelentkezni
Hmmm azt még mindig nem értem, hogy ha lejátszok valamit és átküldöm az icecaston mondjuk, akkor ott hogy tudok két csatornát összekeverni... és főleg hogy tudom a hangerőt vezérelni...
- A hozzászóláshoz be kell jelentkezni
bocs, felreertettelek.
- A hozzászóláshoz be kell jelentkezni
hol akarsz keverni? mar az icecastbol kijojjon a kevert hang vagy eleg kesobb is? hasznalhatsz 2 lejatszot es rakuldheted alsa dmixre vagy olyan hangkartyara ami hardveresen tud mixelni tobb csatornat
udv Zoli
- A hozzászóláshoz be kell jelentkezni
Igen, ez lenne a történés most, például alsaplayerrel és szépen működik is. Most már csak két problémám van ezzel kapcsolatban:
1. Hogyan tudom a 7.1-es hangkártyám különböző csatornáit megvezérelni? (Akár külön hangkártyaként látva)
2. Hogyan tudok Linux alatt (akár saját programozással) másodpercnél pontosabban ütemezni? (SIG_ALARM csak másodperces beállítással van tudtommal.)
Köszönöm
Update: az első megoldódott. Sajnos csak 2+2 csatorna, de jobb mint a semmi. ~/.asoundrc
pcm.dshare {
type dmix
ipc_key 2048
slave {
pcm "hw:0"
rate 44100
channels 4
}
bindings {
0 0
1 1
2 2
3 3
}
}
pcm.frontx {
type plug
slave {
pcm "dshare"
channels 4
}
ttable.0.0 1
ttable.1.1 1
}
pcm.rearx {
type plug
slave {
pcm "dshare"
channels 4
}
ttable.0.2 1
ttable.1.3 1
}
Kis magyarázat: a hivatalos doksi alapján létrehoztam három virtuális PCM eszközt. Az első a DMIX plugint használja és beleküldi a kimenetet a hangkártyába (hw:0). A második blokk (frontx) kiküldi az első két csatornáját a dmix-nek (0->0, 1->1), a harmadik (rearx) pedig az első két csatornáját hátsó két csatornaként küldi a dmix-nek (0->2, 1->3). Ezzel kaptam két darab kétcsatornás hangkártyát.
- A hozzászóláshoz be kell jelentkezni
ez egy mpd kliens, ilyet akarsz?
- A hozzászóláshoz be kell jelentkezni
Már néztem, a webes felületet már saját magam szeretném megírni.
Közben találtam egy (fél) megoldást. Az alsaplayer dmixen keresztül húzva tudja, amit nekem kell. A lényeg az, hogy indítok két sessiont és azokat tudom is irányítani.
Ezek után már csak az a feladat, hogy megfelelő időpontban lefuttassam cronból a vezérlőrendszert, ami állítgatja a hangerőt, bemondja a dolgokat, stb.
Még nagyon kisérleti az ötlet, de úgy tűnik, menni fog. Ja és mielőtt elfelejtem, kell hozzá az alsaplayer-text csomag.
- A hozzászóláshoz be kell jelentkezni
Az mplayernek van olyan interface-e, amikor stdio-n kapja a parancsokat/adja a visszajelzest.. (a grafikus frontendek is ezt hasznaljak)
Elonye, hogy rengeteget tud, sok formatumot ismer, stb.. de gondolom nem kell bemutatni..
man-ban van pelda a 7.1-re (lehet, hogy csak 5.1)
---------------------
Q: Why do real Java programmers wear glasses?
A: Because they don't C#.
- A hozzászóláshoz be kell jelentkezni
Beleütköztem egy szorosan ide kapcsolódó problémába. PHP-ból a következő paranccsal próbálok indítani lejátszást:
system("./play " . escapeshellarg($this->sessionname) . " " . escapeshellarg($song) . "");
A play file tartalma a következő:
#!/bin/bash
echo $1
echo $2
alsaplayer -d dmix -i text -s "$1" "$2" &
Ennek ellenére a lejátszás elindítása után a program szinte azonnal visszatér, ami értelemszerűen nem cél. Szerettem volna háttérben elindítani. Van erre megoldás?
Adott esetben azt is el tudom képzelni hogy más alapokra helyezzem az egészet, ötletek jöhetnek.
- A hozzászóláshoz be kell jelentkezni