VLC:n ohjaus omasta ohjelmasta ?
Miten voisi simuloida linuxissa pyörivälle VLC Media Playerille (omatekoisesta ohjelmasta käsin):
a) Play -napin painalluksen
b) Stop -napin painalluksen
?
Windows -versiossa tuo olisi helpohkosti tehtävissä näillä:
FindWindow / EnumWindows
PostMessage
Mutta saako linuxissa jotenkin tehtyä saman ?
VLC:n ohjaus omasta ohjelmasta ?
12
926
Vastaukset
- ohjelman käynnistysparametrit
VLC toimii kyllä komentoriviltä. Taitaa olla vapaasti käynnistettävissä jokin 'system' -määrityksin.
Jos olet ihan oikeasti ohjelmoimassa, ei muiden ulkoisten ohjelmien ajaminen liene edes tarpeen. Tee VLC:stä ohjelma, jonka tietyt ominaisuudet katsot tarpeelliseksi.
Jo man vlc kertonee jotakin ohjelman ominaisuuksista.- koodaaja_x
Eipä taida auttaa tuo komentoriviparametrit tähän !
Esim:
mitä, jos haluaa kuunnella nettiradiota osoitteesta:
http://media.demo.com/cgi-bin/nettiradio.pl?kanavaID=001
JA tallentaa streami tiedostoon /home/tunnus/radiosave/demoradio_tallenne_yyyy_mmdd_hhnnss.mp3, sellaisenaan siinä muodossa kuin dataa palvelimelta tulee, ja vielä esim. niin, että vlc lopettaa kuuntelun ja tiedostoon loggauksen, kun esim. 1h 37 min tallennusta on tehty ?
a) onnistuuko yleensäkään samalta komentoriviltä kaikki tämä:
1. Nettiradion kuntelu, URL (tai MRL, taitaa olla aika sama asia)
2. Streamin tallennus tiedostoon sellaisenaan siinä muodossa kuin se tulee palvelimelta, siis EI uudelleenenkoodata
3. automaattinen kuuntelun ja tallennuksen lopetus kun määräaika on tullut täyteen
ja
b) entä, jos oma ohjelma päättääkin vaikkapa 1h 10 min jälkeen, että nyt riitti. Miten lopettaa kuuntelu ja tallennus erillisellä lopetuskomennolla jo ennen määräajan täyttymistä ?
Juuri tällaisten syiden takia windows -tyylinen nappien painallusten simulointi olisi huomattavasti parempi vaihtoehto.
Ja vielä: Aika turha ehdottaa oman vastaavan ohjelman koodaamista:
Jotkut nettiradiopalvelimet toimivat eri tavalla jos http -pyyntö tehdään omalla ohjelmalla.
Eli vastassa on absoluuttisen tarkka systeemi, jossa joki hyvin pieni yksityiskohta esim joko estää kuuntelun tai sitten aiheuttaa sen, että ääneen tulee ylimääräisiä häiriöitä, joita VLC:llä kuuneltaessa / tallennettaessa EI esiinny.
Ja jos arvaan oikein, VLC:n koodaajat ovat käyttäneet lukemattomia työtunteja sen eteen, että ohjelman lähettämiä http -pyyntöjä ei voi mitenkään erottaa esim WinAmp:in tai Windows Media Playerin vastaavista, mitään pienestäkään yksityiskohdasta!
Jotkut palvelinten ylläpitäjät ovat todella tarkkoja tässä:
* esimerkiksi http -headerien tarkkaa sisältöä (myös sinänsä merkityksettömien kenttien osalta) vahdutaan hyvin tarkkaan, yhdenkin tavun ero aiheuttaa harmeja.
* http -headerin järjestystäkin vahditaan (silti vaikka RFC:t eli alan "de facto" -standardit eivät määrää, missä järjestyksessä eri kenttien pitäisi olla)
* clientin käytöstä redirect -tilanteessa valvotaan myös, ja jos se ei ole 100% identtinen esim. Winampin tai MS Media Playerin kanssa, niin harmeja taas luvassa.
Todellakin, jotkun nettiradiot estävät kuuntelun kokonaan, ja toiset lisäävät ääneen tahallisia häiriöitä, jos huomaavat, ettei clientti ole heidän sallittujen ohjelmien listalla.
Näin silti, vaikka streami sinänsä ei ole mitenkään salattua, vaan (radiosta riippuen) ihan standardia mp3 tai ogg/vorbis -streamia.
Asiaa on kokeiltu, ja omatekoinen ohjelma yhdeltäkin asemalta saa kyllä mp3 audiota talteen, mutta äänessä on häiriöääniä, joita VLC:llä tallennettaessa ei tule.
Jos silti oma ohjelma yksin ilman VLC:tä on jonkun mielestä ainoa ratkaisu, niin toki saa ehdottaa verkkoliikenneloggereita, jotka loggaavat liikenteen molempiin suuntiin hyvin tarkaan, eli periaatteessa joka tavulle aikaleima ja tieto, kumpaan suuntaan data liikkui.
Valitettavasti muuten VLC:n windowsversiolla ei voi tallentaa kaikkia niitäkään nettiradioita, joiden tallennus linux-VLC:llä onnistuu.
Harmi, sillä windows-LVC:n ohjailu omasta ohjelmsta onnistuu täysin napinpainalluksia simuloimalla ohi VLC:n oma ohjelmointirajapinnan, joka ei tarjoa kaikkia mahdollisia ohjausmahdollisuuksia, ja lisäksi voi muuttua versiosta toiseen. Lisäharmina vielä TCP/IP:llä ohjailussa se,m etten minä ainakaan ole edes löytänyt sellaista komentoriviparametria, jolla VLC:n saisi automaattisesti hyväksymään tulevat TCP/IP -ohjausyhteydet ja antaisi sellaisesta tulevanb komennon ohjata itseään.
EI, paras tulos oli se, että eräs VLC:n komentoriviparametri avaa ylimääräisen tekstimoodi -ikkunan, mutta tuossa ylimääräisessä ikkunassa pitää käyädä painamassa ENTER ennen kuin TPC/IP -kauko-ohjaus suostuu toimimaan.
Ilman tuota ENTERin painallusta TCP/IP -yhteys kyllä teknisesti muodostuu, mutta VLC ei tottele mitään sen kautta annettuja komentoja ennen kuin tuota ENTERiä on käyty painamassa.
Ja jälleen kerran: Windows -VLC:lle voisi varmasti helposti:
1. Etsiä tuon ylimääräisen tekstimoodi-ikkunan ikkunakahva FindWindow tai EnumWindows -WinAPI -kutsuilla ja itten:
2. Simuloida ENTERin painallus:
PostMessage(VLC_Command_Window_Handle, WM_KeyDown, VK_Return,0);
// tähän pieni viive ja ...
PostMessage(VLC_Command_Window_Handle, WM_Keyup, VK_Return,0);
Tuo tapa on windowsissa todettu 100R% toimivaksi, tosin vaikeissa tapauksissa joutuu näkemään enemmän vaivaa selvittääkseen oikean ikkunakahvan, jolle noita viestejä tunkee; joissain tapauksissa kun oikea kohde ei olekaan se ikkuna, jonka otsikkopalkissa lukee VLC tai VLC Command line interface tms, vaan jokin sen lapsi-ikkuna. Noh, jos ei suoraan toimi, niin WinAPI:sta löytyy kyllä lääkkeet tähänkin oikena ikkunakahvan löytämiseksi.
Eikö linuxin GUI -ikkunoihin tosiaan löydy mitään vastaavaa ??? - jatkat Window-ohjelmointia
koodaaja_x kirjoitti:
Eipä taida auttaa tuo komentoriviparametrit tähän !
Esim:
mitä, jos haluaa kuunnella nettiradiota osoitteesta:
http://media.demo.com/cgi-bin/nettiradio.pl?kanavaID=001
JA tallentaa streami tiedostoon /home/tunnus/radiosave/demoradio_tallenne_yyyy_mmdd_hhnnss.mp3, sellaisenaan siinä muodossa kuin dataa palvelimelta tulee, ja vielä esim. niin, että vlc lopettaa kuuntelun ja tiedostoon loggauksen, kun esim. 1h 37 min tallennusta on tehty ?
a) onnistuuko yleensäkään samalta komentoriviltä kaikki tämä:
1. Nettiradion kuntelu, URL (tai MRL, taitaa olla aika sama asia)
2. Streamin tallennus tiedostoon sellaisenaan siinä muodossa kuin se tulee palvelimelta, siis EI uudelleenenkoodata
3. automaattinen kuuntelun ja tallennuksen lopetus kun määräaika on tullut täyteen
ja
b) entä, jos oma ohjelma päättääkin vaikkapa 1h 10 min jälkeen, että nyt riitti. Miten lopettaa kuuntelu ja tallennus erillisellä lopetuskomennolla jo ennen määräajan täyttymistä ?
Juuri tällaisten syiden takia windows -tyylinen nappien painallusten simulointi olisi huomattavasti parempi vaihtoehto.
Ja vielä: Aika turha ehdottaa oman vastaavan ohjelman koodaamista:
Jotkut nettiradiopalvelimet toimivat eri tavalla jos http -pyyntö tehdään omalla ohjelmalla.
Eli vastassa on absoluuttisen tarkka systeemi, jossa joki hyvin pieni yksityiskohta esim joko estää kuuntelun tai sitten aiheuttaa sen, että ääneen tulee ylimääräisiä häiriöitä, joita VLC:llä kuuneltaessa / tallennettaessa EI esiinny.
Ja jos arvaan oikein, VLC:n koodaajat ovat käyttäneet lukemattomia työtunteja sen eteen, että ohjelman lähettämiä http -pyyntöjä ei voi mitenkään erottaa esim WinAmp:in tai Windows Media Playerin vastaavista, mitään pienestäkään yksityiskohdasta!
Jotkut palvelinten ylläpitäjät ovat todella tarkkoja tässä:
* esimerkiksi http -headerien tarkkaa sisältöä (myös sinänsä merkityksettömien kenttien osalta) vahdutaan hyvin tarkkaan, yhdenkin tavun ero aiheuttaa harmeja.
* http -headerin järjestystäkin vahditaan (silti vaikka RFC:t eli alan "de facto" -standardit eivät määrää, missä järjestyksessä eri kenttien pitäisi olla)
* clientin käytöstä redirect -tilanteessa valvotaan myös, ja jos se ei ole 100% identtinen esim. Winampin tai MS Media Playerin kanssa, niin harmeja taas luvassa.
Todellakin, jotkun nettiradiot estävät kuuntelun kokonaan, ja toiset lisäävät ääneen tahallisia häiriöitä, jos huomaavat, ettei clientti ole heidän sallittujen ohjelmien listalla.
Näin silti, vaikka streami sinänsä ei ole mitenkään salattua, vaan (radiosta riippuen) ihan standardia mp3 tai ogg/vorbis -streamia.
Asiaa on kokeiltu, ja omatekoinen ohjelma yhdeltäkin asemalta saa kyllä mp3 audiota talteen, mutta äänessä on häiriöääniä, joita VLC:llä tallennettaessa ei tule.
Jos silti oma ohjelma yksin ilman VLC:tä on jonkun mielestä ainoa ratkaisu, niin toki saa ehdottaa verkkoliikenneloggereita, jotka loggaavat liikenteen molempiin suuntiin hyvin tarkaan, eli periaatteessa joka tavulle aikaleima ja tieto, kumpaan suuntaan data liikkui.
Valitettavasti muuten VLC:n windowsversiolla ei voi tallentaa kaikkia niitäkään nettiradioita, joiden tallennus linux-VLC:llä onnistuu.
Harmi, sillä windows-LVC:n ohjailu omasta ohjelmsta onnistuu täysin napinpainalluksia simuloimalla ohi VLC:n oma ohjelmointirajapinnan, joka ei tarjoa kaikkia mahdollisia ohjausmahdollisuuksia, ja lisäksi voi muuttua versiosta toiseen. Lisäharmina vielä TCP/IP:llä ohjailussa se,m etten minä ainakaan ole edes löytänyt sellaista komentoriviparametria, jolla VLC:n saisi automaattisesti hyväksymään tulevat TCP/IP -ohjausyhteydet ja antaisi sellaisesta tulevanb komennon ohjata itseään.
EI, paras tulos oli se, että eräs VLC:n komentoriviparametri avaa ylimääräisen tekstimoodi -ikkunan, mutta tuossa ylimääräisessä ikkunassa pitää käyädä painamassa ENTER ennen kuin TPC/IP -kauko-ohjaus suostuu toimimaan.
Ilman tuota ENTERin painallusta TCP/IP -yhteys kyllä teknisesti muodostuu, mutta VLC ei tottele mitään sen kautta annettuja komentoja ennen kuin tuota ENTERiä on käyty painamassa.
Ja jälleen kerran: Windows -VLC:lle voisi varmasti helposti:
1. Etsiä tuon ylimääräisen tekstimoodi-ikkunan ikkunakahva FindWindow tai EnumWindows -WinAPI -kutsuilla ja itten:
2. Simuloida ENTERin painallus:
PostMessage(VLC_Command_Window_Handle, WM_KeyDown, VK_Return,0);
// tähän pieni viive ja ...
PostMessage(VLC_Command_Window_Handle, WM_Keyup, VK_Return,0);
Tuo tapa on windowsissa todettu 100R% toimivaksi, tosin vaikeissa tapauksissa joutuu näkemään enemmän vaivaa selvittääkseen oikean ikkunakahvan, jolle noita viestejä tunkee; joissain tapauksissa kun oikea kohde ei olekaan se ikkuna, jonka otsikkopalkissa lukee VLC tai VLC Command line interface tms, vaan jokin sen lapsi-ikkuna. Noh, jos ei suoraan toimi, niin WinAPI:sta löytyy kyllä lääkkeet tähänkin oikena ikkunakahvan löytämiseksi.
Eikö linuxin GUI -ikkunoihin tosiaan löydy mitään vastaavaa ???VLC:n koodi on vapaa, ja siihen osaava koodaaja voi kehitellä ihan omat lisukkeensa.
Jatka sinä vain koodauksiasi Windows-ympäristössä.
- -hässäkkä?
kelpaako se että xvkbd:llä lähettää vlc:lle komennot toista (välilyönti) ja stop (s)?
jos kelpaa, niin älä multa kysy miten toi xvkbd:n -window-parametri toimii :)- Koodaaja_X
Kiitos tähän mennessä järkevimmästä vastauksesta; tosin tässä täytyy ilmeisesti googlettaa aika tavalla, että tuosta sais mitään selkoa !
- mallia..
Koodaaja_X kirjoitti:
Kiitos tähän mennessä järkevimmästä vastauksesta; tosin tässä täytyy ilmeisesti googlettaa aika tavalla, että tuosta sais mitään selkoa !
alkoi itteäkin kiinnostamaan miten tuo nyt oikein menee. joten tällaista kehittelin:
play/pause:
---
#!/bin/bash
ikkuna=`wmctrl -l|grep VLC |sed 's/ .*//'`
xvkbd -window $ikkuna -xsendevent -text " "
---
stop:
---
#!/bin/bash
ikkuna=`wmctrl -l|grep VLC |sed 's/ .*//'`
xvkbd -window $ikkuna -xsendevent -text "s"
---
ja jos haluaa estää tuon että play ja pause on sama komento niin vlc:n asetuksessa pikanäppäimet on kohdat "vain tauko" ja "vain toisto"
hmm, purkkaa :D - Koodaaja_x
Omassa linux -VLC:ssäni (versio 0.8.6c) tosin ei toimi välilyönti, P, S, CtrlP, eikä Ctrl-S.
Eli: ei tue mitään pikanäppäimiä eikä valikkokohtia toiston käynnistämiseksi, ainoastaan hiirellä kilikkaus play- tai stop -nappiin tehoaa.
Niin, onhan valikossa noita "Open File" ja "Open Network Stream" -kohtia, mutta ne kyselevät aina lisätietoja!
Sensijaan, jos nuo lisätiedit on jo kerran syötetty, niin pelkkä Play -napin painallus käynnistää automaattisesti toiston täsmälleen samoilla lisävalinnoilla, mitää noihin dialogeihin on edellisellä kerralla syötetty, eikä kysele mitään !
Ja Play -napin hiirenklikkauksen lisäksi EI ole muita tapoja aikaansaada täsmälleen samaa!
Niin: Hyödynnän tässä linnuxin kätevää ominaisuutta: linuxissa voi uudelleennimetä avoinnaolevan tiedoston ongelmitta, ja tämä onkin tässä tärkeää, sillä Play -samoilla asetuksilla toki tallentaa aina samannimiseen tiedostoom (potentiaalisesti ylikirjoittaen aiemman tallenteen) mutta tuoh auttaa, kun heti tallennuksen käynnistymisen jälkeen uudelleennnimeää ko. tiedoston...
Tässä linux eroaa windowsista. Windowsissahan ei voi uudelleennimetä käytössä olevaa tiedostoa. - koodaaja_x
mallia.. kirjoitti:
alkoi itteäkin kiinnostamaan miten tuo nyt oikein menee. joten tällaista kehittelin:
play/pause:
---
#!/bin/bash
ikkuna=`wmctrl -l|grep VLC |sed 's/ .*//'`
xvkbd -window $ikkuna -xsendevent -text " "
---
stop:
---
#!/bin/bash
ikkuna=`wmctrl -l|grep VLC |sed 's/ .*//'`
xvkbd -window $ikkuna -xsendevent -text "s"
---
ja jos haluaa estää tuon että play ja pause on sama komento niin vlc:n asetuksessa pikanäppäimet on kohdat "vain tauko" ja "vain toisto"
hmm, purkkaa :DSiis mistä versiosta alkaen VLC:n valikoista yleensäkään löyty mitään pikanäppäimiin liittyviä asetuksia ?
ps. Kumpaan pitäisi päivittää, jos haluaa 64-bit linuxin ja siihen KDE:n:
KUbuntuun vai Debianiin ?
Ja mihin versioon ?
Vai 3. vaihtoehtona Ubuntu johon erillinen KDE:n asennus ?
Kai Ubuntunkin voi asentaa jollain "Alternate Install" CD:llä vain tekstitilan sisältävänä kokoonpanona ja sitten manuaalisetsi asentaa KDE. - mulla..
koodaaja_x kirjoitti:
Siis mistä versiosta alkaen VLC:n valikoista yleensäkään löyty mitään pikanäppäimiin liittyviä asetuksia ?
ps. Kumpaan pitäisi päivittää, jos haluaa 64-bit linuxin ja siihen KDE:n:
KUbuntuun vai Debianiin ?
Ja mihin versioon ?
Vai 3. vaihtoehtona Ubuntu johon erillinen KDE:n asennus ?
Kai Ubuntunkin voi asentaa jollain "Alternate Install" CD:llä vain tekstitilan sisältävänä kokoonpanona ja sitten manuaalisetsi asentaa KDE.mulla on versio 0.9.4 vlc:stä kubuntu 8.10:ssä ja siinä löytyy kohta:
työkalut > asetukset > pikanäppäimet
tohon käyttiksen päivittämiseen en kyllä osaa ottaa kantaa. itellä on kubuntu johon on lisätty myös ubuntu-desktop -paketti.
ja samoin ubuntuun voi lisätä kubuntu-desktop-paketin.
- puusilima_
http://wiki.videolan.org/DBus-spec
The interface
All methods must be accessed through the interface org.freedesktop.MediaPlayer
i.e. calling Quit with qdbus would be:
$ qdbus org.freedesktop.MediaPlayer /VLC 0.9.0 org.freedesktop.MediaPlayer.Quit- toivoton NAINEN
En tiiä, miten saisin tuon vlc:n toimimaan. latasin jo jonku vlc paketin mut se ei toimi. tuo yks sivusto muka neuvoo, mut pitääkö se asentaa sieltä komentorivin kautta vai miten? Tää linux on niin syvältä!
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Vasemmistohallitus palauttaa hintasääntelyn, esim. bensalitra vain 1e.
Tuleva vasemmistolaisista koostuva hallitus ottaa käyttöön vanhat hyvät keinot pitää hinnat kurissa. Tähän tarkoitukse734527Vasemmistolainen valehteli jälleen - Purra tai persut eivät luvanneet "euron bensaa"
Väite "euron bensasta" on ensisijaisesti poliittisten vastustajien käyttämä puhdas vale. Persut kyllä kampanjoivat näky1053769Arman Alizadin viesti puna-aktivisteille: "Pitäkää lärvinne nytkin kiinni"
Arman Alizad kritisoi vasemmiston kaksinaismoralismia. Iranissa syntynyt suosikkijuontaja Arman Alizad pakeni perheensä1393458Minja Koskela nostanut vasemmistoliiton kannatuksen ennätykseen
Koskela valittiin puolueen johtoon lokakuussa 2024, ja silloin Ylen kysely antoi puolueelle 9,3 prosentin kannatuksen.371970Antti johtaa Petteriä jo 7,1 prosenttiyksiköllä
Tällä menolla sdp menee kokoomuksesta kierroksella ohi jo tällä vaalikaudella. https://yle.fi/a/74-20213575691911Mitä on tullut
Entisen abcn rakennuksen tilalle se oli tyhjillään monta vuotta siellä oli jo nyt valot onko huoltoasema? 5:30.891219- 1121027
Palosta selvinnyt 18 vuotias munira tarvitsi tulkin kun puhui Iltalehdelle
Suomessa asuva 18 vuotias tarvii tulkin !!! Tää Suomea puhumaton on palossa kuolleen naisen veli ja asui perheen kanssa.127934- 55915
Mikä homma?
https://share.google/NvruSS4P4EzjTWPov Poliisilla oli keskiviikkona 4. maaliskuuta yksityisasunnossa Saarijärvellä tehtä25837