Giter Site home page Giter Site logo

heroku-buildpack-ffmpeg's Introduction

Heroku buildpack: FFMpeg

This is a Heroku buildpack for using ffmpeg in your project.
It doesn't do anything else, so to actually compile your app you should use heroku-buildpack-multi to combine it with a real buildpack.

Usage

To use this buildpack, you should prepare .buildpacks file that contains this buildpack url and your real buildpack url.

$ ls
.buildpacks
...

$ cat .buildpacks
https://github.com/shunjikonishi/heroku-buildpack-ffmpeg
https://github.com/heroku/heroku-buildpack-play

$ heroku create --buildpack https://github.com/ddollar/heroku-buildpack-multi

$ git push heroku master
...

You can verify installing ffmpeg by following command.

$ heroku run "ffmpeg -version"

Hacking

If you want to use your own ffmpeg binary, fork and rewrite following line.

https://github.com/shunjikonishi/heroku-buildpack-ffmpeg/blob/master/bin/compile#L10

heroku-buildpack-ffmpeg's People

Contributors

ddollar avatar dzuelke avatar oguzbilgic avatar shunjikonishi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

heroku-buildpack-ffmpeg's Issues

Register buildpack in buildpack registry

My name is Jon Byrum and I’m a product manager at Heroku. Your buildpack is one of the top 200 most popular buildpacks on Heroku!

I would like to invite you to publish your buildpack early in our Buildpack Registry, before it is made available to the general public (expected early July).

To register your buildpack, visit: https://addons-next.heroku.com/buildpacks
Documentation: https://devcenter.heroku.com/articles/buildpack-registry

Why register?

  • By registering early you’ll be able to grab your preferred namespace for the buildpack
  • After registering, your buildpack will be available to all Heroku users when they run heroku buildpacks:search. In the future, we will only display registered buildpacks on elements.heroku.com/buildpacks
  • The Buildpack Registry makes it easy for you to publish a new version of your buildpack, as well as roll back if there are errors

Recommended naming conventions:

  • We recommend that you use the same namespace (e.g., jbyrum) with Buildpack Registry that you use on GitHub
  • In general, avoid using "buildpack" in the name of your registered buildpack
    • For example: If your Github repo is github.com/foobar/heroku-buildpack-elixir, then we recommend a name like "foobar/elixir"

It would be greatly appreciated if you could publish before June 18th, as we prepare to make the feature publicly available. Registering a buildpack should take approximately 5 minutes.

If you have any questions about registering (or run into any issues), please email:
[email protected]

Unknown encoder 'libx264'

this is my .buildpacks

https://github.com/shunjikonishi/heroku-buildpack-ffmpeg
https://github.com/heroku/heroku-buildpack-ruby.git

but it says that the libx264 is missing.so how can i explicitly install and include it.Below is my log from papertrail..

