bugLithionite - Bugs: bug #34895, Wishlist: Add support for LETio...

 
 

bug #34895: Wishlist: Add support for LETio streams

Submitter:  None
Submitted:  Fri 25 Nov 2011 01:38:56 PM UTC
   
 
Category:  None Severity:  1 - Wish
Item Group:  None Status:  Fixed
Privacy:  Public Assigned to:  None
Open/Closed:  Closed Release:  0.1
Operating System:  None
* Mandatory Fields

Add a New Comment Rich Markup
   

Jump to the original submission

Fri 25 Nov 2011 01:38:56 PM UTC, comment #14: 

This item has been reassigned from the project Linterna Mágica support tracker to your tracker.

The original report is still available at support #107821

Following are the information included in the original report:

[field #0]                  Item ID: 107821
[field #1]                 Group ID: 10711
[field #2]              Open/Closed: Closed
[field #3]                 Severity: 1 - Wish
[field #4]                  Privacy: Public
[field #7]                         : Unknown support Field Display Type
[field #8]                         : Unknown support Field Display Type
[field #9]                 Category: Support for new website
[field #10]             Submitted by: None
[field #11]              Assigned to: valkov
[field #12]             Submitted on: Wed 28 Sep 2011 03:54:07 AM GMT
[field #13]                  Summary: Wishlist: Add support for LETio streams
[field #14]      Original Submission: LETio ( http://www.letio.com/ ) is a Flash-based stream system that generates several AAC streams, and automatically switches to the one that causes the least latency. It's primarily used by online radio stations, and occasionally on TV stations (via H.264). Currently, LETio is incompatible with both Gnash and Lightspark. There should be a way to take the address of the stream with the highest quality and forward it to a media player.
[field #15]                Closed on: Sun 02 Oct 2011 08:50:27 AM GMT
[field #16]               Item Group: None
[field #17]                   Status: Wont Do
[field #18]        Component Version: None
[field #19]         Operating System: GNU/Linux
[field #20]          Reproducibility: None
[field #21]               Size (loc): None
[field #22]            Fixed Release: None
[field #23]          Planned Release: None
[field #24]                   Effort: 0.00
[field #28]                 Priority: 3 - Low
[field #31]         Percent Complete: 0%
[field #33]                  Release: trunk
[field #36]         Originator Email: csolisr@gmail.com
[field #58]     Custom Select Box #1: None
[field #59]     Custom Select Box #2: None
[field #60]     Custom Select Box #3: None
[field #61]     Custom Select Box #4: None
[field #62]     Custom Select Box #5: None
[field #63]     Custom Select Box #6: None
[field #64]     Custom Select Box #7: None
[field #65]     Custom Select Box #8: None
[field #66]     Custom Select Box #9: None
[field #67]    Custom Select Box #10: None

Ivaylo Valkov <valkov>
Group administrator
Wed 16 Nov 2011 11:36:00 AM UTC, comment #13: 

Lithionite was accepted [1] as a project here at Savannah. We got lucky, because there are few volunteers and since recently Savannah does not accept non-GNU project submissions, [2] because of this. I was already looking for another place where to host the project, but as I said already we got lucky.

No resources are available at the project page yet, but I will try to setup everything as soon as possible.

Check the project page, and when ready report all bugs you know of. I am not using personally Lithionite, so I don't know if new bugs appeared or is it still working at all.

[1] https://savannah.nongnu.org/projects/lithionite/
[2] https://savannah.gnu.org/forum/forum.php?forum_id=7017

Ivaylo Valkov <valkov>
Group administrator
Fri 07 Oct 2011 07:18:27 AM UTC, comment #12: 

t turns out Gitorious does not provide bug tracking system. I've submitted Lithionite here at Savannah. [1] It will take some time before it is reviewed and accepted. Until then I'll hold changes to the code.

[1] https://savannah.gnu.org/task/?11403

Ivaylo Valkov <valkov>
Group administrator
Sun 02 Oct 2011 08:32:54 PM UTC, comment #11: 

I was thinking about similar approach. Just adding every 44 seconds in a FIFO, but never tested it. Will look into it. Thanks.

Usually text under 10 lines is considered not copyrightable.

Ivaylo Valkov <valkov>
Group administrator
Sun 02 Oct 2011 06:24:28 PM UTC, comment #10: 

I tried to repeat my bug. It seems to be triggered when there's a peak in my download rate in the moment where the next 44 seconds are about to be fetched. If the gap is caused by track switching, I guess I've found a way to use aplay to concatenate the tracks:
http://snipplr.com/view/18353/gapless-playback-for-mplayer-linux/
(hopefully that code snippet is GPL-compatible)

Anonymous
Sun 02 Oct 2011 05:00:53 PM UTC, comment #9: 

This way the information I've gathered for LETio won't go to waste. Someone else might think of a better way for listening the streams.

Currently Lithionite does exactly this, the stream is fetched with wget few seconds before the previous one ends at the background. If the metadata is fetched early the stream URL is not changed. Every request must have a key in the form of a timestamp returned in the metadata. First I just loaded the streams directly to MPlayer, but got the same silence between streams. I think it is just the switching of the files/tracks.

A second MPlayer instance sounds plausible, but I think it will not work as expected.

By the way, RTMP streams are continuous and do not need the 44seconds fetching, they just play. Tested for about 20 minutes. But I didn't encountered such in cdr.com.

I am thinking about hosting a code repository at Gitorious, besides the web page at my site, where it will be possible to report bugs. Check the site after few days or a week.

I think that sometimes there is an overlap of few seconds of the audio in the new and the old stream. Could you confirm that?

I'll appreciate your further feedback.

I hope there is no difference in the Flash audio with the one from Lithionite.

Could you report the output of the script with the -d option? The breakage sounds strange.

Ivaylo Valkov <valkov>
Group administrator
Sun 02 Oct 2011 04:42:03 PM UTC, comment #8: 

Thanks for the script! It worked like a charm... except that after the 44-second break, it was all silence. For long over 44 seconds.

Anonymous
Sun 02 Oct 2011 04:16:48 PM UTC, comment #7: 

Great, I wouldn't expect to have a whole new program built up exclusively to fix my bug! But, I would suggest a work-around to the 44-second stream limitation: parallelly loading a stream shortly before the 44-second stream finishes, then switching to it. Is that technically possible using MPlayer, or various instances of MPlayer if not?

Anonymous
Sun 02 Oct 2011 08:50:27 AM UTC, comment #6: 

Thank you for the dump. It was very useful.

There are technical limitations in Linterna Mágica that prevent me to add support for LETio streams. The first one is the same origin policy that prevents XMLHttpRequest to pages that are not at the same domain as the main document. Currently Linterna Mágica runs as a script inside the page it is viewed. All LETio streams are processed trough master.letio.com.

Even if there was no same origin restriction, there is a second limitation. The audio stream is 44 second long. Every ~ 44 seconds new request must be made  to second URL that returns metadata and the new link for the stream. Reloading the URL in the Linterna Mágica player is possible, but I guess the caching will make the stream useless.(See next paragraph).

Unable to support it in Linterna Mágica, I did the next best thing. I wrote a bash script around MPlayer - Lithionite. It has a little annoyance - few seconds of silence every ~44 seconds, but I guess it is best then nothing. Of course it is free software.

Ivaylo Valkov <valkov>
Group administrator
Thu 29 Sep 2011 06:58:19 PM UTC, comment #5: 

And here's the TCP dump for www.cdr.cr (which is the LETio-streaming site I use the most). Actually, just obtaining the .asx or whatever would be fine for me.

(file #24049)

Anonymous
Thu 29 Sep 2011 01:07:09 PM UTC, comment #4: 

It is probably a good idea to clear the browser cache before the capture.

Ivaylo Valkov <valkov>
Group administrator
Thu 29 Sep 2011 01:03:54 PM UTC, comment #3: 

If you could provide a tcpdump/wireshark capture it could help. I've examined some JavaScript and HTML code and got some clues. It seems sites use similar technique to embed the stream.

For tcpdump use the following command:

sudo tcpdump -i eth0 -C 10000000 -w letio_dump -W 3 -s 65535 port 80

If your network interface is not eth0, replace eth0. To quit the capture type Ctrl+c. Saved files are named letio_dump.*.

If you prefer GUI, use wireshark. Start it with sudo and select Capture/Options. In the new window set the interface, and the capture filter (HTTP). Check "Use multiple files". Set "Next file every" to 10 megabytes, uncheck "Ring buffer with". Set "Stop capture after" to 3 files. Choose a filename for the capture. When ready start the live capture.

While capturing, it is best to have only the websites of interest loaded. All transmitted data over HTTP will be visible in the captured files.

When a website loads and few seconds fter playback starts you should turn off the capture.

Ivaylo Valkov <valkov>
Group administrator
Wed 28 Sep 2011 05:40:10 PM UTC, comment #2: 

The major site I'm aware of that uses LETio is www.cdr.cr where it's used for both radio and TV streams. Currently I'm using Ubuntu with Flash (sadly), and I'd like to have support via this script, since my tests with Gnash and Lightspark have failed. I am willing to do any tests that you require.

Anonymous
Wed 28 Sep 2011 07:11:32 AM UTC, comment #1: 

There is no useful information at the LETio web site about the players and the technology. It has text only in Spanish. Machine translated text with Apertium does not say much about embedding and configuring the player. This information could be useful.

Few links point to Escuchemos.com where it seems they have demos or working streams.

From the little information I've gathered it seems the only way to find the stream URLs is by examining JavaScript and HTML code the websites serve.

Disassembling the swf file with swfmill or flasm could provide some pointers.

Could you provide more websites where LETio players are used?

If you use the proprietary flash plugin (I doubt it), you could provide a traffic dump with tcpdump or Wireshark. If you are not using it don't install it just for that.

I can't promise anything.

Ivaylo Valkov <valkov>
Group administrator
Fri 25 Nov 2011 01:38:56 PM UTC, original submission:  

LETio ( http://www.letio.com/ ) is a Flash-based stream system that generates several AAC streams, and automatically switches to the one that causes the least latency. It's primarily used by online radio stations, and occasionally on TV stations (via H.264). Currently, LETio is incompatible with both Gnash and Lightspark. There should be a way to take the address of the stream with the highest quality and forward it to a media player.

Anonymous

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

Attached Files
file #24049:  letio_dump0 added by None (1MiB - application/octet-stream - Dump for LETio)

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by valkov (Posted a comment)
  • -email is unavailable- added by None (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only logged-in users can vote.

     

    Follow 4 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2011-11-25 valkov StatusNone Fixed
        Open/ClosedOpen Closed
        ReleaseNone 0.1
    2011-11-25 valkov Reassign itemLinterna Mágica, sr #107821 Lithionite, bug #34895

    Back to the top

    Powered by Savane 3.14-0608.
    Corresponding source code