Git Product home page Git Product logo

Comments (37)

MattMcManis avatar MattMcManis commented on May 23, 2024

I'll see about adding FFV1 in the next update.

For now there are only the presets default, light, medium, heavy for denoising.

But you can select Denoise Heavy and press the Script button and change the value of threshold and steps in vaguedenoiser=threshold=6:method=soft:nsteps=5.

Here are more details on the filter:
https://ffmpeg.org/ffmpeg-filters.html#vaguedenoiser

Then press the Run button.

from axiom.

Monteco avatar Monteco commented on May 23, 2024

from axiom.

MattMcManis avatar MattMcManis commented on May 23, 2024

from axiom.

Monteco avatar Monteco commented on May 23, 2024

from axiom.

Monteco avatar Monteco commented on May 23, 2024

from axiom.

MattMcManis avatar MattMcManis commented on May 23, 2024

from axiom.

DumbJoe avatar DumbJoe commented on May 23, 2024

....so, still planning on adding lossless coded FFV1? Or nah? Coz the latest Alpha, I don't see FFV1 anywhere in the MKV container option.....also while we're at it, any plans on the other lossless video codecs? Like LAagarith, Utvideo, MSU and Huffyuv?

And what about more channel support for FLAC? I notice there is only 4 options - source, stereo, mono and 5.1 - I believe FLAC supports more than just these 4 options.....

I have a huge ass 500GB RAW footage I would like to transcode to lossless format for both audio and video for archival and storage purposes and to use as the master.......and it would seem you do not offer lossless video code, but do offer FLAC which is lossless audio...what's going on there? Which we're on the lossless audio codec subject here, if I pick source for FLAC, does that mean it would also transcode any and all spartial, ie fake channels in or leave those out as well, like what handbrake does as it doesn't support 7.1 nor fake channels?

Yes I could transcode to x.264 with a constant rate factor of zero, but that isn't exactly lossless.....as I experienced this with handbrake and I can still see some loss in quality in various places if I look hard enough....plus handbrake down coverts the full RGB colourspace to 4:2:0 whatever, which is also not a lossless transcode....

from axiom.

MattMcManis avatar MattMcManis commented on May 23, 2024

from axiom.

MattMcManis avatar MattMcManis commented on May 23, 2024

from axiom.

DumbJoe avatar DumbJoe commented on May 23, 2024

The reason it's missing some lossless codecs is because the program began as a very simple webm converter and I started adding the more popular codecs over time. A popular combination I've seen is MKV with x265 10-bit / FLAC.

Ah I see, thought you were trying to replace the many programs here: https://github.com/amiaopensource/ffmpeg-amia-wiki/wiki/3)-Graphical-User-Interface-Applications-using-FFmpeg which are now basically out of date or appear to be abandoned....except Handbrake - that seems to still be in active development, except it doesn't really have as much options as I would like, such as lossless video codec FFV1.....they appear to mainly focus on the x264 and the new x265 codecs coupled with probably lossy AAC audio codec, though they do have FLAC available to use if you're keen on lossless audio transcode.

I will have to ask the FFmpeg devs more about this.

Do please get back to me on that whatever the reasoning is, but yeah, according to that link, 7.1 should be supportable....

I will work on adding FFV1, Huffyuv, and Lagarith in the next release in a few days.

What about MSU and Utvideo?

I have added FFV1 and released a new version 1.5.3 for you to test.

Thanks, will give that a whirl....

I don't know if 2 Pass gives better quality, but I see it used here https://avpres.net/FFmpeg/im_MKV.html

Usually more than one pass gives a better quality but unless you have the patience to wait or and doing it on like less than 20GB files, but in this case since all codecs is lossless which means you can't really get any better quality than the original input, the only thing that would probably change is the file size, being slightly smaller....and that slightly, even if it's just a few megabytes I would happily wait to do a two or more pass of it....since this is for archiving and storage purposes after all anyways, so there's no rush to get this out as quickly as possible.... But I'll do both, one with one pass and the other with two pass to see if there is any difference in file size....

I've had to hardcode the FFV1 version 3 Parameters to default values. https://trac.ffmpeg.org/wiki/Encode/FFV1

Of course, naturally you would want the latest version.....