Apr 21 13:06:01 video-convertor app/web.1: cache: [GET /assets/delete.png] miss
Apr 21 13:08:01 video-convertor app/web.1: Started POST "/videos" for 180.188.254.229 at 2014-04-21 20:08:00 +0000
Apr 21 13:08:01 video-convertor app/web.1: Processing by VideosController#create as HTML
Apr 21 13:08:01 video-convertor app/web.1: "create==========="
Apr 21 13:08:01 video-convertor app/web.1: {"utf8"=>"✓", "authenticity_token"=>"+IbL4Hc9cpnip6kImnSx13UikqAkXzXDpGw98gWKxe0=", "video"=>{"avatar"=>#<ActionDispatch::Http::UploadedFile:0x000000010963b0 @original_filename="Wildlife.wmv", @content_type="video/x-ms-wmv", @headers="Content-Disposition: form-data; name="video[avatar]"; filename="Wildlife.wmv"\r\nContent-Type: video/x-ms-wmv\r\n", @tempfile=#File:/tmp/RackMultipart20140421-2-m92l6l>, "convert"=>"flv"}, "action"=>"create", "controller"=>"videos"}
Apr 21 13:08:01 video-convertor app/web.1: [paperclip] [ffmpeg] ffprobe "/tmp/Wildlife20140421-2-1k8rhl7.wmv" 2>&1
Apr 21 13:08:01 video-convertor app/web.1: Parameters: {"utf8"=>"✓", "authenticity_token"=>"+IbL4Hc9cpnip6kImnSx13UikqAkXzXDpGw98gWKxe0=", "video"=>{"avatar"=>#<ActionDispatch::Http::UploadedFile:0x000000010963b0 @original_filename="Wildlife.wmv", @content_type="video/x-ms-wmv", @headers="Content-Disposition: form-data; name="video[avatar]"; filename="Wildlife.wmv"\r\nContent-Type: video/x-ms-wmv\r\n", @tempfile=#File:/tmp/RackMultipart20140421-2-m92l6l>, "convert"=>"flv"}}
Apr 21 13:08:02 video-convertor app/web.1: libavutil 52. 34.100 / 52. 34.100
Apr 21 13:08:02 video-convertor app/web.1: libavcodec 55. 13.100 / 55. 13.100
Apr 21 13:08:02 video-convertor app/web.1: libavformat 55. 8.102 / 55. 8.102
Apr 21 13:08:02 video-convertor app/web.1: libavdevice 55. 2.100 / 55. 2.100
Apr 21 13:08:02 video-convertor app/web.1: libavfilter 3. 74.101 / 3. 74.101
Apr 21 13:08:02 video-convertor app/web.1: libswscale 2. 3.100 / 2. 3.100
Apr 21 13:08:02 video-convertor app/web.1: libswresample 0. 17.102 / 0. 17.102
Apr 21 13:08:02 video-convertor app/web.1: [asf @ 0x1545850] Stream #0: not enough frames to estimate rate; consider increasing probesize
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] An error was received while processing: #<Paperclip::Error: error while processing video for Wildlife20140421-2-1k8rhl7: Command 'ffmpeg -i '/tmp/Wildlife20140421-2-1k8rhl7.wmv' -vcodec libvpx -b 250k -bt 50k -acodec libvorbis -ab 56k -ac 2 -s 520x292 -f webm -y '/tmp/Wildlife20140421-2-1k8rhl720140421-2-p4g8fn.webm'' returned 1. Expected 0
Apr 21 13:08:02 video-convertor app/web.1: Here is the command output:
Apr 21 13:08:02 video-convertor heroku/router: at=info method=POST path=/videos host=video-convertor.herokuapp.com request_id=a84551e4-c359-421d-af11-43bcef88ba2c fwd="180.188.254.229" dyno=web.1 connect=2ms service=111112ms status=200 bytes=7821
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Command Success
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Making...
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Building Destination File: 'Wildlife20140421-2-1k8rhl7' + 'webm'
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Destination File Built
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Adding Geometry
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Extracting Target Dimensions
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Target Size is Available
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Keeping Aspect Ratio
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Resize
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Convert Options: 520x292
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Adding Format
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Adding Source
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Building Parameters
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] -i :source -vcodec libvpx -b 250k -bt 50k -acodec libvorbis -ab 56k -ac 2 -s 520x292 -f webm -y :dest
Apr 21 13:08:02 video-convertor app/web.1: Command :: ffmpeg -i '/tmp/Wildlife20140421-2-1k8rhl7.wmv' -vcodec libvpx -b 250k -bt 50k -acodec libvorbis -ab 56k -ac 2 -s 520x292 -f webm -y '/tmp/Wildlife20140421-2-1k8rhl720140421-2-p4g8fn.webm'
Apr 21 13:08:02 video-convertor app/web.1: Guessed Channel Layout for Input Stream #0.0 : stereo
Apr 21 13:08:02 video-convertor app/web.1: Input #0, asf, from '/tmp/Wildlife20140421-2-1k8rhl7.wmv':
Apr 21 13:08:02 video-convertor app/web.1: Metadata:
Apr 21 13:08:02 video-convertor app/web.1: SfOriginalFPS : 299700
Apr 21 13:08:02 video-convertor app/web.1: WMFSDKVersion : 11.0.6001.7000
Apr 21 13:08:02 video-convertor app/web.1: WMFSDKNeeded : 0.0.0.0000
Apr 21 13:08:02 video-convertor app/web.1: comment : Footage: Small World Productions, Inc; Tourism New Zealand | Producer: Gary F. Spradling | Music: Steve Ball
Apr 21 13:08:02 video-convertor app/web.1: title : Wildlife in HD
Apr 21 13:08:02 video-convertor app/web.1: copyright : © 2008 Microsoft Corporation
Apr 21 13:08:02 video-convertor app/web.1: IsVBR : 0
Apr 21 13:08:02 video-convertor app/web.1: DeviceConformanceTemplate: AP@L3
Apr 21 13:08:02 video-convertor app/web.1: Duration: 00:00:30.09, start: 0.000000, bitrate: 6977 kb/s
Apr 21 13:08:02 video-convertor app/web.1: Stream #0:0(eng): Audio: wmav2 (a[1][0][0] / 0x0161), 44100 Hz, stereo, fltp, 192 kb/s
Apr 21 13:08:02 video-convertor app/web.1: >
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] ffprobe "/tmp/Wildlife20140421-2-1k8rhl7.wmv" 2>&1
Apr 21 13:08:02 video-convertor app/web.1: ffmpeg version git-2013-06-02-5711e4f Copyright (c) 2000-2013 the FFmpeg developers
Apr 21 13:08:02 video-convertor app/web.1: built on Jun 2 2013 07:38:40 with gcc 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)
Apr 21 13:08:02 video-convertor app/web.1: configuration: --enable-shared --disable-asm --prefix=/app/vendor/ffmpeg
Apr 21 13:08:02 video-convertor app/web.1: libavutil 52. 34.100 / 52. 34.100
Apr 21 13:08:02 video-convertor app/web.1: libavcodec 55. 13.100 / 55. 13.100
Apr 21 13:08:02 video-convertor app/web.1: libavformat 55. 8.102 / 55. 8.102
Apr 21 13:08:02 video-convertor app/web.1: libavdevice 55. 2.100 / 55. 2.100
Apr 21 13:08:02 video-convertor app/web.1: libavfilter 3. 74.101 / 3. 74.101
Apr 21 13:08:02 video-convertor app/web.1: libswscale 2. 3.100 / 2. 3.100
Apr 21 13:08:02 video-convertor app/web.1: libswresample 0. 17.102 / 0. 17.102
Apr 21 13:08:02 video-convertor app/web.1: Stream #0:1(eng): Video: vc1 (Advanced) (WVC1 / 0x31435657), yuv420p, 1280x720, 5942 kb/s, 29.97 tbr, 1k tbn, 1k tbc
Apr 21 13:08:02 video-convertor app/web.1: Please use -b:a or -b:v, -b is ambiguous
Apr 21 13:08:02 video-convertor app/web.1: Unknown encoder 'libvpx'
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Command Success
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Making...
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Building Destination File: 'Wildlife20140421-2-1k8rhl7' + 'flv'
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Destination File Built
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Adding Geometry
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Extracting Target Dimensions
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Target Size is Available
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Keeping Aspect Ratio
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Resize
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Convert Options: 520x292
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Adding Format
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Adding Source
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] Building Parameters
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] [ffmpeg] -i :source -vcodec libx264 -b 1000000 -ar 22050 -acodec mp3 -ab 56k -ac 2 -s 520x292 -y :dest
Apr 21 13:08:02 video-convertor app/web.1: Command :: ffmpeg -i '/tmp/Wildlife20140421-2-1k8rhl7.wmv' -vcodec libx264 -b 1000000 -ar 22050 -acodec mp3 -ab 56k -ac 2 -s 520x292 -y '/tmp/Wildlife20140421-2-1k8rhl720140421-2-vo3uhl.flv'
Apr 21 13:08:02 video-convertor app/web.1: [asf @ 0x228f830] Stream #0: not enough frames to estimate rate; consider increasing probesize
Apr 21 13:08:02 video-convertor app/web.1: [paperclip] An error was received while processing: #<Paperclip::Error: error while processing video for Wildlife20140421-2-1k8rhl7: Command 'ffmpeg -i '/tmp/Wildlife20140421-2-1k8rhl7.wmv' -vcodec libx264 -b 1000000 -ar 22050 -acodec mp3 -ab 56k -ac 2 -s 520x292 -y '/tmp/Wildlife20140421-2-1k8rhl720140421-2-vo3uhl.flv'' returned 1. Expected 0
Apr 21 13:08:02 video-convertor app/web.1: Here is the command output:
Apr 21 13:08:02 video-convertor app/web.1: >
Apr 21 13:08:02 video-convertor app/web.1: [deprecated] I18n.enforce_available_locales will default to true in the future. If you really want to skip validation of your locale you can set I18n.enforce_available_locales = false to avoid this message.
Apr 21 13:08:02 video-convertor app/web.1: cache: [POST /videos] invalidate, pass
Apr 21 13:08:02 video-convertor app/web.1: Guessed Channel Layout for Input Stream #0.0 : stereo
Apr 21 13:08:02 video-convertor app/web.1: Input #0, asf, from '/tmp/Wildlife20140421-2-1k8rhl7.wmv':
Apr 21 13:08:02 video-convertor app/web.1: Metadata:
Apr 21 13:08:02 video-convertor app/web.1: SfOriginalFPS : 299700
Apr 21 13:08:02 video-convertor app/web.1: WMFSDKVersion : 11.0.6001.7000
Apr 21 13:08:02 video-convertor app/web.1: WMFSDKNeeded : 0.0.0.0000
Apr 21 13:08:02 video-convertor app/web.1: comment : Footage: Small World Productions, Inc; Tourism New Zealand | Producer: Gary F. Spradling | Music: Steve Ball
Apr 21 13:08:02 video-convertor app/web.1: title : Wildlife in HD
Apr 21 13:08:02 video-convertor app/web.1: copyright : © 2008 Microsoft Corporation
Apr 21 13:08:02 video-convertor app/web.1: IsVBR : 0
Apr 21 13:08:02 video-convertor app/web.1: DeviceConformanceTemplate: AP@L3
Apr 21 13:08:02 video-convertor app/web.1: Duration: 00:00:30.09, start: 0.000000, bitrate: 6977 kb/s
Apr 21 13:08:02 video-convertor app/web.1: Stream #0:0(eng): Audio: wmav2 (a[1][0][0] / 0x0161), 44100 Hz, stereo, fltp, 192 kb/s
Apr 21 13:08:02 video-convertor app/web.1: Stream #0:1(eng): Video: vc1 (Advanced) (WVC1 / 0x31435657), yuv420p, 1280x720, 5942 kb/s, 29.97 tbr, 1k tbn, 1k tbc
Apr 21 13:08:02 video-convertor app/web.1: Please use -b:a or -b:v, -b is ambiguous
Apr 21 13:08:02 video-convertor app/web.1: Unknown encoder 'libx264'
Apr 21 13:08:02 video-convertor app/web.1: Rendered videos/_form.html.erb (10.8ms)
Apr 21 13:08:02 video-convertor app/web.1: Rendered videos/new.html.erb within layouts/application (11.4ms)

