Hallo,
mit VLCJ bzw. VLC kann man hervorragen OnlineStreamen (z.B.) Telekom-IPTV geniesen.
Was leider nicht geht ist eine Time-shift-Funktion. Zwar kann man auf Pause drücken und ab dem Zeitpunkt weiterschauen - nur leider kann man nicht skippen. Hier bekommt man folgende Meldung von VLCJ geliefert " EsOutTimeshift does not yet support time change".
Nun habe ich mir am Sonntag mal q n' dirty eine kleine Klasse geschrieben die den OnlineStream in eine Datei aufnimmt. Diese Datei kann man nun dem VLC übergeben und siehe da - plötzlich kann man skippen.
Was nun sehr unschön ist, ist die Tatsache dass pro Stunde ca 12 GB auf die Festplatte geschreiben werden.
Kennt jemand eine Möglichkeit - bzw. hat jemand eine Idee wie man das etwas dynamischer gestalten kann und die Datei nicht so groß wird?
Danke für Eure Hilfe
Uwe
mit VLCJ bzw. VLC kann man hervorragen OnlineStreamen (z.B.) Telekom-IPTV geniesen.
Was leider nicht geht ist eine Time-shift-Funktion. Zwar kann man auf Pause drücken und ab dem Zeitpunkt weiterschauen - nur leider kann man nicht skippen. Hier bekommt man folgende Meldung von VLCJ geliefert " EsOutTimeshift does not yet support time change".
Nun habe ich mir am Sonntag mal q n' dirty eine kleine Klasse geschrieben die den OnlineStream in eine Datei aufnimmt. Diese Datei kann man nun dem VLC übergeben und siehe da - plötzlich kann man skippen.
Code:
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
public class BufferedStreamWriter extends Thread{
InputStream _stream = null;
FileOutputStream _out = null;
MulticastSocket sock = null;
public BufferedStreamWriter(String stream){
try{
InetAddress group = InetAddress.getByName( "239.35.20.21" );
sock = new MulticastSocket(10000);
sock.joinGroup(group);
_out = new FileOutputStream("c:\\Ablage\\test.mpg");
start();
}catch(Exception error){
error.printStackTrace();
}
}
public void run(){
byte[] buf = new byte[10240];
DatagramPacket pack = new DatagramPacket( buf, buf.length );
while(true){
try{
sock.receive( pack );
_out.write(pack.getData());
}catch(Exception error){
error.printStackTrace();
}
}
}
public static void main(String[] args) {
new BufferedStreamWriter("rtp://@239.35.20.21:10000");
}
}
Was nun sehr unschön ist, ist die Tatsache dass pro Stunde ca 12 GB auf die Festplatte geschreiben werden.
Kennt jemand eine Möglichkeit - bzw. hat jemand eine Idee wie man das etwas dynamischer gestalten kann und die Datei nicht so groß wird?
Danke für Eure Hilfe
Uwe