from axiom.

MattMcManis avatar MattMcManis commented on May 23, 2024

I've only used Handbrake and Avanti a few years ago, but haven't tried the others on that list. I've been developing Axiom as I learn C#, and use it to batch convert videos for my own projects. And it's great to see other people have used it for their work.

I used to keep multiple webm and mp4 FFmpeg scripts in a text file that I would copy paste and modify to convert videos, but I thought wouldn't it be much easier if I made a program that would generate the scripts for me.

I tried to focus on a UI that sets the correct dropdown menus for each codec, to prevent from choosing an incompatible setting on accident. And Auto Quality mode, which uses FFprobe bitrate detection, so that if someone doesn't know the correct settings they can leave it on Auto and still get a good encode.

I will also see about adding Utvideo, but I don't see MSU listed in the FFmpeg codecs.

I read that the pixel format for FFV1 should be yuv422p10le, so I set it as the default, but you can change it to anything you need.

I've fixed a few bugs in the latest version 1.5.3.3. Let me know if you come across any or if the program generates any wrong commands in the script. It should be becoming very stable now.

from axiom.

DumbJoe avatar DumbJoe commented on May 23, 2024

but I don't see MSU listed in the FFmpeg codecs

Hmmmm, it seems to be Proprietary from here: www.compression.ru/video/ls-codec/index_en.html wikipedia: https://en.wikipedia.org/wiki/MSU_Lossless_Video_Codec so it doesn't seem to be associated with ffmpeg which probably why it's not in its codecs.... I only got that codec from reading various videohelp forum topics where they were having an argument on which lossless video codec was best...haha

Default pixel format is fine as long as there are options to change to something else if your source material is RGB, for example.

FFMPEG isn't multithreaded is it? Otherwise it's gonna take a while to transcode a 100GB+ file......on a single core/thread on a multicore CPU.....pegged at 100%.....whilst all other cores are sitting idly by, unless you managed to overclock your cores to like over 10Ghz, preferably 40Ghz to compensate using a single core on an 8 core CPU that's rated for 5Ghz each, assuming you've managed to get it stable at this high of a clock rating.....hah.... I've only done left Handbrake to digest such big files..... Ah I guess I'll find out when I transcode to FFV1....

I guess while you're on this, may as well add every other lossless codec possible that can be transcoded in ffmpeg, whether by itself or if it requires third party files to make it happen(maybe ffmpeg needs third party files to transcode MSU lossless codec?), for thoroughness. ☺hahaha. ..

from axiom.

MattMcManis avatar MattMcManis commented on May 23, 2024

I've updated the Pixel Formats for all codecs in v1.5.4.0. Some codecs are limited in formats, but FFV1 can use many.

I believe it is multithreaded, but may depend on the codec. In the Settings Tab in Axiom, look for Threads dropdown menu. Select the amount your CPU has, or select all. The optimal option -threads 0 lets FFmpeg decide but sometimes it's not as fast. You will see the result generated in the Script window.

For x265, VP9, AV1, the encoding takes a really long time. With FFV1 I would recommend testing the quality on a small piece of the video, maybe 1 minute, using Cut under Format Tab -ss 00:00:00.000 -to 00:01:00.000 (Hours:Minutes:Seconds.Milliseconds).

For now I'd only want to add the most popular lossless codecs so not to clutter up the menus with too many options.

from axiom.

DumbJoe avatar DumbJoe commented on May 23, 2024

Thanks, now to get my other computer working again which has the file(s) I need to transcode with.....windows updates seems to have broken the computer and it now gets stuck at "Personalizing Settings (Not Responding)" with a black background screen and has been like that for the past 3 days....so it doesn't look like it's gonna be loading anytime soon if it's been hanging for 3 days like that! hahahaha ...any ideas? :P Bah, I won't pull you into this problem of mine - you probably already got heaps to deal with already; I guess I'll figure this one out myself..... hahaha

For now I'd only want to add the most popular lossless codecs so not to clutter up the menus with too many options.

Ok fair enough. ☺

from axiom.

MattMcManis avatar MattMcManis commented on May 23, 2024

