2015-04-28: "service plan" might have permanently
changed. I may do a new release in the future. In the meantime, run as:
./tv -s http://rp-live.woopic.com/live-webapp/live/servicePlan.json
By the way, it's a good idea to have a local copy of this file and use it in case of trouble.
A (at some point of the past) little (not so little anymore, shame on me) program to watch TV served by Orange via Microsoft Smooth Streaming on my GNU/Linux (X11/OpenGL/ALSA) computer (DRM channels not handled). OpenGL is only used to vsync video updates. If you know of an X way, let me know.
This program is a hack. It may fail to work. Use at your own risk. Security issues are everywhere.
A screenshot? The channel/program description overlay that you see here is only displayed shortly when you arrive on a channel.
Another one with the equalizer's controls? As you can see, I like to remove lots of trebble to feel comfortable with my poor headphones.
Yes, there is a fullscreen mode too. Please behave.
If you have some tearing, you may want to configure X to disable
tearing directly in the X server. I did it on debian testing.
Create the file
Section "Device" Identifier "Intel Graphics" Driver "intel" Option "TearFree" "true" EndSection
Not sure that it's a good idea, may have global unexpected effects. Works for me.
deal with FPS not 25 (hackish, but seems to work, I wait
for orange to change everything for my program to fail), network and
CPU usage control (orange does not stop to throw higher and higher quality,
which smokes network and CPU for no real benefit, 640 pixels are enough),
new options -r -nr -no-drm -no-no-signal -mw (woo! that much!).
[2017-01-27] orangetv-1.5.tar.gz: better audio/video synchronization, better download management, some bugs fixed. Should work better.
[2016-12-27] orangetv-1.4.tar.gz: downloading was completely wrong. I took the 'increment' from the manifest file instead of decoding MOOF/TRAF/TFRF (not sure I need to use TFRF, maybe I can/should use TFXD; for the moment it seems to work). The symptom was that sometimes audio or video would stop completely (because I downloaded from the wrong URL). A bug with "timescale" was fixed (not set correctly for some channels, completely destroying audio/video synchronization, and maybe other stuff too). Option -t was added for a better zapping experience. I'm still not fully satisfied with audio/video synchronization.
[2015-07-01] orangetv-1.3.tar.gz: better handling of downloads. Audio stopped after a while. It used to work! Maybe they changed their server. But the bug was here, I won't deny it.
[2015-06-27] orangetv-1.2.tar.gz: modified the X code, it didn't work anymore with a debian update. And now I have tearing in window mode and I don't know how to smash it. I tried the openGL extension stuff (swap interval), didn't work. I don't know... In fullscreen no tearing.
[2015-05-09] orangetv-1.1.tar.gz: -s option, an X crash removal.
[2015-03-XX] orangetv-1.0.tar.gz: initial release.
tv.exe: win32 version (from source code 1.6),
may work, may fail, not tested. Version 1.5 was working okay fullscreen
on a test I did but not okay in a window (video slows down). Go figure.
No test was done with version 1.6 but nothing win32-specific has changed
so I don't expect non fullscreen to work. (But that may depend on the
version of windows. Frankly I don't care much. The windows version was
made for fullscreen usage.)
I wasted way too much time on it, but I like the hack. Read the sources for the fun, in the microsoft/ subdirectory (yes I emulate X Window and ALSA!).
MS-SSTR.pdf: the specs of smooth streaming, I think. Put here for availability.
Well, just watch TV in front of your computer.
Advised command line:
./tv -t 100
To skip useless DRM and 'no signal' channels (skipping 'no signal' takes some time at startup):
./tv -t 100 -no-drm -no-no-signal
Want to limit network and CPU usage? Give max width of stream. A good value is 640 I would say. (I see streams with widths: 320, 400, 480, 640, 1024, 1280. The program outputs 'INFO' lines in the terminal with used widths by the stream. By default the program takes the bigger found.)
./tv -t 100 -mw 640
By default the program will be 10 seconds late with realtime (well, with the latest data available on the server). The server stores more. If you want to see all what the server stores, do:
./tv -t 100 -nr
For the microsoft version, you can specify command line arguments. I think you do it by editing properties of the program (right click on it?).
Here is the README (from 1.4):
orangetv - a basic Orange TV client for linux This program is a hack. It works as of me writing this text (2015-03-20). It may fail to work as of you trying to use it. IMPORTANT! The program only works if you use it inside the Orange's network (say you are Orange's client and you are at home). I think you also need to subscribe for the TV. Type 'h' for help when you start the program. To compile: make To compile for windows: make -f microsoft/hack/Makefile (you need mingw stuff and so on) Dependancies: libcurl (curl) to download data from the internet libfaad (http://downloads.sourceforge.net/faac/faad2-2.7.tar.gz) to decode compressed audio data libavcodec/libavutil/libswscale (those from ffmpeg) to decode compressed video data libcairo (cairo) to draw the GUI of the equalizer libasound (ALSA) to output audio libX11 (X Window) to display video libGL (OpenGL) to avoid tearing effect (video update is synchronized with vertical sync under OpenGL, contrary to direct X Window) (well, at least on my computer) ================================================================== IMPORTANT! IMPORTANT! IMPORTANT! IMPORTANT! IMPORTANT! IMPORTANT! Under Debian (here I have testing) the libavcodec does not work (it gives wrong video). You need the one from ffmpeg. Note: 2016-12-27: Debian testing has the ffmpeg version as it seems. It works for me. ================================================================== It works with channels served using the Microsoft's Smooth Streaming thing with AAC codec for audio and H264 codec for video. DRM 'protected' channel are not viewable. Released in the public domain. Well... I stole code here and there, code that might be released under the GPL or other stuff, so legally I think I can't release it in the public domain. Thing is: I don't care. It's free software, done in the spirit of free software, don't piss me off (as if anyone would care). (But honesty has her hammer directed at my brain and I want to keep that piece of me functional for a little while.) The font (file ter-u16v.bdf) is from http://terminus-font.sourceforge.net/ (version 4.39). http://sed.free.fr/orangetv contact: email@example.com
Write a hack to let anyone on Earth watch Orange TV.
I am almost sure (as of 2015-03-21) that the raw audio and video data can be downloaded from anywhere on this little planet (at least from anywhere in France, even if your computer is not in the Orange's network). What does not work is to get the, let's say, metadata describing the raw data. I have some ideas on how to extract this stuff from inside the Orange network and give it to the world. The biggest problem is to overcome something called laziness.
I think I could write some kind of tutorial on various programming techniques used in there. This program is small and complex enough to be interesting. But did I already mention laziness or not?
Do minor stuff, like pause/record, this and that, here and there.
Sat, 21 Mar 2015 21:49:36 +0100
Last update: Sun, 12 Mar 2017 19:45:56 +0100