norulesjustfeels / fling Goto Github PK
View Code? Open in Web Editor NEWFling media to a ChromeCast device
Fling media to a ChromeCast device
I am trying to run fling.jar. And after exploring a bit, I received APPID and launched the fling.jar with APPID as a command line argument. But I am still not able to run any media to Chromecast. Please find below the console log below:
Chetans-Macbook-Pro-2:Downloads Apple$ java -jar fling.jar XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Fling: Fling version 0.6
Fling: Mac OS X
Fling: VLC available
Fling: App ID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Fling: set to system default LaF
Fling: createAndShowGUI
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FlingFrame: Started web server on port 8080
Oct 12, 2013 11:41:29 PM com.entertailion.java.fling.Log i
INFO: BroadcastDiscoveryClient: Starting client on address /239.255.255.250
Oct 12, 2013 11:41:29 PM com.entertailion.java.fling.Log i
INFO: BroadcastDiscoveryClient: Broadcast client thread starting.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
BroadcastDiscoveryClient: response=HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
DATE: Sat, 12 Oct 2013 18:11:35 GMT
EXT:
LOCATION: http://192.168.1.146:8008/ssdp/device-desc.xml
OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01
01-NLS: c78422ba-1dd1-11b2-ac45-f41e3cef7c5f
SERVER: Linux/3.8.13, UPnP/1.0, Portable SDK for UPnP devices/1.6.18
X-User-Agent: redsonic
ST: urn:dial-multiscreen-org:service:dial:1
USN: uuid:3db19f46-b3a9-17f4-c127-b17814bae45c::urn:dial-multiscreen-org:service:dial:1
BOOTID.UPNP.ORG: 19
CONFIGID.UPNP.ORG: 1
BroadcastDiscoveryClient: tokens.length=13
FlingFrame: location=http://192.168.1.146:8008/ssdp/device-desc.xml
FlingFrame: appsUrl=http://192.168.1.146:8008/apps/
FlingFrame: modelName=Eureka Dongle
FlingFrame: ChromeCast device found: 192.168.1.146
Oct 12, 2013 11:41:44 PM com.entertailion.java.fling.Log i
INFO: BroadcastDiscoveryClient: Exiting client loop.
FlingFrame: size=1
FileDrop: dragEnter event.
FileDrop: normal border saved.
FileDrop: drag border set.
FileDrop: event accepted.
FileDrop: dragExit event.
FileDrop: normal border restored.
FileDrop: dragEnter event.
FileDrop: normal border saved.
FileDrop: drag border set.
FileDrop: event accepted.
FileDrop: drop event.
FileDrop: file list accepted.
DragHereIcon: /Users/Apple/Music/iTunes/iTunes Media/Music/Unknown Artist/Unknown Album/bah phad ke nachan nu.mp3
FlingFrame: sendMediaUrl=/Users/Apple/Music/iTunes/iTunes Media/Music/Unknown Artist/Unknown Album/bah phad ke nachan nu.mp3
FlingFrame: prefix=192.
FlingFrame: interface=en1
FlingFrame: address=/fe80:0:0:0:7ed1:c3ff:fe7e:d1ec%5
FlingFrame: address=/192.168.1.246
FlingFrame: networkAddress=/192.168.1.246
RampClient: device=http://192.168.1.146:8008
RampClient: apps url=http://192.168.1.146:8008/apps/
RampClient: get response code=200
RampClient: lastUrl=http://192.168.1.146:8008/apps/00000000-0000-0000-0000-000000000000
RampClient: get response=<?xml version="1.0" encoding="UTF-8"?>
<service xmlns="urn:dial-multiscreen-org:schemas:dial">
<name>00000000-0000-0000-0000-000000000000</name>
<options allowStop="true"/>
<state>running</state>
<link rel="run" href="web-27"/>
<servicedata xmlns="urn:chrome.google.com:cast">
<connectionSvcURL>http://192.168.1.146:8008/connection/00000000-0000-0000-0000-000000000000</connectionSvcURL>
<protocols>
<protocol>com.google.chromecast.home</protocol>
</protocols>
</servicedata>
</service>
RampClient: Content-Type=application/xml
RampClient: Content-Length=530
RampClient: delete response code=200
RampClient: delete response=
RampClient: get response code=404
RampClient: get response=
FileDrop: drop complete.
FileDrop: normal border restored.
FileDrop: dragEnter event.
FileDrop: normal border saved.
FileDrop: drag border set.
FileDrop: event accepted.
FileDrop: drop event.
FileDrop: file list accepted.
DragHereIcon: /Users/Apple/Documents/IMG_0194.MOV
FlingFrame: sendMediaUrl=/Users/Apple/Documents/IMG_0194.MOV
FlingFrame: prefix=192.
FlingFrame: interface=en1
FlingFrame: address=/fe80:0:0:0:7ed1:c3ff:fe7e:d1ec%5
FlingFrame: address=/192.168.1.246
FlingFrame: networkAddress=/192.168.1.246
RampClient: get response code=200
RampClient: lastUrl=http://192.168.1.146:8008/apps/00000000-0000-0000-0000-000000000000
RampClient: get response=<?xml version="1.0" encoding="UTF-8"?>
<service xmlns="urn:dial-multiscreen-org:schemas:dial">
<name>00000000-0000-0000-0000-000000000000</name>
<options allowStop="true"/>
<state>running</state>
<link rel="run" href="web-28"/>
<servicedata xmlns="urn:chrome.google.com:cast">
<connectionSvcURL>http://192.168.1.146:8008/connection/00000000-0000-0000-0000-000000000000</connectionSvcURL>
<protocols>
<protocol>com.google.chromecast.home</protocol>
</protocols>
</servicedata>
</service>
I have downloaded fling.jar from http://goo.gl/HAc9ex and using OSX 10.8.3.
I verified that I am whitelisted correctly and I am running this on Mac OS X 10.8.5.
The use case is a simple one, load up the jar via command line passing through my app id and dragging and dropping a video into the program. The screen turns black until I eventually hit the stop button.
Logs: https://gist.github.com/DHuckaby/05688cf4953e82dd8839
Edit:
Also, I tried multiple different video files and they all reacted the same. I tried both with compiling the application from master and from the linked jar in the readme, the logs above are from the readme jar.
$ java -jar target/Fling-0.0.1-SNAPSHOT-jar-with-dependencies.jar
Fling: Fling version 0.6
Fling: Mac OS X
Fling: VLC available
Fling: set to system default LaF
Fling: createAndShowGUI
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FlingFrame: Started web server on port 8080
Sep 28, 2013 12:17:22 AM com.entertailion.java.fling.Log i
INFO: BroadcastDiscoveryClient: Starting client on address /239.255.255.250
Sep 28, 2013 12:17:22 AM com.entertailion.java.fling.Log i
INFO: BroadcastDiscoveryClient: Broadcast client thread starting.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
Sep 28 00:17:22 pc18.home java[15169] : CGContextGetCTM: invalid context 0x0
Sep 28 00:17:22 pc18.home java[15169] : CGContextSetBaseCTM: invalid context 0x0
Sep 28 00:17:22 pc18.home java[15169] : CGContextGetCTM: invalid context 0x0
Sep 28 00:17:22 pc18.home java[15169] : CGContextSetBaseCTM: invalid context 0x0
BroadcastDiscoveryClient: response=HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
DATE: Fri, 27 Sep 2013 22:17:29 GMT
EXT:
LOCATION: http://192.168.0.99:8008/ssdp/device-desc.xml
OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01
01-NLS: 7c818360-1dd2-11b2-b56c-984d36bccc82
SERVER: Linux/3.8.13, UPnP/1.0, Portable SDK for UPnP devices/1.6.18
X-User-Agent: redsonic
ST: urn:dial-multiscreen-org:service:dial:1
USN: uuid:c8b9ed1f-6133-7b6e-72fc-f4b2f6175466::urn:dial-multiscreen-org:service:dial:1
BOOTID.UPNP.ORG: 97
CONFIGID.UPNP.ORG: 1
BroadcastDiscoveryClient: tokens.length=13
FlingFrame: location=http://192.168.0.99:8008/ssdp/device-desc.xml
FlingFrame: appsUrl=http://192.168.0.99:8008/apps/
FlingFrame: modelName=Eureka Dongle
FlingFrame: ChromeCast device found: 192.168.0.99
Sep 28, 2013 12:17:37 AM com.entertailion.java.fling.Log i
INFO: BroadcastDiscoveryClient: Exiting client loop.
FlingFrame: size=1
FileDrop: dragEnter event.
FileDrop: normal border saved.
FileDrop: drag border set.
FileDrop: event accepted.
FileDrop: drop event.
FileDrop: file list accepted.
DragHereIcon: /Volumes/video/Margin.Call.avi
FlingFrame: sendMediaUrl=/Volumes/video/myvideo.avi
FlingFrame: Available port for VLC: 8081
FlingFrame: prefix=192.
FlingFrame: interface=vboxnet0
FlingFrame: address=/192.168.56.1
FlingFrame: networkAddress=/192.168.56.1
FlingFrame: url=http://192.168.56.1:8081/cast.webm
RampClient: device=http://192.168.0.99:8008
RampClient: apps url=http://192.168.0.99:8008/apps/
RampClient: get response code=204
RampClient: get response code=404
RampClient: get response=
FileDrop: drop complete.
FileDrop: normal border restored.
I do not what's it going on when I drag & drop my movie file ?
I have a NAS . This is where all my large MKV files are. This NAS has an HTTP server already so it can serve up the the files itself.
It would be great if I can just specify the URL of the file in fling, and have it tell chromecast to play it. I dont need transcoding,
The following error is produced when I drop a file into Fling running in a command prompt:
java.lang.RuntimeException: Failed to load the native library.
The error was "Unable to load library 'libvlc': JNA native support (win32-amd64/
libvlc.dll) not found in resource path (Fling-0.0.1-SNAPSHOT-jar-with-dependenci
es.jar)".
The required native libraries are named "libvlc.dll" and "libvlccore.dll".
I've verified that the libraries are located on my system at C:\Program Files (x86)\VideoLAN\VLC
Running the command as the additional output suggests with "-Djna.library.path=C:\Program Files (x86)\VideoLAN\VLC"
does not fix the issue.
I don't see an email address for you, but wanted to let you know that I have a rooted Chromecast with FlashCast and Pwn ROM
I think with this ROM there is a totally separated Cleanlist of apps which is maintained by a XDA developer. Thus a totally different way to bypass Google's cleanlist of allowable apps.
Unfortunately the newest chromecasts for sale are not rootable.
Someone had a link to flink 0.3 and it works flawlessly.
I found a link to fling.jar 0.6 and it does not work.
This is rather odd.
Regards
[email protected]
I had something like hackathon today and made something like how to setup Fling from scratch, but not just tutorial. My project deals with receiver URLs, which are required by Google to create App ID. The key point of the service is to ease using Fling application.
http://chromecast.prostoksi.com
BTW, I've put this project on github under MIT license: https://github.com/frol/Fling-receiver.
What do you think about this project?
Every time I drop in a video the log loops at
RampClient: state=running
RampClient: connectionServiceUrl=null
RampClient: protocol=null
RampClient: get response code=200
RampClient: get response=<?xml version="1.0" ecoding="UTF-8"?>
<service xmlns="urn:dial-multiscreen-org:schemas:dial"
<name>00000000-0000-0000-0000-0000000000000000</name>
<state>running</state>
<servicedata xmlns="urn:chrome.google.com:cast">
<activity-status xmlns="urn:chrome.google.com:cast">
Chromecast Home Screen
</activity status>
and I have to end the task to stop the loop
I've been using Fling for a while now with no issues, but today nothing works anymore. I can't get any videos to play, even videos I watched just yesterday. Does it have something to do with this: https://plus.google.com/110558071969009568835/posts/ZeHgRXS6AZs?
Here are the errors I'm getting when I hit play:
Exception in thread "AWT-EventQueue-0" org.java_websocket.exceptions.WebsocketNotConnectedException
at org.java_websocket.WebSocketImpl.send(WebSocketImpl.java:577)
at org.java_websocket.WebSocketImpl.send(WebSocketImpl.java:554)
at org.java_websocket.client.WebSocketClient.send(WebSocketClient.java:171)
at com.entertailion.java.fling.RampClient.play(RampClient.java:520)
at com.entertailion.java.fling.FlingFrame$3.actionPerformed(FlingFrame.java:210)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
It seems there has been an update to the DIAL protocol or something. This was working great for me for months, but now trying to play a video results in a log entry that connectionServiceUrl is null, and fails. I tried debugging the XML coming from the device to see if it was simply a name change of a parameter, but couldn't seem to find any information about the connectionServiceUrl there.
My guess is you are probably not working on this anymore, but figured I would post something in case others have the issue.
Whenever I watch a letterboxed movie, it is not centered on the screen with black bars above and below. Rather, the movie is at the top of the screen with double black bars below.
For those of you that are having an issue with the wrong media uri (the address from which you media is being served) being sent to your chromecast device, I suggest editing the prefix var in FlingFrame.java getNetworAddress() to something more specific...IE "192.168.1." or whatever applies....
In my case, my bridge network interface was being used rather than the active wifi interface I was using. Once I modified the prefix it worked like a charm.
I would be very happy if I could script or perhaps use a web call to the running Fling app to start a video on my ChromeCast.
Here's how things would ideally work:
Start Fling, it'll start a web service providing these calls at minimum:
getChromeCasts returns a page with an id and a description of each chromecast discovered.
startStreaming?id=1&file="C:\tmp\video.mpg" (url escaped of course)
Doing this would allow for me to write a simple .net app that I can browse with my phone, and in the future an android app that allows me to select a video file and launches it on the ChromeCast.
Alternatively, a command line option would work as well, but would be a bit more clunky.
Here is the log. Everything works fine until I try to drop anything. I did select the CC device. I'm running Kubuntu 13.04. The file has 777 permissions. No difference when ran as sudo.
java -jar Downloads/fling.jar
Linux
Fling: createAndShowGUI
Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 9: reading configurations from ~/.fonts.conf is deprecated.
Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 9: reading configurations from ~/.fonts.conf is deprecated.
FileDrop: FileDrop: Hierarchy changed.
FileDrop: FileDrop: Drop target added to component.
FileDrop: FileDrop: Hierarchy changed.
FileDrop: FileDrop: Drop target added to component.
FileDrop: FileDrop: Hierarchy changed.
FileDrop: FileDrop: Drop target added to component.
FileDrop: FileDrop: Hierarchy changed.
FileDrop: FileDrop: Drop target added to component.
FlingFrame: address=/fe80:0:0:0:6a94:23ff:fe2f:f3ad%wlan0
FlingFrame: address=/192.168.0.140
FlingFrame: broadcast=/192.168.0.255
Aug 21, 2013 11:03:07 PM com.entertailion.java.fling.Log i
INFO: BroadcastDiscoveryClient: Starting client on address /192.168.0.255
FlingFrame: Started web server on port 8080
Aug 21, 2013 11:03:07 PM com.entertailion.java.fling.Log i
INFO: BroadcastDiscoveryClient: Broadcast client thread starting.
FileDrop: FileDrop: Hierarchy changed.
FileDrop: FileDrop: Drop target added to component.
FileDrop: FileDrop: Hierarchy changed.
FileDrop: FileDrop: Drop target added to component.
FileDrop: FileDrop: Hierarchy changed.
FileDrop: FileDrop: Drop target added to component.
FileDrop: FileDrop: Hierarchy changed.
FileDrop: FileDrop: Drop target added to component.
BroadcastDiscoveryClient: response=HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
DATE: Thu, 22 Aug 2013 03:03:11 GMT
EXT:
LOCATION: http://192.168.0.38:8008/ssdp/device-desc.xml
OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01
01-NLS: 3b32aa56-1dd2-11b2-80be-a7d53bf13c17
SERVER: Linux/3.0.8-gc22f275, UPnP/1.0, Portable SDK for UPnP devices/1.6.18
X-User-Agent: redsonic
ST: urn:dial-multiscreen-org:service:dial:1
USN: uuid:b203c318-04de-779b-d6bf-cb53bfe9b487::urn:dial-multiscreen-org:service:dial:1
BOOTID.UPNP.ORG: 36
CONFIGID.UPNP.ORG: 5
BroadcastDiscoveryClient: tokens.length=13
FlingFrame: location=http://192.168.0.38:8008/ssdp/device-desc.xml
BroadcastDiscoveryClient: response=HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
DATE: Thu, 22 Aug 2013 03:03:14 GMT
EXT:
LOCATION: http://192.168.0.38:8008/ssdp/device-desc.xml
OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01
01-NLS: 3b32aa56-1dd2-11b2-80be-a7d53bf13c17
SERVER: Linux/3.0.8-gc22f275, UPnP/1.0, Portable SDK for UPnP devices/1.6.18
X-User-Agent: redsonic
ST: urn:dial-multiscreen-org:service:dial:1
USN: uuid:b203c318-04de-779b-d6bf-cb53bfe9b487::urn:dial-multiscreen-org:service:dial:1
BOOTID.UPNP.ORG: 36
CONFIGID.UPNP.ORG: 5
BroadcastDiscoveryClient: tokens.length=13
FlingFrame: location=http://192.168.0.38:8008/ssdp/device-desc.xml
FlingFrame: appsUrl=http://192.168.0.38:8008/apps/
FlingFrame: modelName=Eureka Dongle
FlingFrame: ChromeCast device found: 192.168.0.38
FlingFrame: size=1
Aug 21, 2013 11:03:17 PM com.entertailion.java.fling.Log i
INFO: BroadcastDiscoveryClient: Exiting client loop.
FlingFrame: appsUrl=http://192.168.0.38:8008/apps/
FlingFrame: modelName=Eureka Dongle
FlingFrame: ChromeCast device found: 192.168.0.38
FileDrop: FileDrop: dragEnter event.
FileDrop: FileDrop: normal border saved.
FileDrop: FileDrop: drag border set.
FileDrop: FileDrop: event accepted.
FileDrop: FileDrop: dragExit event.
FileDrop: FileDrop: normal border restored.
FileDrop: FileDrop: dragEnter event.
FileDrop: FileDrop: normal border saved.
FileDrop: FileDrop: drag border set.
FileDrop: FileDrop: event accepted.
FileDrop: FileDrop: dragEnter event.
FileDrop: FileDrop: normal border saved.
FileDrop: FileDrop: drag border set.
FileDrop: FileDrop: event accepted.
FileDrop: FileDrop: drop event.
FileDrop: FileDrop: file list accepted.
FileDrop: FileDrop: Exception - abort:
java.awt.dnd.InvalidDnDOperationException: data translation failed
at sun.awt.dnd.SunDropTargetContextPeer.getTransferData(SunDropTargetContextPeer.java:270)
at sun.awt.datatransfer.TransferableProxy.getTransferData(TransferableProxy.java:73)
at java.awt.dnd.DropTargetContext$TransferableProxy.getTransferData(DropTargetContext.java:376)
at com.entertailion.java.fling.FileDrop$1.drop(FileDrop.java:330)
at java.awt.dnd.DropTarget.drop(DropTarget.java:450)
at sun.awt.dnd.SunDropTargetContextPeer.processDropMessage(SunDropTargetContextPeer.java:540)
at sun.awt.X11.XDropTargetContextPeer.processDropMessage(XDropTargetContextPeer.java:184)
at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchDropEvent(SunDropTargetContextPeer.java:854)
at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchEvent(SunDropTargetContextPeer.java:778)
at sun.awt.dnd.SunDropTargetEvent.dispatch(SunDropTargetEvent.java:48)
at java.awt.Component.dispatchEventImpl(Component.java:4733)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4700)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4872)
at java.awt.LightweightDispatcher.processDropTargetEvent(Container.java:4606)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4452)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2724)
at java.awt.Component.dispatchEvent(Component.java:4700)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:743)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:716)
at java.awt.EventQueue$4.run(EventQueue.java:714)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:713)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:220)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:135)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:123)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:119)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:111)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
FileDrop: FileDrop: normal border restored.
Exception in thread "AWT-EventQueue-0" java.awt.dnd.InvalidDnDOperationException: invalid rejectDrop()
at sun.awt.dnd.SunDropTargetContextPeer.rejectDrop(SunDropTargetContextPeer.java:648)
at java.awt.dnd.DropTargetContext.rejectDrop(DropTargetContext.java:208)
at java.awt.dnd.DropTargetDropEvent.rejectDrop(DropTargetDropEvent.java:242)
at com.entertailion.java.fling.FileDrop$1.drop(FileDrop.java:383)
at java.awt.dnd.DropTarget.drop(DropTarget.java:450)
at sun.awt.dnd.SunDropTargetContextPeer.processDropMessage(SunDropTargetContextPeer.java:540)
at sun.awt.X11.XDropTargetContextPeer.processDropMessage(XDropTargetContextPeer.java:184)
at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchDropEvent(SunDropTargetContextPeer.java:854)
at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchEvent(SunDropTargetContextPeer.java:778)
at sun.awt.dnd.SunDropTargetEvent.dispatch(SunDropTargetEvent.java:48)
at java.awt.Component.dispatchEventImpl(Component.java:4733)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4700)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4872)
at java.awt.LightweightDispatcher.processDropTargetEvent(Container.java:4606)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4452)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2724)
at java.awt.Component.dispatchEvent(Component.java:4700)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:743)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:716)
at java.awt.EventQueue$4.run(EventQueue.java:714)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:713)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:220)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:135)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:123)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:119)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:111)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
Hi!
So VLC has a nice option to transcode video on-the-fly to many different formats including h.264+mp3 in an .mp4 container-- so completely supported by the chromecast. VLC handles creating the HTTP server already. I don't know if they have a Java compatible API, but it seems like your drag-n-drop interface could just call up vlc with something like:
:sout=#transcode{vcodec=h264,vb=0,scale=0,acodec=mpga,ab=128,channels=2,samplerate=44100}:http{dst=:8080/current_movie.mp4} :sout-keep
that is, transcode to h.264+mp3, output to http://<my_ip_address>:8080/current_movie.mp4
. Just point your chromecast there and you should stream it down, yes?
I understand that the CheapCast implementation might be incomplete (they don't implement the tab streaming so far for instance), but I wouldn't know and this might be an opportunity for collaboration between projects.
Thanks for the great tool otherwise :)
This isn't really an issue, so much as a question. When transcoding media, there is at on of console output with strange characters, along the lines of
write(42): {�����E�~zs�.7e�xbn�.!<�B]Q� 9}�hDw�.!)�}
On windows, this is creating beeps for certain characters it can't interpret.
I can't seem to figure out where this logging output is coming from. Can you point me in the right direction?
First, mister Nicholls, a big thank you for releasing this application as open source and for providing so much feedback.
Now that I had it working (it wasn't explicitly said that one needs to run an http server with the receiver html - but finding it myself makes the glory even bigger), I noticed that my computer is in fact too old to transcode it. The CPU shoots to 100 percent, and the video is lagging.
I remembered however that Koushik Dutta succeeded in something similar with android as a platform, and remembered that he was talking about encoding/decoding. I've looked it up, a here's the post:
https://plus.google.com/110558071969009568835/posts/5fWK26rqitc
I speaks for itself that I have no experience on this stuff, so it could well be that I'm talking big rubbish here. However, I wanted to know if an implementation of this kind in Fling in somehow possible? If not, would you be so kind to give a more in-depth view on why - just out of curiousity on my side?
Thank you in advance for your answer,
Erwin
Please, add a small test video.
My avi test video not start.
https://dl.dropboxusercontent.com/u/4155549/dove.avi
Thanks, Francisco
I write you an email but here again as remember ...
Please add a version number in fling to see if there is a new version.
I'm running fling OX 10.9.2 by executing java -jar fling.jar
. Then I'm drag-dropping a 8.8 GB .mkv file from a folder shared by a Windows 7 pc in my local network. This causes fling to hang for as long as I leave it running. I tried analyzing the Output [1] and found a 404
error [2] but I can't tell what causes it.
[1] https://gist.github.com/doque/ea4e158e4ab5dccae969
[2] https://gist.github.com/doque/ea4e158e4ab5dccae969#file-output-L105
Hi, why isn't scrobbing enabled while transcoding ?
i tried opening the vlc cast url using the receiver app by changing the src attribute on the video tag and chrome's native video player allowed me to change positions...
i'm wondering what are the limitations ...
thanks !
Hello,
First, thanks for working on this application. I hope to get it running and perhaps contribute myself. Could you please help debug this issue?
Fling: Fling version 0.6
Fling: Windows 7
Fling: Found VLC at windows location 2: C:/Users/dwayne/Downloads/vlc-2.1.0-win64/vlc-2.1.0
Fling: VLC available
Fling: set to system default LaF
Fling: createAndShowGUI
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FlingFrame: Started web server on port 8080
Nov 10, 2013 12:27:46 AM com.entertailion.java.fling.Log i
INFO: BroadcastDiscoveryClient: Starting client on address /239.255.255.250
Nov 10, 2013 12:27:46 AM com.entertailion.java.fling.Log i
INFO: BroadcastDiscoveryClient: Broadcast client thread starting.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
BroadcastDiscoveryClient: response=HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
DATE: Sun, 10 Nov 2013 06:27:52 GMT
EXT:
LOCATION: http://192.168.0.3:8008/ssdp/device-desc.xml
OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01
01-NLS: b398bdae-1dd1-11b2-b693-ceac539c66ee
SERVER: Linux/3.8.13, UPnP/1.0, Portable SDK for UPnP devices/1.6.18
X-User-Agent: redsonic
ST: urn:dial-multiscreen-org:service:dial:1
USN: uuid:b9615bb5-872a-de1a-1838-e1e6aaebaa2c::urn:dial-multiscreen-org:service:dial:1
BOOTID.UPNP.ORG: 40
CONFIGID.UPNP.ORG: 1
BroadcastDiscoveryClient: tokens.length=13
FlingFrame: location=http://192.168.0.3:8008/ssdp/device-desc.xml
FlingFrame: appsUrl=http://192.168.0.3:8008/apps/
FlingFrame: modelName=Eureka Dongle
FlingFrame: ChromeCast device found: 192.168.0.3
FlingFrame: size=1
Nov 10, 2013 12:28:01 AM com.entertailion.java.fling.Log i
INFO: BroadcastDiscoveryClient: Exiting client loop.
FileDrop: dragEnter event.
FileDrop: normal border saved.
FileDrop: drag border set.
FileDrop: event accepted.
FileDrop: dragExit event.
FileDrop: normal border restored.
FileDrop: dragEnter event.
FileDrop: normal border saved.
FileDrop: drag border set.
FileDrop: event accepted.
FileDrop: drop event.
FileDrop: file list accepted.
DragHereIcon: G:\downloads\Boardwalk.Empire.S01.DVDRip.XviD-REWARD\boardwalk.empire.s01e03.dvdrip.xvid-reward.avi
FlingFrame: sendMediaUrl=G:\downloads\Boardwalk.Empire.S01.DVDRip.XviD-REWARD\boardwalk.empire.s01e03.dvdrip.xvid-reward.avi
FlingFrame: Available port for VLC: 8081
FlingFrame: prefix=192.
FlingFrame: interface=lo
FlingFrame: address=/127.0.0.1
FlingFrame: address=/0:0:0:0:0:0:0:1
FlingFrame: interface=net0
FlingFrame: interface=net1
FlingFrame: interface=net2
FlingFrame: interface=ppp0
FlingFrame: interface=eth0
FlingFrame: interface=eth1
FlingFrame: interface=eth2
FlingFrame: interface=ppp1
FlingFrame: interface=net3
FlingFrame: interface=eth3
FlingFrame: address=/fe80:0:0:0:5824:26ff:7bcf:f01e%11
FlingFrame: interface=net4
FlingFrame: address=/192.168.0.4
FlingFrame: networkAddress=/192.168.0.4
FlingFrame: url=http://192.168.0.4:8081/cast.webm
RampClient: device=http://192.168.0.3:8008
RampClient: apps url=http://192.168.0.3:8008/apps/
RampClient: get response code=200
RampClient: lastUrl=http://192.168.0.3:8008/apps/00000000-0000-0000-0000-000000000000
RampClient: get response=
00000000-0000-0000-0000-000000000000
running
RampClient: Content-Type=application/xml
RampClient: Content-Length=323
RampClient: delete response code=200
RampClient: delete response=
RampClient: get response code=404
RampClient: get response=
FileDrop: drop complete.
FileDrop: normal border restored.
-=-= end log -=-=
Is that 404 from RampClient indicative of a problem? Also, when I see "RampClient: lastUrl=http://192.168.0.3:8008/apps/00000000-0000-0000-0000-000000000000" in the logs, should all of these 0's instead my my APP ID?
I have a few APP ID's and I want to make sure I'm using the right one. I didn't include the entire APP ID for obvious reasons. I wasn't sure if we needed to include the port # when we requested the whitelisting, so I did one without.
...b293 -> http://192.168.0.2:8080/index.html
...b293_1 -> http://192.168.0.3:8080/index.html
...b293_2 -> http://192.168.0.4:8080/index.html
...b293_3 -> http://192.168.0.2/index.html
ChromeCast will always be 192.168.0.3 and the computer I'm running on is usually 192.168.0.2 (I can reserve that IP for my MAC address, but I haven't yet).
I can can manually connect to that URL above, but it is obviously unreadable...and seems to keep sending data.
Finally -- and this could be important, I am running this from inside Eclipse. This worries me because it might have trouble finding my index.html file (perhaps others, too?). I dropped a copy into my project root folder (because this is often my current working directory).
Thanks,
-Dwayne
The idea is pretty simple, just add App ID input into settings.
First of all, I wanted to thank you a lot for this software. Chromecast was starting to be useless without this useful software.
Secondly, I am unable to stream local files with the API key as well. I drag the file, but nothing happens on the device. Here is my error log. Could anyone look and suggest possible cause of errors?
java -jar fling.jar 7add939c-9f00-4a0a-9244-d7ec4f9163dc
Fling: Fling version 0.6
Fling: Linux
Fling: VLC available
Fling: App ID: 7add939c-9f00-4a0a-9244-d7ec4f9163dc
Fling: set to system default LaF
Fling: createAndShowGUI
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FlingFrame: Started web server on port 8080
Oct 08, 2013 10:32:55 PM com.entertailion.java.fling.Log i
INFO: BroadcastDiscoveryClient: Starting client on address /239.255.255.250
Oct 08, 2013 10:32:55 PM com.entertailion.java.fling.Log i
INFO: BroadcastDiscoveryClient: Broadcast client thread starting.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
BroadcastDiscoveryClient: response=HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
DATE: Wed, 09 Oct 2013 03:32:57 GMT
EXT:
LOCATION: http://192.168.1.11:8008/ssdp/device-desc.xml
OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01
01-NLS: 9149b496-1dd2-11b2-bcc7-b1a1c04cf3a8
SERVER: Linux/3.8.13, UPnP/1.0, Portable SDK for UPnP devices/1.6.18
X-User-Agent: redsonic
ST: urn:dial-multiscreen-org:service:dial:1
USN: uuid:765a6788-ec22-b460-9b6b-bf6fd82b59b3::urn:dial-multiscreen-org:service:dial:1
BOOTID.UPNP.ORG: 2
CONFIGID.UPNP.ORG: 1
BroadcastDiscoveryClient: tokens.length=13
FlingFrame: location=http://192.168.1.11:8008/ssdp/device-desc.xml
FlingFrame: appsUrl=http://192.168.1.11:8008/apps/
FlingFrame: modelName=Eureka Dongle
FlingFrame: ChromeCast device found: 192.168.1.11
FlingFrame: size=1
Oct 08, 2013 10:33:10 PM com.entertailion.java.fling.Log i
INFO: BroadcastDiscoveryClient: Exiting client loop.
FileDrop: dragEnter event.
FileDrop: normal border saved.
FileDrop: drag border set.
FileDrop: event accepted.
FileDrop: dragEnter event.
FileDrop: normal border saved.
FileDrop: drag border set.
FileDrop: event accepted.
FileDrop: drop event.
FileDrop: file list accepted.
DragHereIcon: /home/artemis/Videos/intouchazt.avi
FlingFrame: sendMediaUrl=/home/artemis/Videos/intouchazt.avi
FlingFrame: Available port for VLC: 8081
FlingFrame: prefix=192.
FlingFrame: interface=wlan0
FlingFrame: address=/fe80:0:0:0:213:2ff:fed5:31f%3
FlingFrame: address=/192.168.1.2
FlingFrame: networkAddress=/192.168.1.2
FlingFrame: url=http://192.168.1.2:8081/cast.webm
RampClient: device=http://192.168.1.11:8008
RampClient: apps url=http://192.168.1.11:8008/apps/
RampClient: get response code=200
RampClient: lastUrl=http://192.168.1.11:8008/apps/00000000-0000-0000-0000-000000000000
RampClient: get response=
00000000-0000-0000-0000-000000000000
running
RampClient: Content-Type=application/xml
RampClient: Content-Length=661
RampClient: delete response code=200
RampClient: delete response=
RampClient: get response code=404
RampClient: get response=
FileDrop: drop complete.
FileDrop: normal border restored.
Thanks a lot!
Hi,
First of thanks for creating this handy app.
I keep getting Brain Freeze error when I try to start a video.
I have received a APP ID from google and added it to index.html and FlingFrame.java. I've changed my CC settings to send the serial number to google for updates.
I've tried the url that i provided for my whitelisting to see that it works.
Finally I've tried to debug and find out when it fails. I came to the conclusion that in the file HttpServer.java (ln: 697). CC changes to brain freeze when it tries to write the data to the output stream.
If you could help me I would appreciate it. :)
Here is the log btw.
Fling: Fling version 0.6
Fling: Windows 8
Fling: Found VLC at C:\Program Files\VideoLAN\VLC
Fling: VLC available
Fling: set to system default LaF
Fling: createAndShowGUI
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FlingFrame: Started web server on port 8080
okt 16, 2013 11:06:14 EM com.entertailion.java.fling.Log i
INFO: BroadcastDiscoveryClient: Starting client on address /192.168.0.101
okt 16, 2013 11:06:14 EM com.entertailion.java.fling.Log i
INFO: BroadcastDiscoveryClient: Broadcast client thread starting.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FileDrop: Hierarchy changed.
FileDrop: Drop target added to component.
FlingFrame: size=0
okt 16, 2013 11:06:29 EM com.entertailion.java.fling.Log i
INFO: BroadcastDiscoveryClient: Exiting client loop.
FileDrop: dragEnter event.
FileDrop: normal border saved.
FileDrop: drag border set.
FileDrop: event accepted.
FileDrop: dragExit event.
FileDrop: normal border restored.
FileDrop: dragEnter event.
FileDrop: normal border saved.
FileDrop: drag border set.
FileDrop: event accepted.
FileDrop: drop event.
FileDrop: file list accepted.
DragHereIcon: C:\Users\HalifBakri\Videos\Unpacked\video.mp4
FlingFrame: sendMediaUrl=C:\Users\HalifBakri\Videos\Unpacked\video.mp4
FlingFrame: prefix=192.
FlingFrame: interface=lo
FlingFrame: address=/127.0.0.1
FlingFrame: address=/0:0:0:0:0:0:0:1
FlingFrame: interface=net0
FlingFrame: interface=net1
FlingFrame: interface=net2
FlingFrame: interface=net3
FlingFrame: interface=ppp0
FlingFrame: interface=eth0
FlingFrame: interface=eth1
FlingFrame: interface=eth2
FlingFrame: interface=eth3
FlingFrame: interface=ppp1
FlingFrame: interface=eth4
FlingFrame: address=/192.168.0.107
FlingFrame: networkAddress=/192.168.0.107
RampClient: device=http://192.168.0.101:8008
RampClient: apps url=http://192.168.0.101:8008/apps/
RampClient: get response code=200
RampClient: lastUrl=http://192.168.0.101:8008/apps/00000000-0000-0000-0000-00000
0000000
RampClient: get response=
00000000-0000-0000-0000-000000000000
running
RampClient: Content-Type=application/xml
RampClient: Content-Length=531
RampClient: delete response code=200
RampClient: delete response=
RampClient: get response code=200
RampClient: get response=
8319bd0c-b12a-4388-8359-98eb04c4e191_1
stopped
RampClient: state=stopped
RampClient: post response code=201
RampClient: post response=
RampClient: post response location=http://192.168.0.101:8008/apps/8319bd0c-b12a-
4388-8359-98eb04c4e191_1/web-161
RampClient: Access-Control-Allow-Methods=GET, POST, DELETE, OPTIONS
RampClient: Access-Control-Expose-Headers=Location
RampClient: Location=http://192.168.0.101:8008/apps/8319bd0c-b12a-4388-8359-98eb
04c4e191_1/web-161
RampClient: Access-Control-Allow-Origin=chrome-extension://boadgeojelhgndaghljhd
icfkmllpafd
RampClient: Content-Length=0
RampClient: get response code=200
RampClient: get response=
8319bd0c-b12a-4388-8359-98eb04c4e191_1
running
RampClient: state=running
RampClient: connectionServiceUrl=null
RampClient: protocol=null
EmbeddedServer: GET '/'
RampClient: get response code=200
RampClient: get response=
8319bd0c-b12a-4388-8359-98eb04c4e191_1
stopped
RampClient: state=stopped
RampClient: connectionServiceUrl=null
RampClient: protocol=null
okt 16, 2013 11:06:43 EM com.entertailion.java.fling.Log i
INFO: RampClient: connectionServiceUrl is null
FileDrop: drop complete.
FileDrop: normal border restored.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.