I'm unsure how to fix that windows problem. There seem to be some answers online. I read in here someone pressed Ctrl+Alt+Delete and were able to sign out and restart and it fixed it. Maybe you could also start in safe mode and see if it passes the Personalize Settings screen.

from axiom.

DumbJoe avatar DumbJoe commented on May 23, 2024

Yeah, I can boot into safe mode but it's not quite same as using it normal mode....plus my mouse is really sensitive without razor synapse running and can't run that without internet connection.....oh and I'm on windows 7 btw....not 10. ☺

Also that rundll32.exe pnpclean.dll,RunDLL_PnpClean /DRIVERS /MAXCLEAN doesn't work anyways because I get a windows saying "There was a problem starting pnpclean.dll The specified module could not be found."

Hmmmm.... :|

from axiom.

MattMcManis avatar MattMcManis commented on May 23, 2024

Take a look here. Be careful not to corrupt your registry when editing it. Also if you have the Windows 7 disc, run a startup repair.

http://www.justinswan.com/windows-7-stuck-on-personalized-settings-for-windows-desktop-update.html

https://www.sysprobs.com/fix-temporary-profile-windows-7

I'll let you know when I add more codecs to the program.

from axiom.

MattMcManis avatar MattMcManis commented on May 23, 2024

@DumbJoe

I've added HuffYUV Codec, check the latest build. Also if you use FFV1 Lossless, make sure it selects yuv422p10le, a bug was making it accidentally default to yuv422p in the last version.

from axiom.

DumbJoe avatar DumbJoe commented on May 23, 2024

Take a look here. Be careful not to corrupt your registry when editing it. Also if you have the Windows 7 disc, run a startup repair.

http://www.justinswan.com/windows-7-stuck-on-personalized-settings-for-windows-desktop-update.html

https://www.sysprobs.com/fix-temporary-profile-windows-7

Sorry, the computer decided to no longer cooperate with me....hah....took a while to figure out that clearing CMOS fixed that.....

No it doesn't look like that fixed it, unfortunately......it still halts at the "Personalizing settings" but without the (not responding) part but at least get a default background, instead of the black one....maybe I should have backed up the registry.......before deleting stuff.....and startup repair disc just says my windows is not compatible.....rip......

I've added HuffYUV Codec, check the latest build. Also if you use FFV1 Lossless, make sure it selects yuv422p10le, a bug was making it accidentally default to yuv422p in the last version.

Doesn't the colour profile also depends on the source material? Because if source is YUV444 or RGB, then yuv422p10le would be a lossy transcode which would be ironic if you intended to transcode to a lossless format for the purpose of preserving original material quality....

from axiom.

MattMcManis avatar MattMcManis commented on May 23, 2024

You're right. For FFV1, which color profile do you think is best to set as default?

bgra
yuv444p
yuv444p10le

Here's a list of the supported profiles for that codec https://pastebin.com/raw/7V82kQ49

from axiom.

DumbJoe avatar DumbJoe commented on May 23, 2024

Whoa, that's a lot! Is it possible that your program can auto detect the colour space and pick the correct equivalent by default? That would probably be the best choice for default; because then an average joe who doesn't know a thing about all these technical jargon could go "ok, I guess I'll just let the program best choose my ideal settings for me. " or add tooltips what their use case with examples....

Speaking of which, are you able to add in various transcode profiles, just like how handbrake has it on theirs so an average joe could just click on a profile that reads like what he thinks is acceptable and just go with that and all the guess work is done for them? For example have a transcode profile that's fit for uploading to youtube in various resolution options or a transcode profile that's best for viewing on mobile devices, etc., just take a look at what the authors of hanbrake has done to theirs....

from axiom.

MattMcManis avatar MattMcManis commented on May 23, 2024

I'm not able to find the FFprobe command to detect pixel format or color space, I'm not sure if it's in the file properties, so it's not able to auto detect.

I could possibly make more Preset Profiles with extending dropdown menu levels.

from axiom.

DumbJoe avatar DumbJoe commented on May 23, 2024

I'm not able to find the FFprobe command to detect pixel format or color space, I'm not sure if it's in the file properties, so it's not able to auto detect.

Hm, it would have to be, otherwise how else would MediaInfo be able to achieve this? What does the current "auto" option do in 1.5.8-Alpha? Is that an attempt of your own auto-detect and apply appropriate pixel format or colour profile?

