ue4plugins / ndimedia Goto Github PK
View Code? Open in Web Editor NEWMedia Framework plug-in for NewTek's Network Device Interface (NDI).
License: BSD 3-Clause "New" or "Revised" License
Media Framework plug-in for NewTek's Network Device Interface (NDI).
License: BSD 3-Clause "New" or "Revised" License
When streaming to UE4 from OBS using the NDI plugin (localhost), the video is extremely hitch-y and the audio is completely garbled. Testing the same stream with another OBS instance or the "NDI Video Monitor" (shipped with the NDI binaries) shows that the stream is fine and audio is perfect.
The only place I can reproduce the issue is in the UE4 editor while attempting to monitor the stream in the "Media Player" UI.
Changing the Bandwidth or Source Name/Endpoint in the NDIMediaSource asset in UEd doesn't seem to have any affect.
Repro:
Observed:
Note:
Hello, we are trying to implment Ndi sending feature by ourselves. We added a class to NdiMedia plugin, which is called UNdiMediaSender. We managed to initialize NDI and create a sender instance inside the UNdiMediaSender class. However, when we try to send video frame using NDIlib_send_send_video_v2 or NDIlib_send_send_video_async_v2 method, UE4 crashed.
I've read another issue in which you mentioned that the sending feature is on the way, which is a cool news. At this moment, we want to know how to fix this crash problem. Thank you very much.
Our code is something like this: ( Sorry for the ugly layout )
NdiMediaSender.h
#include
#include
#include
#include
#include
#include
#include
#include
#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "NdiMediaSender.generated.h"
UCLASS(BlueprintType)
class NDIMEDIA_API UNdiMediaSender : public UObject
{
GENERATED_BODY()
public:
UNdiMediaSender();
public:
UFUNCTION(BlueprintCallable, Category = NDI)
void Initialize();
UFUNCTION(BlueprintCallable, Category = NDI)
void Tick();
public:
//~ UObject interface
virtual void BeginDestroy() override;
#if WITH_EDITOR
virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
#endif
};
NdiMediaSender.cpp
#include "NdiMediaSender.h"
#include "Ndi.h"
#include "NdiMediaPrivate.h"
static std::atomic exit_loop(false);
static void sigint_handler(int)
{
exit_loop = true;
}
NDIlib_send_create_t NDI_send_create_desc;
NDIlib_send_instance_t pNDI_send;
NDIlib_video_frame_v2_t NDI_video_frame;
const int xres = 720;
const int yres = 480;
UNdiMediaSender::UNdiMediaSender()
{
}
void UNdiMediaSender::Initialize()
{
if (!NDIlib_initialize())
{
UE_LOG(LogTemp, Warning, TEXT("Can not run NDI"));
return;
}
UE_LOG(LogTemp, Warning, TEXT("NDI library initialized"));
// Catch interrupt so that we can shut down gracefully
signal(SIGINT, sigint_handler);
// Create an NDI source that is called "My Video" and is clocked to the video.
NDI_send_create_desc.p_ndi_name = "My Video";
// We create the NDI sender
pNDI_send = NDIlib_send_create(&NDI_send_create_desc);
if (!pNDI_send) return;
UE_LOG(LogTemp, Warning, TEXT("NDI sender created"));
// We are going to create a 1920x1080 interlaced frame at 29.97Hz.
NDI_video_frame.xres = xres;
NDI_video_frame.yres = yres;
NDI_video_frame.FourCC = NDIlib_FourCC_type_BGRX;
NDI_video_frame.frame_format_type = NDIlib_frame_format_type_interleaved;
NDI_video_frame.p_data = (uint8_t*)malloc(xres * yres * 4);
NDI_video_frame.line_stride_in_bytes = xres * 4;
}
void UNdiMediaSender::Tick()
{
UE_LOG(LogTemp, Warning, TEXT("Tick"));
// Fill in the buffer. It is likely that you would do something much smarter than this.
memset((void*)NDI_video_frame.p_data, 255, xres * yres * 4);
UE_LOG(LogTemp, Warning, TEXT("memset done"));
// Crash Happens Here !
NDIlib_send_send_video_async_v2(pNDI_send, &NDI_video_frame);
UE_LOG(LogTemp, Warning, TEXT("video sent"));
}
/* UObject interface
*****************************************************************************/
void UNdiMediaSender::BeginDestroy()
{
Super::BeginDestroy();
// Free the video frame
free(NDI_video_frame.p_data);
// Destroy the NDI sender
NDIlib_send_destroy(pNDI_send);
// Not required, but nice
NDIlib_destroy();
}
#if WITH_EDITOR
void UNdiMediaSender::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
{
Super::PostEditChangeProperty(PropertyChangedEvent);
}
#endif //WITH_EDITOR
I'm getting some compatibility issues with the 3.7 SDK. Says that some of the code has be deprecated I don't have the exact reference but its super easy to reproduce. I cant get it to compile with the master or the 4.19 version. Will you be updating for the 3.7 version or should I roll back to 3.5?
Hey! Great plug-in, I really appreciate all the great support for the Media Framework. However, with the latest code and the first 4.18 preview I'm getting no video while connected to my NDI stream. Actually I seem to be getting a tiny white square that get's blown up when I set the scale to "fit".
I'm able to see the feed just fine in the NDI Video Monitor, the correct resolution is being detected and changing dynamically in UEditor, and this was working consistently in 4.17.1 release.
Thanks again!
PS Connecting to an NDI stream via the "Source Name" doesn't seem to work (either now or before the update). Probably not related to the above issue, but I figured I'd mention it.
Since every Broadcast actor is associated with a Player Controller, I cannot send multiple views simultaneously. Instead you can only iterate over the same NDI source on the receiver side. Is there a way e to broadcast multiple camera views as separate NDI sources?
Hi !
There is a small typo issue with the NDILIB_LIBRARY_NAME
define in the Processing.NDI.Lib.h
file (line 59):
it should be "libndi.so.3.0.11"
instead of "libndi.so.3.11"
, overwise we got a "LogNdiMedia: Error: Failed to initialize NDI"
Hi !
When i try to package a project for Linux (Windows cross compiling) with NdiMedia as project plugin, the build fails with undefined reference to somes functions.
But it works perfectly with Win64, and on Mac version. so i think the problem is specific to Linux.
Here is the full log of the packaging: Log.txt
To reproduce:
I'm compiling 4.16 preview right now to test if it works with the master branch, I update this post when it's done.
Edit: same issue with 4.16 preview-2
Hi,
I can't find any instructions oh how to actually implement the plugin. Can it be done using blueprints or just in code?
Thanks,
Harvey
Hi I'm look to use the Android SDK lib.so and managed to get thru with the compiler erros... but couldn't establish connect with NDI receiver / sender
any suggestions would be appreciated thanks
The UE4 4.19 build solution is unable to find Processing.NDI.Lib.h even after installing NDI Redist and the NDI SDK. Checked out tags/4.19 and trying to build project plugin with 4.19.2
Cannot open include file: 'Processing.NDI.Lib.h': No such file or directory
I've confirmed the system env variable NDI_SDK_DIR is set correctly (also tried copying to a user env variable)
NDI_SDK_DIR=D:\Program Files\NewTek\NewTek NDI SDK
Any advice?
Hi there...
I am testing the 4.18 version with macOS 10.13.2 [High Sierra], the project builds fine, and the plugin sees the NDI sender fine, it just doesn't render any image within the mediaPlayer, [black screen, play button greyed out on the transport bar].
It seems to be not detecting a feed, but the log gives no feedback...
Has anyone encountered this and/or has a fix? Many thanks in advance
Nick
Every once and a while, the UE4 editor crashes when I stop from playing in PIE mode, using Unreal 4.14 Preview 2 and commit 693233d.
This is somewhat rare, but it has happened a few times now.
I suspect the issue is in the audio portion of the plugin as I never encountered these issues before it was added, and the other open issues (issue #3, #4, #5) having to due with the audio functionality may also be related.
For some reason, even though I have debug symbols for both engine and the plugin, there is no stack trace in the UE4 Crash Reporter window.
I guess I'll have to run in the debugger and see if I can catch the crash.
Hello,
Sending the Camera over NDI either using the Game Viewport or via a SceneCapture2D component would be really useful. Similar to how the Unreal Spout plugin works
https://github.com/AleDel/Spout-UE4
Thanks,
Harvey
Using the latest commit 693233d and UE 4.14 Preview 2, if I play in editor and stop multiple times, eventually the audio will stop playing when the video starts. When this happens, the condition is permanent until the editor is restarted.
I have been able to reproduce this bug consistently. I had to play and stop anywhere from 2 times to 10 times to reproduce.
I also verified that another application was able to play the audio from the same NDI stream while the UE editor was in the failure condition, so the problem is isolated to the plugin.
Reloading the editor unloads and reloads the plugin, which alleviates the problem.
TO DELETE
Any ideas why this is happening?
Error MSB3075
The command ""C:\Program Files (x86)\Epic Games\4.14\Engine\Build\BatchFiles\Build.bat" NDImediaEditor Win64 Development "C:\Users\stiller\Documents\Unreal Projects\NDImedia\NDImedia.uproject" -waitmutex" exited with code -1. Please verify that you have sufficient rights to run this command.
Followed by another:
The first include statement in source file 'C:\Users\stiller\Documents\Unreal Projects\NDImedia\Plugins\NdiMedia\Source\NdiMediaFactory\Private\NdiMediaFactoryModule.cpp' is trying to include the file 'CoreMinimal.h' as the precompiled header, but that file could not be located in any of the module's include search paths.
Hi there,
I'm currently running Unreal Engine 4.18.3 and I tried to install the plugin as a Engine plugin and as a Project Plugin but both seem to give the issue 'Module can not be found'
OS : Windows 10 x64
UE version : 4.18.3
Thanks !
Hi,
I got to use this plugin on Linux and Windows.
On both platforms i got the same kind of errors. When I included the plugin into my cpp project, unreal asked me to build the plugin. Then, on both platform, i got the same problem, there is the output log on windows :
C:\Users\Alexandre\Documents\Unreal Projects\MyProjectCPP_01\Plugins\NdiMedia\Source\NdiMediaEditor\Private\NdiMediaEditorModule.cpp(22): error C2061: syntax error: identifier 'NdiMediaEditor'
C:\Users\Alexandre\Documents\Unreal Projects\MyProjectCPP_01\Plugins\NdiMedia\Source\NdiMediaEditor\Private\NdiMediaEditorModule.cpp(22): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
The same kind of error occurs on Linux, saying that this line has a problem:
IMPLEMENT_MODULE(FNdiMediaEditorModule, NdiMediaEditor);
On linux, the error log is as follows :
In file included from /media/jacques/home/jacques/EpicGames/UnrealEngine/Engine/Plugins/Media/NdiMedia/Intermediate/Build/Linux/B4D820EA/UE4Editor/Development/NdiMediaEditor/Module.NdiMediaEditor.cpp:2:
/media/jacques/home/jacques/EpicGames/UnrealEngine/Engine/Plugins/Media/NdiMedia/Source/NdiMediaEditor/Private/NdiMediaEditorModule.cpp:22:41: error: unknown type name 'NdiMediaEditor'
IMPLEMENT_MODULE(FNdiMediaEditorModule, NdiMediaEditor);
^
/media/jacques/home/jacques/EpicGames/UnrealEngine/Engine/Plugins/Media/NdiMedia/Source/NdiMediaEditor/Private/NdiMediaEditorModule.cpp:22:1: error: C++ requires a type specifier for all
declarations
IMPLEMENT_MODULE(FNdiMediaEditorModule, NdiMediaEditor);
^~~~~~~~~~~~~~~~
2 errors generated.
The two tests were done with the latest SDK version we could get on the NewTek website, and the latest version of your plugin, with the latest version of Unreal engine 4.13 (Linux), and 4.13.1 (Win).
Thanks for reading.
Regards,
Alexandre ADAM
Hi,
I am currently trying to read a video stream in UE4, with a Kodak PixPro sp360 4K using a BlackMagic DeckLink and the HDMI port.
I succeed in reading the stream in NDI StudioMonitor, by using the NewTek Connect app.
However, I can't detect the video stream using the NdiMedia plugin un UE, using UE4.19.2 and the 4.19 plugin.
I only seem to be able to detect a UYVY 0x0 0fps stream, with the NdiMedia player staying in Preparing mode, but it exists even when the Connect app isn't opened, so I don't know what it could be.
Any help would be really appreciated.
If you need additional information, feel free to ask.
Thanks,
Lewkas
Hi @gmpreussner,
Will the NDI media source have support for source names, and not IP addresses? I suspect I may be looking at a newer version of the NDI SDK, because NDI sources are identified with strings?
Just starting to dive into this today!
How to use this plug-in to realize audio and video transceiver. In terms of specific steps
Hi !
To not create an issue topic for every issue, so if you don't mind i put them here:
I tried today to compile NdiMedia directly from linux (blank project + plugin) and it don't compile here is the log:
Performing 2 actions (5 in parallel)
[1/2] Link libUE4Editor-NdiMedia.so
/usr/bin/ld: /home/gundz/Documents/Unreal Projects/MyProject/Plugins/NdiMedia/ThirdParty/lib/linux/x86_64-linux-gnu-5.4/libndi.a(Processing.NDI.Find.o): réadressage de R_X86_64_32 en vertu de « __gxx_personality_v0 » ne peut être utilisé lors de la création d'un objet partagé; recompilez avec -fPIC
/home/gundz/Documents/Unreal Projects/MyProject/Plugins/NdiMedia/ThirdParty/lib/linux/x86_64-linux-gnu-5.4/libndi.a : erreur lors de l'ajout de symboles : Mauvaise valeur
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ERROR: UBT ERROR: Failed to produce item: /home/gundz/Documents/Unreal Projects/MyProject/Plugins/NdiMedia/Binaries/Linux/libUE4Editor-NdiMedia.so
Total build time: 34,06 seconds (Local executor: 0,00 seconds)
LogInit:Warning: Still incompatible or missing module: libUE4Editor-NdiMedia.so
LogInit:Warning: Still incompatible or missing module: libUE4Editor-NdiMediaEditor.so
Pressing the stop button while in PIE mode with an active NDI source seems to hang the editor for a good 60 seconds or more.
Using UE 4.14 and the latest commit 1bf010b
Severity Code Description Project File Line Suppression State
Error MSB3075 The command ""D:\Program Files\Epic Games\UE_4.23\Engine\Build\BatchFiles\Build.bat" rtlbenchtestEditor Win64 Development -Project="C:\Perforce\michela_SAM_3220\projects\acl\Collaboration\rtlbenchtest423\rtlbenchtest423.uproject" -WaitMutex -FromMsBuild" exited with code 5. Please verify that you have sufficient rights to run this command. rtlbenchtest423 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.MakeFile.Targets 44
Warning C4996 'NDIlib_source_t::p_ip_address': was declared deprecated rtlbenchtest423 C:\Perforce\michela_SAM_3220\projects\acl\Collaboration\rtlbenchtest423\Plugins\NdiMedia\Source\NdiMedia\Private\Assets\NdiMediaFinder.cpp 75
Warning C4996 'FWindowsPlatformMisc::GetEnvironmentVariable': void FPlatformMisc::GetEnvironmentVariable(Name, Result, Length) is deprecated. Use FString FPlatformMisc::GetEnvironmentVariable(Name) instead. Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile. rtlbenchtest423 C:\Perforce\michela_SAM_3220\projects\acl\Collaboration\rtlbenchtest423\Plugins\NdiMedia\Source\NdiMedia\Private\Ndi\Ndi.cpp 28
Warning C4996 'NDIlib_source_t::p_ip_address': was declared deprecated rtlbenchtest423 C:\Perforce\michela_SAM_3220\projects\acl\Collaboration\rtlbenchtest423\Plugins\NdiMedia\Source\NdiMedia\Private\Player\NdiMediaPlayer.cpp 268
Warning C4996 'NDIlib_source_t::p_ip_address': was declared deprecated rtlbenchtest423 C:\Perforce\michela_SAM_3220\projects\acl\Collaboration\rtlbenchtest423\Plugins\NdiMedia\Source\NdiMedia\Private\Player\NdiMediaPlayer.cpp 278
Warning C4996 'NDIlib_v3::NDIlib_recv_create_v2': was declared deprecated rtlbenchtest423 C:\Perforce\michela_SAM_3220\projects\acl\Collaboration\rtlbenchtest423\Plugins\NdiMedia\Source\NdiMedia\Private\Player\NdiMediaPlayer.cpp 295
Error LNK2001 unresolved external symbol "public: virtual enum ETickableTickType __cdecl FTickableObjectBase::GetTickableTickType(void)const " (?GetTickableTickType@FTickableObjectBase@@UEBA?AW4ETickableTickType@@XZ) rtlbenchtest423 C:\Perforce\michela_SAM_3220\projects\acl\Collaboration\rtlbenchtest423\Intermediate\ProjectFiles\Module.NdiMediaEditor.cpp.obj 1
Error LNK1120 1 unresolved externals rtlbenchtest423 C:\Perforce\michela_SAM_3220\projects\acl\Collaboration\rtlbenchtest423\Plugins\NdiMedia\Binaries\Win64\UE4Editor-NdiMediaEditor.dll 1
Hi,
Just tried today to launch the packaged linux build and it comes out that the "Third Party" folder with the librairies is not packaged with it.
On windows the files are copied and the plugin works fine.
After copying the files by hand it works.
I tried to add the path to the files/folder into a /Config/FilterPlugin.ini file but changed nothing.
PS: i have also a crash issue at runtime, but i will first investigate to be sure it comes from the plugin before opening an other issue.
All source files in module "NdiMediaFactory" must include the same precompiled header first. Currently "A:\Unreal Projects\NDI_Test_2\Plugins\NdiMedia-master\Source\NdiMediaFactory\Public\NdiMediaSettings.h" is included by most of the source files. The following source files are not including "A:\Unreal Projects\NDI_Test_2\Plugins\NdiMedia-master\Source\NdiMediaFactory\Public\NdiMediaSettings.h" as their first include: NDI_Test_2 A:\Unreal Projects\NDI_Test_2\Intermediate\ProjectFiles\EXEC 1
Attempted moving the "NdiMediaSettings.h" include statement to the top of the include statements in NdiMediaFactoryModule.cpp and that introduced several warnings.
The next precompile error was with the NdiMedia module. There's several cpp files with several headers to choose from, so that's still not resolved.
Some context:
I downloaded the newest NDI 2 SDK, created a new 4.13.2 c++ project (also tried 4.14 for good measure), created a Plugins folder, dropped the NdiMedia-master folder downloaded from github today into the plugins folder, right clicked the .uproject > Generate Visual Studio project files (just in case). Then I started compiling and trying to fix include statements. Is there anything I'm missing? I have not placed any additional files into any other directories, is that something I need to do?
Thanks so much!
Hello when i package my game (Development) it compiles and cooks without errors. When I run the game and check the channels in OBS they are there, but they are black. For the record when I run the game in the editor everything runs just fine.
Another thing when I compile in shipping mode it throws a weird error. Could this be the reason for fail?
D:/_UE4/GAME_PN_2020/Plugins/NDIIOPlugin/Source/Core/Classes/Components/NDIViewportCaptureComponent.cpp(404): error C3892: 'HitProxies': you cannot assign to a variable that is const
When I open an NDI Source in Media Player it never connects to the source (connection count is not increased), it works however with NDI Monitor (Sienna) and the connection count is increased.
On the UE4 side in the Media Player it is stuck in Preparing state. The same setup works for me on Windows.
Screen shot from MacOS, UE 4.19 and the Media Player:
Since the NDI Signal Generator (by Sienna) isn't indicating a new connection is made I would assume the issue is with getting the connect request going out from UE4/NDI.
Using Unreal Engine 4.19.0, macOS 10.13.4, NDI 3.0, NdiMedia 8.0
cheers
/ Patric
Hello,
When i try to compile my project with the version 4.15.1 (and the version 4.15 of the plugin) i get the following error:
EXEC : error : All source files in module "NdiMediaFactory" must include the same precompiled header first. Currently "C:\Users\FLOGU\Desktop\NDI_Test\Plugins\NdiMedia-4.15\Source\NdiMediaFactory\Public\NdiMediaSettings.h" is included by most of the source files. The following source files are not including "C:\Users\FLOGU\Desktop\NDI_Test\Plugins\NdiMedia-4.15\Source\NdiMediaFactory\Public\NdiMediaSettings.h" as their first include: 1> 1>C:\Users\FLOGU\Desktop\NDI_Test\Plugins\NdiMedia-4.15\Source\NdiMediaFactory\Private\NdiMediaFactoryModule.cpp (including C:\Program Files\Epic Games\UE_4.15\Engine\Source\Runtime\Core\Public\CoreMinimal.h)
I tried with the "normal" version of Unreal, and the source compiled one.
Steps to reproduce:
When the File Media Source finishes playing, the Media Player switches to the NDI Media Source and I believe tries to play it with the same player it was using for the File Media Source (WmfMediaPlayer), which causes the editor to crash.
Environment: Windows,
Unreal Engine version: 4.14
NdiMedia plugin (commit 43f2f19).
With 4.14. Compile error start as follows:
1>C:\Program Files (x86)\Epic Games\4.14\Engine\Source\Editor/PropertyEditor/Public/DetailCategoryBuilder.h(43): error C2061: syntax error: identifier 'FOnBooleanValueChanged'
1>C:\Program Files (x86)\Epic Games\4.14\Engine\Source\Editor/PropertyEditor/Public/DetailCategoryBuilder.h(55): error C2061: syntax error: identifier 'TSharedRef'
1>C:\Program Files (x86)\Epic Games\4.14\Engine\Source\Editor/PropertyEditor/Public/DetailCategoryBuilder.h(66): error C2061: syntax error: identifier 'FName'
1>C:\Program Files (x86)\Epic Games\4.14\Engine\Source\Editor/PropertyEditor/Public/DetailCategoryBuilder.h(74): error C2061: syntax error: identifier 'TSharedPtr'
Missing module dependency? Missing include? But again, everything is ok if included within the Engine directories.
Hello - I'm trying to get the timecode embedded in the NDI stream into UE4. There's a boolean that says 'use timecode' which is checked. What other conditions need to be true in the engine for that timecode to override and how do I get access to it?
Thanks,
I have not been able to reproduce this issue since it first happened, but at least once I heard the audio desync from the video by a few seconds or so. I'll keep trying to reproduce or identify what caused this failure.
Using the latest commit 693233d and UE 4.14 Preview 2
When playing an NDI video+audio source through this plugin, it is much lower volume than other playback systems, and even a local file played back in UE4.
For reference, I get equal volume from playing the same stream in any other NDI receiver application vs. playing the exact same source video file in VLC with 100% volume.
All of these are playing through the same audio output device on my system when I perform the tests.
In UE4, I'm playing the sound unaltered through an audio component with Volume Multiplier: 1.0. No attenuation is being applied and there are no effects like reverb.
It also makes no difference if I assign a sound class or not (with volume also at 1.0, of course). The volume is the same. However, I know the sound class is working, as if I set volume to 0.1, it is attenuated as expected.
I've also tried playing around with audio-related world settings, project settings, editor settings, etc. to no avail. I am not getting my expected result of playing back the NDI stream at 1.0 volume having an equal volume to these other playback systems. Sound volume is always very low. By the way, UE4's audio settings are very spread out which makes everything really confusing and inconvenient to work with.
I even tried adjusting the editor's "Real Time Audio" setting (in the dropdown menu of the Settings button in the editor) and that didn't seem to affect anything at all.
Edit: I did some additional testing. I created a media player for both NDI sources and one for local file sources in UE4. I then played the same exact file over NDI and over the local file source. The NDI source, when played back in UE4, is lower volume than the local file source--not what I would expect. However, if I play the same NDI stream in a different player (not UE4), the volume is the same as the original file, as I would expect, so I know the source NDI stream is not to blame.
Local file playback via UE4's Media Framework also seems to have a problem with lower than usual volumes. If I play the same movie on the system locally with unity gain in a player like VLC, or any other player at 100%, the effective volume is MUCH higher than in UE4.
But the NDI playback in UE4 is even lower volume yet than the local file playback. So I think there is a problem in both UE4's Media Framework and in the NDI plugin itself. In other words, it seems UE4 plays back media at low volumes even when using a local file, but the NDI plugin plays back at even lower volumes yet.
Using UE4 4.14 Preview 3 and commit 86350e1.
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.