Cannot read temporary files in /tmp/

I created a nodejs application hosted on heroku which uses imagemagick. I am doing this operation:

require('child_process').exec(`convert -quiet -delay 1 output.avi ${gif}`);

This should convert output.avi (which is present) to a gif file. In this case, gif is "../gifs/xstrycatdq.gif". This command works perfectly on my local windows machine.

I have installed heroku buildpack:

The error I am receiving is:

Command failed: convert -quiet -delay 1 output.avi ../gifs/xstrycatdq.gif
convert: DelegateFailed 'ffmpeg' -nostdin -v -1 -vframes %S -i '%i' -vcodec pam -an -f rawvideo -y '%u.pam' 2> '%Z'' @ error/delegate.c/InvokeDelegate/1919.
convert: UnableToOpenBlobmagick-58hSkEGyYprU5c.pam': No such file or directory @ error/blob.c/OpenBlob/2705.
convert: NoImagesDefined `../gifs/xstrycatdq.gif' @ error/convert.c/ConvertImageCommand/3257.
It seems that the /tmp/ directory can't be written to or anything. I also tried to mkdir /tmp/ but bash tells me that this dir already exists.

I have also tried changing the imagemagick's temp directory with the environment variable by doing export MAGICK_TMPDIR="temp".

Any help?

Problems converting video file: Unrecognized option 'preset'

Using this buildpack, I was able to install ffmpeg version git-2013-06-02-5711e4f for my Heroku app. When I try to convert a video file, though, I get the following error:

2013-11-17T19:45:05.255059+00:00 app[web.1]: Running transcoding...
2013-11-17T19:45:05.255059+00:00 app[web.1]: ffmpeg -y -i /app/public/uploads/tmp/1384717504-2-9158/Untitled.mov -vcodec libx264 -acodec libfaac -s 640x360 -qscale 0 -preset slow -g 30 -aspect 1.7777777777777777 /app/public/uploads/tmp/1384717504-2-9158/tmpfile.mp4
2013-11-17T19:45:05.255059+00:00 app[web.1]:
2013-11-17T19:45:05.317895+00:00 app[web.1]: Failed encoding...
2013-11-17T19:45:05.317895+00:00 app[web.1]: ffmpeg -y -i /app/public/uploads/tmp/1384717504-2-9158/Untitled.mov -vcodec libx264 -acodec libfaac -s 640x360 -qscale 0 -preset slow -g 30 -aspect 1.7777777777777777 /app/public/uploads/tmp/1384717504-2-9158/tmpfile.mp4
2013-11-17T19:45:05.317895+00:00 app[web.1]:
2013-11-17T19:45:05.317895+00:00 app[web.1]: ffmpeg version git-2013-06-02-5711e4f Copyright (c) 2000-2013 the FFmpeg developers
2013-11-17T19:45:05.317895+00:00 app[web.1]: built on Jun 2 2013 07:38:40 with gcc 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)
2013-11-17T19:45:05.317895+00:00 app[web.1]: configuration: --enable-shared --disable-asm --prefix=/app/vendor/ffmpeg
2013-11-17T19:45:05.317895+00:00 app[web.1]: libavutil 52. 34.100 / 52. 34.100
2013-11-17T19:45:05.317895+00:00 app[web.1]: libavcodec 55. 13.100 / 55. 13.100
2013-11-17T19:45:05.317895+00:00 app[web.1]: libavformat 55. 8.102 / 55. 8.102
2013-11-17T19:45:05.317895+00:00 app[web.1]: libavdevice 55. 2.100 / 55. 2.100
2013-11-17T19:45:05.318137+00:00 app[web.1]: libavfilter 3. 74.101 / 3. 74.101
2013-11-17T19:45:05.318137+00:00 app[web.1]: libswscale 2. 3.100 / 2. 3.100
2013-11-17T19:45:05.318137+00:00 app[web.1]: libswresample 0. 17.102 / 0. 17.102
2013-11-17T19:45:05.318137+00:00 app[web.1]: Unrecognized option 'preset'.
2013-11-17T19:45:05.318137+00:00 app[web.1]: Error splitting the argument list: Option not found
2013-11-17T19:45:05.318137+00:00 app[web.1]:
2013-11-17T19:45:05.318137+00:00 app[web.1]: Errors: no output file created.

Full details here: http://stackoverflow.com/questions/20035338/ffmpeg-on-heroku-unrecognized-option-preset

update ffmpeg to 2.5

I'd like to update the buildpack to 2.5 ffmpeg. How did you compile/get binaries? Thx.

I'm trying to do the following.

  • Download source
~ $ DOWNLOAD_URL="https://ffmpeg.org/releases/ffmpeg-2.5.tar.gz"
~ $ curl -L --silent $DOWNLOAD_URL | tar xz
  • Compile with the same configure as local
cd ffmpeg-2.5/
./configure --prefix=/Volumes/Ramdisk/sw --enable-gpl --enable-pthreads --enable-version3 --enable-libspeex --enable-libvpx --disable-decoder=libvpx --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-avfilter --enable-libopencore_amrwb --enable-libopencore_amrnb --enable-filters --enable-libgsm --enable-libvidstab --enable-libx265 --arch=x86_64 --enable-runtime-cpudetect
  • Copy file from the server
    just copy binaries to static and download

There is a problem with compilation step

./configure
yasm/nasm not found or too old. Use --disable-yasm for a crippled build.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.