I could possibly make more Preset Profiles with extending dropdown menu levels.

Yes that'd be most welcomed!

Also, back to my own problem, managed to fix it by loading last known good configuration.....hah.....but thanks for trying though! ☺

from axiom.

MattMcManis avatar MattMcManis commented on May 23, 2024

I will have to ask the devs or people more knowledgeable about FFprobe to find out the command to get that info. The current auto option just leaves the command blank, which allows FFmpeg to choose for itself, but sometimes it chooses one that makes the quality worse. That's why I force it to select yuv420p on most formats.

If you want to open an issue titled something like "Add more transcode profiles", we can post more about it in the new thread and keep this thread for FFV1 and Lossless codecs.

from axiom.

DumbJoe avatar DumbJoe commented on May 23, 2024

The current auto option just leaves the command blank, which allows FFmpeg to choose for itself, but sometimes it chooses one that makes the quality worse. That's why I force it to select yuv420p on most formats.

AHhh...

If you want to open an issue titled something like "Add more transcode profiles", we can post more about it in the new thread and keep this thread for FFV1 and Lossless codecs.

Sure!

from axiom.

DumbJoe avatar DumbJoe commented on May 23, 2024

Hm, so I'm doing my transcode on version 1.5.8-Alpha build and notice that in FLAC, there isn't a compression settings.....and I know FLAC has 9 levels of compression(from using another tool that converts audio files), the highest giving you the smallest file but takes longer to do or the lowest that gives the biggest file but takes the quickest time if you are in a hurry.

Where is this option? There are probably other lossless audio codecs that also provide a compression level that I've not used yet, what default does FLAC be on with your frontend gui?

As for colour space, since my footage was taken in fraps, using the uncompressed box checked, my test sample is in RGB and the only RGB option there is is "rgb48le", I think.....should have probably researched all those profiles(From your raw pastebin) before clicking on one that looks like it will be it....hahaha facepalm.png

from axiom.

DumbJoe avatar DumbJoe commented on May 23, 2024

Hmmm, supposedly fraps footage are either yuvj420p or bgr24 (someone mentioned bgra?) if you record with lossless RGB checked, both in REC. 709; according to this thread: http://forum.doom9.org/showthread.php?p=1556914

from axiom.

MattMcManis avatar MattMcManis commented on May 23, 2024

I think I can add a new compression level slider or dopdown menu for FLAC. I'll release it in the next update soon.

-compression_level 0-12, default 5.

Opus also uses it, 0-10.

from axiom.

MattMcManis avatar MattMcManis commented on May 23, 2024

@DumbJoe

I've added FLAC and Opus Compression Level settings in the latest version v1.6.1.0.

Let me now how it works.

from axiom.

DumbJoe avatar DumbJoe commented on May 23, 2024

-compression_level 0-12, default 5.

Oh, there were a few more levels above 9 that dBpoweramp failed to tell me about....? huh....there is no way to pull this information once the file is transcoded is there? Like pick up what compression level was used for encoding the flac codec...?

Opus also uses it, 0-10.

Oh, that's new...never would have thought a lossy format to use a compression setting other than bitrate to derive your desired file size......interesting......

So I had done some tests on the older 1.5.8 version and here are the results for 2pass vs. 1pass:
https://i.imgur.com/u6Stdj8.png

CPU utilization doesn't seem to be strict because none of my 12 workers are pegged to 100% when I encode a 300GB file:
https://i.imgur.com/s25NiUn.png

And changing thread count doesn't seem to do a thing either: https://i.imgur.com/afONWpf.png - I pick one thread thinking it would peg only one core of my hexacore CPU, but nope, uses all 12 threads inefficiently........but at least it spread the load.......maybe ffmpeg is single threaded and not multithreaded and thus windows is trying to distribute the load evenly on all 12 threads, as it was only handbrake that brought multithread feature to boost efficiency? hmmm...

from axiom.

MattMcManis avatar MattMcManis commented on May 23, 2024

@DumbJoe

I think FLAC compression 10-12 might be new, I read some old posts where it only went to 9.

And Opus compression might only be for VBR -vbr on, I will have to do some more testing and compare file sizes.


