Kodi Community Forum

Full Version: [RELEASE] veetle.com
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
plugh, i played it in vlc and it played fine as flv.. thats all they are doing, they are changing the FLV header in the stream, this way it will only play on their player and cancels out any other player out there without mod.

The old one that worked: 46 4C 56 01 05 00 00 00 09 FLV.......
the new one            : 47 47 47 01 05 00 00 00 09 GGG.......

FLV Header Signature
Field         Data Type     Example                  Description
Signature     byte[3]       “FLV”                    Always “FLV”
Version       uint8         “\x01” (1)               Currently 1 for known FLV files
Flags         uint8 bitmask “\x05” (5, audio+video)  Bitmask: 4 is audio, 1 is video
Offset        uint32_be     “\x00\x00\x00\x09” (9)   Total size of header (always 9 for known FLV files)

I decompiled the player swf yesterday and looked around but same couldn't find any references, and yea i noticed the date on the filename was 824, they must have changed the code to recognize the change, the old one was playerComputer_20120125, i dont code actionscript so it could be bypassing or assuming flv, or doing some other conversions.

basically we need xbmc to treat GGG as FLV to fix this issue.

(2012-08-28, 13:14)plugh Wrote: [ -> ]Gull, tuxen, etc - it is NOT the add-on; veetle have changed the actual stream data...

netimports - did you play the cap'd & hak'd stream with vlc or xbmc? As a .flv file??


Assuming the FLV->GGG prefix is really all they did, I got to wondering, how THEY are handling this.

Inspection of a channel web page html (very bottom of the file) reveals /minified/HEXSTRING_minified.js. Nearly impossible to read, but nonetheless I found http://veetle.com/flash/playerComputer_20120824.swf
Interesting filename - Aug 24 2012 - just before the stream format change...
Snagged a copy of the file, but didn't find 'ggg' embedded in it. Any swf hackers out there??

Another interesting thing in the minified.js - looks like there is some html5 support in there.
Perhaps we can sidestep flash entirely? Would mean a completely new addon?? (ugh)

PS - the african channel is now behaving the same as the others (ie 'GGG' prefix)

the file from their website is still flv
Why did they change the header from flv to ggg? To prevent other programs from decoding their streams? Or are they planning to switch to html5 or both?
no other reason but to disable external players, they make money from overlay ads on their player and external viewers don't help line their pockets.
My head hurts...

XBMC's 'dvdplayer' is built around ffmpeg code. I dug into the xbmc4xbox flavor (which I was a bit more familiar with) and located CDVDDemuxFFmpeg::Open in dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp.

This routine pulls in avutil, avcodec, and avformat dlls (built from ffmpeg sources), initializes data structures via m_dllAvFormat.av_register_all, then tries to ID the input via m_dllAvFormat.av_probe_input_buffer. Eventually this gets to libavformat/flvdec.c routine
00058 static int flv_probe(AVProbeData *p)
00059 {
00060     const uint8_t *d;
00062     d = p->buf;
00063     if (d[0] == 'F' && d[1] == 'L' && d[2] == 'V' && d[3] < 5 && d[5]==0 && AV_RB32(d+5)>8) {
00064         return AVPROBE_SCORE_MAX;
00065     }
00066     return 0;
00067 }
If someone is doing their own build, it would be trivial tweak to recognize FLV and GGG. But...
1) getting ffmpeg group to include such a change in their code base would be flat out impossible
2) getting xbmc group to maintain their own tweaked version of this module is highly unlikely
3) I don't see any way to work around it in the xbmc dvdplayer code at the moment...

I'll think about it some more, but wanted to post current findings...
thanks for the info plugh, managed to recompile the dll to recognize the GGG:


[Updated] updated dll to recognize both GGG and FLV, make sure you backup the old dll in case you need to revert.



1. Shutdown xbmc, Download the dll from the above link
2. Find your xbmc folder and navigate to the dvdplayer folder e.g. Program Files (x86)\XBMC\system\players\dvdplayer) or Program Files\XBMC\system\players\dvdplayer
3. Rename avformat-52.dll to avformat-52.dll.bak
4. Copy the downloaded dll into that folder
5. Start xbmc

After the file replacement the videos will start playing again.
p.s. this was tested on windows / xbmc 11.0
Why not mod the test to check for both FLV and GGG?

if ( ( (d[0] == 'F' && d[1] == 'L' && d[2] == 'V') || (d[0] == 'G' && d[1] == 'G' && d[2] == 'G') ) && d[3] < 5 && d[5]==0 && AV_RB32(d+5)>8) {

PS, aren't xbmc4xbox 3.1 and 3.2 using avformat-53.dll now?
im using windows, v11 of xbmc which uses 52.. the dll has been updated to recognize both FLV/GGG, thanks plugh
WOW, it works fantastic on Windows version of XBMC and doesnt break any other plugins that I have. Great work!

My main XBMC machine runs OSX, is it possible for you to do the same to the necessary file in OSX also for us. Thanks in advance
I run XBMCuntu and also have the problem.
I wonder if there is a way to handle this inside the add-on otherwise the codec library for each platform is going to need to be edited.
I'm new to all this so I have no idea what the architecture limits of the add-ons are.
its needs to be changed for every platform, i got access to windows, no mac/linux.. not sure but should be the same, you would need to download the source and in lib/ffmpeg/libavformat/flvdec.c change to what plugh posted and then compile it. Its cumbersome but that's the solution so far..
Well Im willing to try it myself so can you help? What should I edit the flvdec.c file with, and what should I compile it with for an OSX environment. Thanks again for your help?
I'm not proficient in compiling, but it would be great if someone could post one for IOS (atv and ipad if they are diff). Also i dont have ios SDK and dont have a mac for xcode.

netimports: is there a way to edit the flvdec.c file to recognise FLV and a 3 char string stored in a text file, so if they again change the header, all we have to do is edit the text file, this way we dont have to keep recompiling libavformat if they change the header again.

Come on people, go back and read what was said earlier. Any solution that involves tweaking flvdec.c is impractical for a variety of reasons.

IMHO there are two possibly viable solution approaches.

1) Avoid the probe. For example, have the script TELL xbmc+dvdplayer that it is a 'http flash video stream'. However, I don't know a) if there *is* a code path that avoids the flv_probe or b) if there is a way to trigger that hypothetical code path via the python script interpreter.

2) Abandon the flash streams. There are hints in the veetle html+js of html5 support. What happens when you visit veetle with Chrome browser (without flash) or with ipad? If the site 'works' then there are non-flash streams available which a new / modified add-on script could tap.

Any volunteers?

(p.s. similar approaches for VLC might be possible via its LUA interpreter)
there are html5 streams there and have been for ages on my ipad 2..
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31