For FFV1, I tried using the color profile bgr24 but gave me the error:

Incompatible pixel format `bgr24' for codec 'ffv1', auto-selecting format 'bgr0'.

rgb48le must have increased the size. I will try to ask the devs what color profile should be used when converting from bgr24.


For threading, I read this post here, they say,

"threads do not do a good job of utilizing all the cores, the hyper-threads do not get used at all."

You might want to try -threads 0 or optimal in the dropdown menu. I will have to look more into it, people have even told me to remove -threads all together.

from axiom.

DumbJoe avatar DumbJoe commented on May 23, 2024

I guess if you want to clean it up a bit more, you could alphabetize the supported profiles, so it looks like this:
bgr0 bgra gbrap10le gbrap12le gbrap16le gbrp10le gbrp12le gbrp14le gbrp16le gbrp9le gray gray10le gray12le gray16le gray9le rgb48le rgba64le ya8 yuv410p yuv411p yuv420p yuv420p10le yuv420p12le yuv420p14le yuv420p16le yuv420p9le yuv422p yuv422p10le yuv422p12le yuv422p14le yuv422p16le yuv422p9le yuv440p yuv440p10le yuv440p12le yuv444p yuv444p10le yuv444p12le yuv444p14le yuv444p16le yuv444p9le yuva420p yuva420p10le yuva420p16le yuva420p9le yuva422p yuva422p10le yuva422p16le yuva422p9le yuva444p yuva444p10le yuva444p16le yuva444p9le

and not this:
yuv420p yuva420p yuva422p yuv444p yuva444p yuv440p yuv422p yuv411p yuv410p bgr0 bgra yuv420p16le yuv422p16le yuv444p16le yuv444p9le yuv422p9le yuv420p9le yuv420p10le yuv422p10le yuv444p10le yuv420p12le yuv422p12le yuv444p12le yuva444p16le yuva422p16le yuva420p16le yuva444p10le yuva422p10le yuva420p10le yuva444p9le yuva422p9le yuva420p9le gray16le gray gbrp9le gbrp10le gbrp12le gbrp14le gbrap10le gbrap12le ya8 gray10le gray12le gbrp16le rgb48le gbrap16le rgba64le gray9le yuv420p14le yuv422p14le yuv444p14le yuv440p10le yuv440p12le

I think FLAC compression 10-12 might be new, I read some old posts where it only went to 9.

This is their official site: https://xiph.org/flac/documentation_tools_flac.html and they make no mention of levels 10 to 12.....only -0 to -8 which is 1 to 9 in human speak.....hah...

And Opus compression might only be for VBR -vbr on, I will have to do some more testing and compare file sizes.

Heh, with lossy, you don't really wanna add additional compression to it not unless enjoy the metallic robotic sound artifacts of low quality audio streams! But, I guess different strokes for different folks, some don't mind this and others do; but at least Opus is more effecient than either AAC, AC3 and MP3 combined together so at the same bitrate level, Opus would be better but media info doesn't always display this for some reason...

rgb48le must have increased the size. I will try to ask the devs what color profile should be used when converting from bgr24.

Hmmm, I suspected so too, let me know what they say. ☺

You might want to try -threads 0 or optimal in the dropdown menu. I will have to look more into it, people have even told me to remove -threads all together.

Yeah I'll give those a try next.

from axiom.

MattMcManis avatar MattMcManis commented on May 23, 2024

@DumbJoe

I'll look into sorting the color profiles. I copy pasted them straight from ffmpeg codec info output.
Enter this in command prompt with any codec name to see the info ffmpeg -h encoder=libx264.

Here's info on the FLAC compression level 0-12. https://ffmpeg.org/ffmpeg-codecs.html#Options-6
I'm thinking maybe it really is 1-9, but the FFmpeg devs have normalized it to 0-12 with an algorithm for their coding purposes. Or the extra levels are really just 9 with additional flags -e, -p, -ep. I found a thread about it here.

I tested Opus compression level, but it makes no difference in file size when turned on or off with CBR. I've only seen it used with VBR, so I'll probably have it enabled just for that in the next update.

from axiom.

DumbJoe avatar DumbJoe commented on May 23, 2024

Now this is more like it! https://i.imgur.com/VGedp9D.png I chose a small 200MB file I had lying around and transcoded that using the UHD Disc preset setting and ensuring the thread option is set to optimal in the dropdown menu.

Hm, which begs the question, why don't you just force it on optimal setting so the transcode always work as efficiently as possible if the other settings do jack all? hahaha....

from axiom.

DumbJoe avatar DumbJoe commented on May 23, 2024

I'll look into sorting the color profiles. I copy pasted them straight from ffmpeg codec info output.
Enter this in command prompt with any codec name to see the info ffmpeg -h encoder=libx264.

Ahh.

Here's info on the FLAC compression level 0-12. https://ffmpeg.org/ffmpeg-codecs.html#Options-6
I'm thinking maybe it really is 1-9, but the FFmpeg devs have normalized it to 0-12 with an algorithm for their coding purposes. Or the extra levels are really just 9 with additional flags -e, -p, -ep. I found a thread about it here.

Hmmmm, interesting.....

So, I did another test and found out that setting the threads to "all" in the dropdown menu also pegs all cores and threads to 100%, then I changed the preset to something else, say your archive preset under UHD and notice that using the same "all" option for thread, it doesn't peg all the available CPU power you have, but hovers at around 50%.......

Perhaps it's the encoder used to encode FFV1 isn't multithreaded, but the one used for x264 and x265 is.....?

I also notice these settings:
picture

You can just take a look at the picture, I've commented it inside....

from axiom.

MattMcManis avatar MattMcManis commented on May 23, 2024

@DumbJoe

Optimize Preset
I will look into which codecs and multi-threaded and which aren't. I'll also adjust that preset and others to set the resolution size for UHD and Blu-ray.


The scaling options get complicated.

Size
The Size dropdown menu is set up to handle Widescreen videos by default. If your input video is something like Full Screen 640x480, select Aspect Ratio 4:3 and you'll see the width and height change in the textboxes.

I believe Widescreen videos should be scaled width first, height auto (-1 or -2) -vf scale=1280:-2. That way if you scale a video that's Ultra Wide 1920x800 to 720p, it will automatically calculate the height 1280x533. (That ratio is actually 2.40:1, I need to add it.)

Full Screen should be scaled height first, width auto, -vf scale=-2:720. You can upscale a video that's 640x480 to 720p 960x720. If it was scaled height auto I'd have to add more width settings like 960, 800, 640. I just keep the standard widths 1920, 1280, and heights 1080, 720, 480, etc.

I may have to redesign how this all works to make it easier.


Aspect Ratio
I wouldn't even use the Aspect Ratio dropdown menu unless you want to force a video to a new ratio, or your input is Full Screen. Using -aspect sets a container flag with without having to re-encode the video. If you accidentally select 16:9 and your input video is 1920x800 instead of 1920x1080, it will stretch it vertically.

If you're resizing, just use Size dropdown menu -vf "scale=1280:-2", and leave Aspect Ratio on auto, and it will not use the command -aspect and will always be the right aspect from the original.


Format
I need to add another menu called Format with options Widescreen, Ultra Wide, Full Screen to further fine tune the options, so the wrong ones aren't accidentally selected.

from axiom.

MattMcManis avatar MattMcManis commented on May 23, 2024

@DumbJoe

In the latest update, I added a Screen Format dropdown menu.

Select if your video is Widescreen or Full Screen, and it will automatically set the Size width and height when you use a Size Preset like 4K, 1080p, 720p, etc.

Maybe I will have it use the actual with instead of calculating it with auto.


Use the Aspect Ratio menu if your input video ratio different that your output video's resolution. So if you're doing an input 1:1 to output 1280x720, set Aspect to 16:9 or else the input video's 1:1 will carry over will come out square.

You can also use Aspect if you want to quickly change a video's ratio without having to re-encode, but it might give warning Overriding aspect ratio with stream copy may produce invalid files.


For Full Screen, if I scaled by width and used heigth auto and someone input a 640x480 video and scaled it to 1080p, it would blow up to 1920x1440 and be taller than the screen. If scaled by height it will be 1440x1080 and fit the screen.


If you want to discuss more about this, open a new issue and we can continue it there.

from axiom.

Related Issues (20)

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.