Giter Club home page Giter Club logo

webrtc-native's People

Contributors

guymguym avatar hefnysco avatar vmolsa 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

webrtc-native's Issues

Add example to consume streams

Add an example about how to consume the MediaStream and MediaStreamTracks objects from Node.js, and how to add them programatically. There are some modules like node-ffmpeg or node-speaker that could be used for this since you can pipe the streams to them. but I'm not sure if the formats are the same... :-/

Crash on running debug build (blocking thread issue)

Doesn't happen in release build, because the assert thing is conditional.
I think this can have some consequences

Ran node2browser, here's the log

(Module.cc:102): WebrtcModuleInit (Global.cc:38): WebRTC::Global::Init (Platform.cc:45): WebRTC::Platform::Init (PeerConnection.cc:38): WebRTC::PeerConnection::Init (DataChannel.cc:34): WebRTC::DataChannel::Init (GetSources.cc:34): WebRTC::GetSources::Init (GetUserMedia.cc:36): WebRTC::GetUserMedia::Init (MediaStream.cc:35): WebRTC::MediaStream::Init (MediaStreamTrack.cc:35): WebRTC::MediaStreamTrack::Init (Module.cc:42): SetDebug Open in browser: http://localhost:8080/ Peer Connected (webrtcvoiceengine.cc:1013): webrtc: Core Audio method failed (hr=0x80040154) (webrtcvoiceengine.cc:1013): webrtc: Error details: Class not registered (webrtcvoiceengine.cc:1013): webrtc: Core Audio method failed (hr=0x80040154) (webrtcvoiceengine.cc:1013): webrtc: Error details: Class not registered (webrtcvoiceengine.cc:1013): webrtc: Core Audio method failed (hr=0x80070490) (webrtcvoiceengine.cc:1013): webrtc: Error details: Element not found. (webrtcvoiceengine.cc:1013): webrtc: Core Audio method failed (hr=0x80070490) (webrtcvoiceengine.cc:1013): webrtc: Error details: Element not found. (audio_device_generic.cc:51): webrtc::AudioDeviceGeneric::BuiltInAECIsAvailable: Not supported on this platform (audio_device_generic.cc:66): webrtc::AudioDeviceGeneric::BuiltInAGCIsAvailable: Not supported on this platform (audio_device_generic.cc:76): webrtc::AudioDeviceGeneric::BuiltInNSIsAvailable: Not supported on this platform (webrtcvoiceengine.cc:1013): webrtc: Core Audio method failed (hr=0x80070490) (webrtcvoiceengine.cc:1013): webrtc: Error details: Element not found. (webrtcvoiceengine.cc:1013): webrtc: SetRecordingDevice() unable to set the recording device (error=10028) (webrtcvoiceengine.cc:1013): webrtc: Core Audio method failed (hr=0x80070490) (webrtcvoiceengine.cc:1013): webrtc: Error details: Element not found. (webrtcvoiceengine.cc:1013): webrtc: SetPlayoutDevice() unable to set the playout device (error=8090) (common.cc:59): c:\webrtc_r50\src\webrtc\base\thread.cc(285): ASSERT FAILED: !current || current->blocking_calls_allowed_ @ rtc::Thread::AssertBlockingIsAllowedOnCurrentThread

WebRTC freezing after "A free DTLS identity was saved"

I'm getting a freeze - which actually hangs the entire terminal in which I'm running the node server, requiring a forceful closing of that process. Possible race condition?

Here's the last few lines from the debug (WebRTC.setDebug(true). Below that is the full trace from the start of execution (server hangs as soon as a client connects, apparently).

(MediaConstraints.cc:417): virtual const webrtc::MediaConstraintsInterface::Constraints &WebRTC::MediaConstraints::GetOptional() const
(webrtcsessiondescriptionfactory.cc:192): DTLS-SRTP enabled; sending DTLS identity request (key type: 0).
(dtlsidentitystore.cc:167): Using a free DTLS identity.
(dtlsidentitystore.cc:218): A DTLS identity is returned to an observer.
(webrtcsessiondescriptionfactory.cc:503): Setting new certificate
(dtlsidentitystore.cc:53): Generating identity, using keytype 0
(opensslidentity.cc:41): Making key pair
(opensslidentity.cc:82): Returning key pair
(opensslidentity.cc:89): Making certificate for WebRTC
(opensslidentity.cc:137): Returning certificate
(dtlsidentitystore.cc:212): A free DTLS identity was saved.

full log:

using webrtc-native
(opensslidentity.cc:82): Returning key pair
(opensslidentity.cc:89): Making certificate for WebRTC
(opensslidentity.cc:137): Returning certificate
(dtlsidentitystore.cc:212): A free DTLS identity was saved.
(PeerConnection.cc:174): static void WebRTC::PeerConnection::New(const Nan::FunctionCallbackInfo<Value> &)
(EventEmitter.cc:31): WebRTC::EventEmitter::EventEmitter(uv_loop_t *, bool)
(EventEmitter.cc:137): void WebRTC::EventEmitter::SetReference(bool)
(PeerConnection.cc:82): WebRTC::PeerConnection::PeerConnection(const Local<v8::Object> &, const Local<v8::Object> &)
(MediaConstraints.cc:49): static rtc::scoped_refptr<MediaConstraints> WebRTC::MediaConstraints::New(const Local<v8::Object> &)
(MediaConstraints.cc:43): static rtc::scoped_refptr<MediaConstraints> WebRTC::MediaConstraints::New()
(MediaConstraints.cc:35): WebRTC::MediaConstraints::MediaConstraints()
(MediaConstraints.cc:339): bool WebRTC::MediaConstraints::GetOptional(const std::string &)
(MediaConstraints.cc:327): bool WebRTC::MediaConstraints::IsOptional(const std::string &)
(MediaConstraints.cc:374): void WebRTC::MediaConstraints::SetOptional(const std::string &, const std::string &)
(MediaConstraints.cc:353): void WebRTC::MediaConstraints::RemoveOptional(const std::string &)
(MediaConstraints.cc:368): void WebRTC::MediaConstraints::AddOptional(const std::string &, const std::string &)
(EventEmitter.cc:31): WebRTC::EventEmitter::EventEmitter(uv_loop_t *, bool)
(EventEmitter.cc:249): WebRTC::NotifyEmitter::NotifyEmitter(WebRTC::EventEmitter *)
(EventEmitter.cc:66): void WebRTC::EventEmitter::AddListener(WebRTC::EventEmitter *)
(EventEmitter.cc:184): void WebRTC::EventEmitter::AddParent(WebRTC::EventEmitter *)
(EventEmitter.cc:31): WebRTC::EventEmitter::EventEmitter(uv_loop_t *, bool)
(EventEmitter.cc:249): WebRTC::NotifyEmitter::NotifyEmitter(WebRTC::EventEmitter *)
(EventEmitter.cc:66): void WebRTC::EventEmitter::AddListener(WebRTC::EventEmitter *)
(EventEmitter.cc:184): void WebRTC::EventEmitter::AddParent(WebRTC::EventEmitter *)
(EventEmitter.cc:31): WebRTC::EventEmitter::EventEmitter(uv_loop_t *, bool)
(EventEmitter.cc:249): WebRTC::NotifyEmitter::NotifyEmitter(WebRTC::EventEmitter *)
(EventEmitter.cc:66): void WebRTC::EventEmitter::AddListener(WebRTC::EventEmitter *)
(EventEmitter.cc:184): void WebRTC::EventEmitter::AddParent(WebRTC::EventEmitter *)
(EventEmitter.cc:31): WebRTC::EventEmitter::EventEmitter(uv_loop_t *, bool)
(EventEmitter.cc:249): WebRTC::NotifyEmitter::NotifyEmitter(WebRTC::EventEmitter *)
(EventEmitter.cc:66): void WebRTC::EventEmitter::AddListener(WebRTC::EventEmitter *)
(EventEmitter.cc:184): void WebRTC::EventEmitter::AddParent(WebRTC::EventEmitter *)
(EventEmitter.cc:31): WebRTC::EventEmitter::EventEmitter(uv_loop_t *, bool)
(EventEmitter.cc:249): WebRTC::NotifyEmitter::NotifyEmitter(WebRTC::EventEmitter *)
(EventEmitter.cc:66): void WebRTC::EventEmitter::AddListener(WebRTC::EventEmitter *)
(EventEmitter.cc:184): void WebRTC::EventEmitter::AddParent(WebRTC::EventEmitter *)
(EventEmitter.cc:31): WebRTC::EventEmitter::EventEmitter(uv_loop_t *, bool)
(EventEmitter.cc:249): WebRTC::NotifyEmitter::NotifyEmitter(WebRTC::EventEmitter *)
(EventEmitter.cc:66): void WebRTC::EventEmitter::AddListener(WebRTC::EventEmitter *)
(EventEmitter.cc:184): void WebRTC::EventEmitter::AddParent(WebRTC::EventEmitter *)
(Core.cc:61): static ThreadPool *ThreadPool::GetPool()
(Core.cc:117): ThreadConstructor::ThreadConstructor()
(Core.cc:129): rtc::Thread *ThreadConstructor::Current() const
(Core.cc:77): rtc::Thread *ThreadPool::GetWorker()
(Core.cc:143): PeerConnectionFactory::PeerConnectionFactory()
(webrtcvoiceengine.cc:535): WebRtcVoiceEngine::WebRtcVoiceEngine
(webrtcvoiceengine.cc:256): WebRtc VoiceEngine codecs:
(webrtcvoiceengine.cc:283): ISAC/16000/1 (103)
(webrtcvoiceengine.cc:283): ISAC/32000/1 (104)
(webrtcvoiceengine.cc:283): PCMU/8000/1 (0)
(webrtcvoiceengine.cc:283): PCMA/8000/1 (8)
(webrtcvoiceengine.cc:307): Unexpected codec: PCMU/8000/2 (110)
(webrtcvoiceengine.cc:307): Unexpected codec: PCMA/8000/2 (118)
(webrtcvoiceengine.cc:283): ILBC/8000/1 (102)
(webrtcvoiceengine.cc:283): G722/8000/1 (9)
(webrtcvoiceengine.cc:307): Unexpected codec: G722/8000/2 (119)
(webrtcvoiceengine.cc:283): opus/48000/2 (111)
(webrtcvoiceengine.cc:283): CN/8000/1 (13)
(webrtcvoiceengine.cc:283): CN/16000/1 (105)
(webrtcvoiceengine.cc:283): CN/32000/1 (106)
(webrtcvoiceengine.cc:283): telephone-event/8000/1 (126)
(webrtcvoiceengine.cc:283): red/8000/1 (127)
(webrtcvideoengine2.cc:496): WebRtcVideoEngine2::WebRtcVideoEngine2()
(webrtcvoiceengine.cc:562): WebRtcVoiceEngine::Init
(webrtcvoiceengine.cc:577): VoiceEngine 4.1.0
(webrtcvoiceengine.cc:1019): webrtc: CheckPlatform
(webrtcvoiceengine.cc:1019): webrtc: current platform is LINUX
(webrtcvoiceengine.cc:1019): webrtc: CreatePlatformSpecificObjects
(webrtcvoiceengine.cc:1019): webrtc: attempting to use the Linux PulseAudio APIs...
(webrtcvoiceengine.cc:1019): webrtc: SetPulseAudioObjects
(webrtcvoiceengine.cc:1019): webrtc:   the PulseAudio objects for the mixer has been set
(webrtcvoiceengine.cc:1019): webrtc:   checking PulseAudio version: 6.0
(webrtcvoiceengine.cc:1019): webrtc: Linux PulseAudio APIs will be utilized
(webrtcvoiceengine.cc:1019): webrtc: AttachAudioBuffer
(webrtcvoiceengine.cc:1019): webrtc:   number of availiable output devices is 2
(webrtcvoiceengine.cc:1019): webrtc: AudioMixerManagerLinuxPulse::OpenSpeaker(deviceIndex=0)
(webrtcvoiceengine.cc:1019): webrtc:   the output mixer device is now open
(webrtcvoiceengine.cc:1019): webrtc:   number of availiable input devices is 2
(webrtcvoiceengine.cc:1019): webrtc: AudioMixerManagerLinuxPulse::OpenMicrophone(deviceIndex=1)
(webrtcvoiceengine.cc:1019): webrtc:   the input mixer device is now open
(webrtcvoiceengine.cc:1019): webrtc: output: available=1
(webrtcvoiceengine.cc:1019): webrtc:  AudioMixerManagerLinuxPulse::StereoRecordingIsAvailable() => available=79360, available
(webrtcvoiceengine.cc:1019): webrtc: output: available=1
(webrtcvoiceengine.cc:1019): webrtc: TransmitMixer::SetAudioProcessingModule(audioProcessingModule=0xc41798d0)
(webrtcvoiceengine.cc:1019): webrtc: OutputMixer::SetAudioProcessingModule(audioProcessingModule=0xc41798d0)
(webrtcvoiceengine.cc:650): ApplyOptions: AudioOptions {aec: true, agc: true, ns: true, hf: true, swap: false, audio_jitter_buffer_max_packets: 50, audio_jitter_buffer_fast_accelerate: false, typing: true, agc_delta: 0, experimental_agc: false, extended_filter_aec: false, delay_agnostic_aec: false, experimental_ns: false, }
(audio_device_generic.cc:51): BuiltInAECIsAvailable: Not supported on this platform
(webrtcvoiceengine.cc:723): Echo control set to 1 with mode 2
(audio_device_generic.cc:66): BuiltInAGCIsAvailable: Not supported on this platform
(webrtcvoiceengine.cc:758): Auto gain set to 1 with mode 2
(audio_device_generic.cc:76): BuiltInNSIsAvailable: Not supported on this platform
(webrtcvoiceengine.cc:805): Noise suppression set to 1 with mode 5
(webrtcvoiceengine.cc:811): High pass filter enabled? 1
(webrtcvoiceengine.cc:819): Stereo swapping enabled? 0
(webrtcvoiceengine.cc:828): NetEq capacity is 50
(webrtcvoiceengine.cc:836): NetEq fast mode? 0
(webrtcvoiceengine.cc:844): Typing detection is enabled? 1
(webrtcvoiceengine.cc:853): Adjust agc delta is 0
(webrtcvoiceengine.cc:1044): Adjusting AGC level from default -2dB to -2dB
(webrtcvoiceengine.cc:864): Delay agnostic aec is enabled? 0
(webrtcvoiceengine.cc:873): Extended filter aec is enabled? 0
(webrtcvoiceengine.cc:882): Experimental ns is enabled? 0
(webrtcvoiceengine.cc:613): WebRtc VoiceEngine codecs:
(webrtcvoiceengine.cc:615): opus/48000/2 (111)
(webrtcvoiceengine.cc:615): ISAC/16000/1 (103)
(webrtcvoiceengine.cc:615): ISAC/32000/1 (104)
(webrtcvoiceengine.cc:615): G722/8000/1 (9)
(webrtcvoiceengine.cc:615): ILBC/8000/1 (102)
(webrtcvoiceengine.cc:615): PCMU/8000/1 (0)
(webrtcvoiceengine.cc:615): PCMA/8000/1 (8)
(webrtcvoiceengine.cc:615): CN/32000/1 (106)
(webrtcvoiceengine.cc:615): CN/16000/1 (105)
(webrtcvoiceengine.cc:615): CN/8000/1 (13)
(webrtcvoiceengine.cc:615): red/8000/1 (127)
(webrtcvoiceengine.cc:615): telephone-event/8000/1 (126)
(webrtcvoiceengine.cc:919): Setting microphone to (id=0) and speaker to (id=0)
(webrtcvoiceengine.cc:938): Set microphone to (id=0) and speaker to (id=0)
(webrtcvoiceengine.cc:565): WebRtcVoiceEngine::Init Done!
(webrtcvideoengine2.cc:505): WebRtcVideoEngine2::Init
(Wrap.h:35): void WebRTC::RTCWrap::Wrap(v8::Local<v8::Object>, const char *)
(PeerConnection.cc:884): static void WebRTC::PeerConnection::SetOnIceCandidate(Local<v8::String>, Local<v8::Value>, const Nan::PropertyCallbackInfo<void> &)
(Wrap.h:59): static T *WebRTC::RTCWrap::Unwrap(v8::Local<v8::Object>, const char *) [T = WebRTC::PeerConnection]
(Wrap.h:53): T *WebRTC::RTCWrap::Unwrap() [T = WebRTC::PeerConnection]
(dtlsidentitystore.cc:53): Generating identity, using keytype 0
(opensslidentity.cc:41): Making key pair
(opensslidentity.cc:82): Returning key pair
(opensslidentity.cc:89): Making certificate for WebRTC
(opensslidentity.cc:137): Returning certificate
(dtlsidentitystore.cc:212): A free DTLS identity was saved.
(PeerConnection.cc:443): static void WebRTC::PeerConnection::CreateDataChannel(const Nan::FunctionCallbackInfo<Value> &)
(Wrap.h:59): static T *WebRTC::RTCWrap::Unwrap(v8::Local<v8::Object>, const char *) [T = WebRTC::PeerConnection]
(Wrap.h:53): T *WebRTC::RTCWrap::Unwrap() [T = WebRTC::PeerConnection]
(PeerConnection.cc:159): webrtc::PeerConnectionInterface *WebRTC::PeerConnection::GetSocket()
(EventEmitter.cc:137): void WebRTC::EventEmitter::SetReference(bool)
(MediaConstraints.cc:405): const webrtc::MediaConstraintsInterface *WebRTC::MediaConstraints::ToConstraints() const
(MediaConstraints.cc:411): virtual const webrtc::MediaConstraintsInterface::Constraints &WebRTC::MediaConstraints::GetMandatory() const
(MediaConstraints.cc:417): virtual const webrtc::MediaConstraintsInterface::Constraints &WebRTC::MediaConstraints::GetOptional() const
(MediaConstraints.cc:411): virtual const webrtc::MediaConstraintsInterface::Constraints &WebRTC::MediaConstraints::GetMandatory() const
(MediaConstraints.cc:417): virtual const webrtc::MediaConstraintsInterface::Constraints &WebRTC::MediaConstraints::GetOptional() const
(MediaConstraints.cc:411): virtual const webrtc::MediaConstraintsInterface::Constraints &WebRTC::MediaConstraints::GetMandatory() const
(MediaConstraints.cc:417): virtual const webrtc::MediaConstraintsInterface::Constraints &WebRTC::MediaConstraints::GetOptional() const
(MediaConstraints.cc:411): virtual const webrtc::MediaConstraintsInterface::Constraints &WebRTC::MediaConstraints::GetMandatory() const
(MediaConstraints.cc:417): virtual const webrtc::MediaConstraintsInterface::Constraints &WebRTC::MediaConstraints::GetOptional() const
(MediaConstraints.cc:411): virtual const webrtc::MediaConstraintsInterface::Constraints &WebRTC::MediaConstraints::GetMandatory() const
(MediaConstraints.cc:417): virtual const webrtc::MediaConstraintsInterface::Constraints &WebRTC::MediaConstraints::GetOptional() const
(MediaConstraints.cc:411): virtual const webrtc::MediaConstraintsInterface::Constraints &WebRTC::MediaConstraints::GetMandatory() const
(MediaConstraints.cc:417): virtual const webrtc::MediaConstraintsInterface::Constraints &WebRTC::MediaConstraints::GetOptional() const
(MediaConstraints.cc:411): virtual const webrtc::MediaConstraintsInterface::Constraints &WebRTC::MediaConstraints::GetMandatory() const
(MediaConstraints.cc:417): virtual const webrtc::MediaConstraintsInterface::Constraints &WebRTC::MediaConstraints::GetOptional() const
(MediaConstraints.cc:411): virtual const webrtc::MediaConstraintsInterface::Constraints &WebRTC::MediaConstraints::GetMandatory() const
(MediaConstraints.cc:417): virtual const webrtc::MediaConstraintsInterface::Constraints &WebRTC::MediaConstraints::GetOptional() const
(webrtcsessiondescriptionfactory.cc:192): DTLS-SRTP enabled; sending DTLS identity request (key type: 0).
(dtlsidentitystore.cc:167): Using a free DTLS identity.
(dtlsidentitystore.cc:218): A DTLS identity is returned to an observer.
(webrtcsessiondescriptionfactory.cc:503): Setting new certificate
(dtlsidentitystore.cc:53): Generating identity, using keytype 0
(opensslidentity.cc:41): Making key pair
(opensslidentity.cc:82): Returning key pair
(opensslidentity.cc:89): Making certificate for WebRTC
(opensslidentity.cc:137): Returning certificate
(dtlsidentitystore.cc:212): A free DTLS identity was saved.

32bit build

The compatibility list only shows x64. Is it possible to get a 32bit build working? I would like to run it on an Intel Edison which comes with a 32bit BSP.

Data Channel config not working

I tried changing maxRetransmits in the config but the RTCDataChannel property does not change.

I looked at test/dataChannel.js which uses the RTCConfig. On my computer (Mac OSX), it fails to set RTP to unordered and SCTP to ordered.

Also side note, the prebuilt binary fails with node 6, works with 5.9.1. Master works with node 6 but it prints a bunch of stack traces at the beginning, looks like it may be due to deprecation warnings.

Fails to build with Node>7

When building on Node > v7, I get compilation issues. WeakCallbackData was removed from V8 and is not available anymore in Node.

[2026/2037] CXX ../../src/webrtc.Observers.o
FAILED: ../../src/webrtc.Observers.o 
../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF ../../src/webrtc.Observers.o.d -DV8_DEPRECATION_WARNINGS -DCLD_VERSION=2 -DBUILDING_NODE_EXTENSION -DNODE_GYP_MODULE_NAME=webrtc -D_FILE_OFFSET_BITS=64 -DCHROMIUM_BUILD -DCR_CLANG_REVISION=261368-1 -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_AURA=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_DEFAULT_RENDER_THEME=1 -DUSE_LIBJPEG_TURBO=1 -DENABLE_WEBRTC=1 -DENABLE_MEDIA_ROUTER=1 -DENABLE_PEPPER_CDMS -DENABLE_CONFIGURATION_POLICY -DENABLE_NOTIFICATIONS -DENABLE_TOPCHROME_MD=1 -DUSE_UDEV -DFIELDTRIAL_TESTING_ENABLED -DENABLE_TASK_MANAGER=1 -DENABLE_EXTENSIONS=1 -DENABLE_PDF=1 -DENABLE_PLUGINS=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_AUTOFILL_DIALOG=1 -DENABLE_BACKGROUND=1 -DENABLE_PRINTING=1 -DENABLE_BASIC_PRINTING=1 -DENABLE_PRINT_PREVIEW=1 -DENABLE_SPELLCHECK=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_APP_LIST=1 -DENABLE_SETTINGS_APP=1 -DENABLE_SUPERVISED_USERS=1 -DENABLE_MDNS=1 -DENABLE_SERVICE_DISCOVERY=1 -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DWEBRTC_LINUX -DHASH_NAMESPACE=__gnu_cxx -DWEBRTC_POSIX -DDISABLE_DYNAMIC_CAST -D_REENTRANT -DEXPAT_RELATIVE_PATH -DWEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE -D_LARGEFILE_SOURCE -DUSE_BACKTRACE -DUSE_LIBPCI=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -Igen -I../../../../../third_party/webrtc/src -I../../../../../third_party/webrtc/src -I../../../../../third_party/webrtc/src/third_party -I../../../../../third_party/webrtc/src/third_party/webrtc -I../../../../../third_party/webrtc/src/webrtc -I/home/vagrant/.node-gyp/8.4.0/include/node -I/home/vagrant/.node-gyp/8.4.0/src -I/home/vagrant/.node-gyp/8.4.0/deps/uv/include -I/home/vagrant/.node-gyp/8.4.0/deps/v8/include -I../../../../../third_party/webrtc/src/third_party/jsoncpp/source/include -I../../../../../third_party/webrtc/src/third_party/libsrtp/srtp -I../../../../../third_party/webrtc/src/third_party/libyuv/include -I../../../../../node_modules/nan -fstack-protector --param=ssp-buffer-size=4  -pthread -fno-strict-aliasing -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -fcolor-diagnostics -B/home/vagrant/webrtc-native/third_party/webrtc/src/third_party/binutils/Linux_x64/Release/bin -Wheader-hygiene -Wno-char-subscripts -Wno-unneeded-internal-declaration -Wno-covered-switch-default -Wstring-conversion -Wno-c++11-narrowing -Wno-deprecated-register -Wno-inconsistent-missing-override -Wno-shift-negative-value -Wall -Wextra -Wformat -Wformat-security -Wimplicit-fallthrough -Wmissing-braces -Wreorder -Wunused-variable -Wno-address-of-array-temporary -Wthread-safety -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wno-strict-overflow -Wimplicit-fallthrough -Wthread-safety -pthread -Wall -Wextra -Wno-unused-parameter -m64 -fPIC -Wno-deprecated-declarations -Wno-unused-variable -Wno-unknown-pragmas -Wno-unused-result -m64 -march=x86-64 --sysroot=/home/vagrant/webrtc-native/third_party/webrtc/src/build/linux/debian_wheezy_amd64-sysroot -O2 -fno-ident -fdata-sections -ffunction-sections -funwind-tables -O3 -fno-omit-frame-pointer -fno-exceptions -fno-rtti -fno-threadsafe-statics -fvisibility-inlines-hidden -std=gnu++11 -Wunused-private-field -Wnon-virtual-dtor -Woverloaded-virtual -fno-rtti -fno-exceptions -std=gnu++0x -Wno-non-virtual-dtor -Wno-delete-non-virtual-dtor -Wno-overloaded-virtual  -c ../../../../../src/Observers.cc -o ../../src/webrtc.Observers.o
In file included from ../../../../../src/Observers.cc:28:
In file included from ../../../../../src/DataChannel.h:33:
../../../../../src/ArrayBuffer.h:314:44: error: no template named 'WeakCallbackData' in namespace 'v8'; did you mean 'WeakCallbackInfo'?
    static inline void onDispose(const v8::WeakCallbackData<v8::ArrayBuffer, ArrayBuffer> &info) {
                                       ~~~~^~~~~~~~~~~~~~~~
                                           WeakCallbackInfo
/home/vagrant/.node-gyp/8.4.0/include/node/v8.h:7990:16: note: 'WeakCallbackInfo' declared here
  friend class WeakCallbackInfo;
               ^
In file included from ../../../../../src/Observers.cc:28:
In file included from ../../../../../src/DataChannel.h:33:
../../../../../src/ArrayBuffer.h:314:44: error: too many template arguments for class template 'WeakCallbackInfo'
    static inline void onDispose(const v8::WeakCallbackData<v8::ArrayBuffer, ArrayBuffer> &info) {
                                           ^                                 ~~~~~~~~~~~~
/home/vagrant/.node-gyp/8.4.0/include/node/v8.h:7990:16: note: template is declared here
  friend class WeakCallbackInfo;
               ^
In file included from ../../../../../src/Observers.cc:28:
In file included from ../../../../../src/DataChannel.h:33:
../../../../../src/ArrayBuffer.h:109:20: error: no member named 'SetHiddenValue' in 'v8::ArrayBuffer'
      arrayBuffer->SetHiddenValue(v8::String::NewFromUtf8(isolate, "node::ArrayBuffer"), v8::External::New(isolate, buffer));
      ~~~~~~~~~~~  ^
../../../../../src/ArrayBuffer.h:123:49: error: no member named 'GetHiddenValue' in 'v8::ArrayBuffer'
        v8::Local<v8::Value> ptr = arrayBuffer->GetHiddenValue(v8::String::NewFromUtf8(isolate, "node::ArrayBuffer"));
                                   ~~~~~~~~~~~  ^
../../../../../src/ArrayBuffer.h:142:22: error: no member named 'SetHiddenValue' in 'v8::ArrayBuffer'
        arrayBuffer->SetHiddenValue(v8::String::NewFromUtf8(isolate, "node::ArrayBuffer"), v8::External::New(isolate, buffer));
        ~~~~~~~~~~~  ^
../../../../../src/ArrayBuffer.h:325:24: error: no member named 'DeleteHiddenValue' in 'v8::ArrayBuffer'
          arrayBuffer->DeleteHiddenValue(v8::String::NewFromUtf8(isolate, "node::ArrayBuffer"));
          ~~~~~~~~~~~  ^
6 errors generated.
[2028/2037] CXX obj/webrtc/api/libjingle_peerconnection.webrtcsdp.o
ninja: build stopped: subcommand failed.

Simple-peer tests fail

Hi,

Tests in the simple-peer package fail:

  • the basic.js fails because GetStats seems to return an array of empty hashes
  • the trickle.js fails because the simple-peer doesn't receive an onicecandidate with a null candidate (see node-webrtc/node-webrtc#123).

I wanted to test webrtc-native for the webtorrent-hybrid project, but it doesn't work because of these bugs I guess.

I tried to compile the module myself in order to make some tests, but it doesn't seem to work with the latest chromium code. Can you share the version you use?

Thanks for your work,
Chocobozzz

npm install hangs when downloading module (osx)

Very Strange issue:

I used this library successfully for the past months (1.2.2) and decided to update to the latest changes. I always prefer a clean install for all node modules, so i did a fresh install. My setup is as follows:

  • node 0.12.12 (cant really change that coz of other deps)
  • npm 3.6.0
  • OSX 10.11.3

I'm using nvm for node versioning. When running npm install it downloads the binary like always, but it gets stuck at Done! :), thus also preventing install of other modules.

I also did a fresh clone of the project and tried to install it there, but same output. Loglevel silly doesn't output anything useful (Downloading module..., Loading module..., Done :))

When compiling from scratch it works, however given my project should run in various environments, this shouldn't really be an option.

Any tips how to resolve this?

build fails on mac

I ran node build.js (with node 0.12.2), and it failed like this:

...

________ running '/usr/bin/python src/webrtc/build/gyp_webrtc -Dextra_gyp_flag=0' in '/code/webrtc-native/third_party/webrtc'
Updating projects from gyp files...
Hook '/usr/bin/python src/webrtc/build/gyp_webrtc -Dextra_gyp_flag=0' took 12.79 secs
Running: git submodule foreach 'git config -f $toplevel/.git/config submodule.$name.ignore all'
Running: git config --add remote.origin.fetch '+refs/tags/*:refs/tags/*'
Running: git config diff.ignoreSubmodules all
target_arch = x64
host_arch = x64
configuration = Release
SKIP_SYNC = false
Enable / Disable Sync: 
export SKIP_SYNC=1
export SKIP_SYNC=0

________ running '/usr/bin/python -c import os,sys;script = os.path.join("trunk","check_root_dir.py");_ = os.system("%s %s" % (sys.executable,script)) if os.path.exists(script) else 0' in '/code/webrtc-native/third_party/webrtc'

________ running '/usr/bin/python -u src/sync_chromium.py --target-revision a12e1e10c4a910a4f8aa20e3ea8b611846f19ed9' in '/code/webrtc-native/third_party/webrtc'
Chromium already up to date:  a12e1e10c4a910a4f8aa20e3ea8b611846f19ed9

________ running '/usr/bin/python src/setup_links.py' in '/code/webrtc-native/third_party/webrtc'

________ running '/usr/bin/python src/third_party/instrumented_libraries/scripts/download_binaries.py' in '/code/webrtc-native/third_party/webrtc'

________ running 'download_from_google_storage --directory --recursive --num_threads=10 --no_auth --bucket chromium-webrtc-resources src/resources' in '/code/webrtc-native/third_party/webrtc'

________ running '/usr/bin/python src/webrtc/build/gyp_webrtc -Dextra_gyp_flag=0' in '/code/webrtc-native/third_party/webrtc'
Updating projects from gyp files...
Hook '/usr/bin/python src/webrtc/build/gyp_webrtc -Dextra_gyp_flag=0' took 11.96 secs
Building WebRTC Node Module
Updating projects from gyp files...
gyp: build/config.gypi not found (cwd: /code/webrtc-native) while reading includes of webrtc.gyp
child_process.js:1389
    throw err;
          ^
Error: Command failed: python /code/webrtc-native/third_party/webrtc/src/webrtc/build/gyp_webrtc webrtc.gyp
    at checkExecSyncError (child_process.js:1346:13)
    at execSync (child_process.js:1386:13)
    at Object.<anonymous> (/code/webrtc-native/build.js:160:3)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3

So I made another attempt with echo "{}" > build/config.gypi and then I get a different error:

target_arch = x64
host_arch = x64
configuration = Release
SKIP_SYNC = true
Enable / Disable Sync: 
export SKIP_SYNC=1
export SKIP_SYNC=0
Building WebRTC Node Module
Updating projects from gyp files...
ninja: Entering directory `/code/webrtc-native/third_party/webrtc/src/out/Release'
ninja: error: obj/../../../webrtc-native.ninja:162: expected '=', got identifier
dule_internal_impl.a libjingle_p2p.a libsrtp.a | $
                     ^ near here
child_process.js:1389
    throw err;
          ^
Error: Command failed: ninja -C /code/webrtc-native/third_party/webrtc/src/out/Release
    at checkExecSyncError (child_process.js:1346:13)
    at execSync (child_process.js:1386:13)
    at Object.<anonymous> (/code/webrtc-native/build.js:166:3)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3

require webrtc-native module error

Hi, I get some error messages when I require webrtc-native module

Error: Cannot find module './build/Release/webrtc.node'
    at Function.Module._resolveFilename (module.js:339:15)
    at Function.Module._load (module.js:290:25)
    at Module.require (module.js:367:17)
    at require (internal/module.js:16:19)
    at Object.<anonymous> (/Users/tidenet/Documents/workspace/peer-to-peer/node_modules/webrtc-native/index.js:2:18)
    at Module._compile (module.js:413:34)
    at Module._extensions..js (module.js:422:10)
    at Object.require.extensions.(anonymous function) [as .js] (/Users/tidenet/Documents/workspace/peer-to-peer/node_modules/babel-register/lib/node.js:136:7)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)

My os is mac osx.
XCode version is 7.2.1.
Node version is 5.6.0.

Thank you.

npm install fails with node-gyp

Before starting a project that depends on webrtc-native, I tried to use one of the tests test/videoStream.js as a new index.js.
I changed line 1 to write var WebRTC = require('webrtc-native'); and created a package.json as usual.

When running export BUILD_WEBRTC=true && npm install webrtc-native --save as instructed in the readme, the install fails with:

> [email protected] install <myDir>/webrtc-native-test/node_modules/webrtc-native
> node scripts/install.js

Building module...
module.js:328
    throw err;
    ^

Error: Cannot find module '<myDir>/webrtc-native-test/node_modules/webrtc-native/node_modules/node-gyp/bin/node-gyp.js'
[...]

since the scripts/install.js looks in the wrong sub-dir for the node-gyp module.

It should not look for it in

<myDir>/webrtc-native-test/node_modules/webrtc-native/node_modules/node-gyp/

but rather in

<myDir>/webrtc-native-test/node_modules/node-gyp/

Full WebRTC?

This project looks pretty promising, Wondering if this has full audio & video Webrtc capabilities?

simple-peer fails on undefined pc.remoteDescription

$ node test/bwtest.js 
bwtest args: { _: [] }
~/code/webrtc-native/node_modules/simple-peer/index.js:151
      if (self._pc.remoteDescription.type === 'offer') self._createAnswer()
                                    ^
TypeError: Cannot read property 'type' of undefined
    at RTCPeerConnection.<anonymous> (~/code/webrtc-native/node_modules/simple-peer/index.js:151:37)

build fails on Core.cc - ignoring return value of function declared with warn_unused_result

on MAC

../../../../../src/Core.cc:56:5: error: ignoring return value of function declared with warn_unused_result attribute [-Werror,-Wunused-result]
    _manager.release();
    ^~~~~~~~~~~~~~~~
../../../../../src/Core.cc:63:3: error: ignoring return value of function declared with warn_unused_result attribute [-Werror,-Wunused-result]
  _manager.release();
  ^~~~~~~~~~~~~~~~

Debian Jessie: Install with node 5.3.0 failing

I have the install via npm install webrtc-native --save failing on debian jessie (with all prereg installed and successful build with an older nodejs version):

[...]
5091 info lifecycle [email protected]~install: Failed to exec install script
5092 verbose unlock done using /home/ax3l/.npm/_locks/staging-4fd396471c691efe.lock for /home/ax3l/node_modules/.staging
5093 silly rollbackFailedOptional Starting
5094 silly rollbackFailedOptional Finishing
5095 silly runTopLevelLifecycles Starting
5096 silly runTopLevelLifecycles Finishing
5097 silly install printInstalled
5098 warn ENOENT ENOENT: no such file or directory, open '/home/ax3l/package.json'
5099 warn EPACKAGEJSON webrtc-native No description
5100 warn EPACKAGEJSON webrtc-native No repository field.
5101 warn EPACKAGEJSON webrtc-native No README data
5102 warn EPACKAGEJSON webrtc-native No license field.
5103 verbose stack Error: [email protected] install: `node scripts/install.js`
5103 verbose stack Exit status 1
5103 verbose stack     at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/lib/utils/lifecycle.js:232:16)
5103 verbose stack     at emitTwo (events.js:87:13)
5103 verbose stack     at EventEmitter.emit (events.js:172:7)
5103 verbose stack     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/lib/utils/spawn.js:24:14)
5103 verbose stack     at emitTwo (events.js:87:13)
5103 verbose stack     at ChildProcess.emit (events.js:172:7)
5103 verbose stack     at maybeClose (internal/child_process.js:818:16)
5103 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)
5104 verbose pkgid [email protected]
5105 verbose cwd /home/ax3l
5106 error Linux 3.16.0-4-amd64
5107 error argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "webrtc-native" "--verbose" "--save"
5108 error node v5.3.0
5109 error npm  v3.3.12
5110 error code ELIFECYCLE
5111 error [email protected] install: `node scripts/install.js`
5111 error Exit status 1
5112 error Failed at the [email protected] install script 'node scripts/install.js'.
5112 error Make sure you have the latest version of node.js and npm installed.
5112 error If you do, this is most likely a problem with the webrtc-native package,
5112 error not with npm itself.
5112 error Tell the author that this fails on your system:
5112 error     node scripts/install.js
5112 error You can get their info via:
5112 error     npm owner ls webrtc-native
5112 error There is likely additional logging output above.
5113 verbose exit [ 1, true ]

Am I doing something wrong?

I tried it with an older nodejs version before but got install warnings (and runtime segfaults).

Unable to instlal it on windows 10, 64bit

Following error on console, whn i try to install it.

at Error (native)
at Object.fs.linkSync (fs.js:869:18)
at init (D:\WebRTCServerAsClient\node_modules\webrtc-native\scripts\build.js:41:6)
at Object. (D:\WebRTCServerAsClient\node_modules\webrtc-native\scripts\build.js:291:3)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)

support for node 0.10 ?

nice! I like the native approach ๐Ÿ‘
build.js fails immediately with node 0.10 due to execSync missing from child_process, which is an easy thing to fix.
though I wonder if the rest of the native code supports node 0.10 ?

hang after returning certificate

$ node test
WebRtc VoiceEngine codecs:
ISAC/16000/1 (103)
ISAC/32000/1 (104)
Warning(webrtcvoiceengine.cc:569): Unexpected codec: ISAC/48000/1 (105)
PCMU/8000/1 (0)
PCMA/8000/1 (8)
Warning(webrtcvoiceengine.cc:569): Unexpected codec: PCMU/8000/2 (110)
Warning(webrtcvoiceengine.cc:569): Unexpected codec: PCMA/8000/2 (118)
ILBC/8000/1 (102)
G722/8000/1 (9)
Warning(webrtcvoiceengine.cc:569): Unexpected codec: G722/8000/2 (119)
opus/48000/2 (111)
CN/8000/1 (13)
CN/16000/1 (105)
CN/32000/1 (106)
telephone-event/8000/1 (126)
red/8000/1 (127)
WebRtcVideoEngine2::WebRtcVideoEngine2()
WebRtcVoiceEngine::Init
webrtc: CheckPlatform
webrtc: current platform is MAC
webrtc: CreatePlatformSpecificObjects
webrtc: output: kPlatformDefaultAudio
webrtc: Mac OS X Audio APIs will be utilized
webrtc: AttachAudioBuffer
webrtc:   OS info: OS X
webrtc:  Hardware model: MacBookAir6,2
webrtc:   number of availiable waveform-audio output devices is 3
webrtc:  Output device: Apple Inc. Built-in Output
webrtc: AudioMixerManagerMac::OpenSpeaker(id=38)
webrtc:  No process has hogged the input device
webrtc:   number of availiable waveform-audio input devices is 2
webrtc:  Input device: Apple Inc. Built-in Microphone
webrtc: AudioMixerManagerMac::OpenMicrophone(id=48)
webrtc:  No process has hogged the input device
webrtc: output: available=1
webrtc: output: available=1
webrtc: TransmitMixer::SetAudioProcessingModule(audioProcessingModule=0x150aff0)
webrtc: OutputMixer::SetAudioProcessingModule(audioProcessingModule=0x150aff0)
WebRtc VoiceEngine Version:
VoiceEngine 4.1.0
Applying audio options: AudioOptions {aec: true, agc: true, ns: true, hf: true, swap: false, typing: true, conference: false, agc_delta: 0, experimental_agc: false, experimental_aec: false, delay_agnostic_aec: false, experimental_ns: false, aec_dump: false, }
Error(webrtcvoiceengine.cc:1446): webrtc: Built-in AEC not supported on this platform
High pass filter enabled? 1
Stereo swapping enabled? 0
Typing detection is enabled? 1
Adjust agc delta is 0
Adjusting AGC level from default -2dB to -2dB
Aec dump is enabled? 0
Delay agnostic aec is enabled? 0
Experimental aec is enabled? 0
Experimental ns is enabled? 0
WebRtc VoiceEngine codecs:
opus/48000/2 (111)
ISAC/16000/1 (103)
ISAC/32000/1 (104)
G722/8000/1 (9)
ILBC/8000/1 (102)
PCMU/8000/1 (0)
PCMA/8000/1 (8)
CN/32000/1 (106)
CN/16000/1 (105)
CN/8000/1 (13)
red/8000/1 (127)
telephone-event/8000/1 (126)
WebRtcVoiceEngine::Init Done!
WebRtcVideoEngine2::Init
Applying audio options: AudioOptions {aec: true, agc: true, ns: true, hf: true, swap: false, typing: true, conference: false, agc_delta: 0, experimental_agc: false, experimental_aec: false, delay_agnostic_aec: false, experimental_ns: false, aec_dump: false, }
Error(webrtcvoiceengine.cc:1446): webrtc: Built-in AEC not supported on this platform
High pass filter enabled? 1
Stereo swapping enabled? 0
Typing detection is enabled? 1
Adjust agc delta is 0
Adjusting AGC level from default -2dB to -2dB
Aec dump is enabled? 0
Delay agnostic aec is enabled? 0
Experimental aec is enabled? 0
Experimental ns is enabled? 0
Setting microphone to (id=0, name=Default device) and speaker to (id=0, name=Default device)
Set microphone to (id=0 name=Default device) and speaker to (id=0 name=Default device)
Making key pair
WebRtc VoiceEngine codecs:
ISAC/16000/1 (103)
ISAC/32000/1 (104)
Warning(webrtcvoiceengine.cc:569): Unexpected codec: ISAC/48000/1 (105)
PCMU/8000/1 (0)
PCMA/8000/1 (8)
Warning(webrtcvoiceengine.cc:569): Unexpected codec: PCMU/8000/2 (110)
Warning(webrtcvoiceengine.cc:569): Unexpected codec: PCMA/8000/2 (118)
ILBC/8000/1 (102)
G722/8000/1 (9)
Warning(webrtcvoiceengine.cc:569): Unexpected codec: G722/8000/2 (119)
opus/48000/2 (111)
CN/8000/1 (13)
CN/16000/1 (105)
CN/32000/1 (106)
telephone-event/8000/1 (126)
red/8000/1 (127)
WebRtcVideoEngine2::WebRtcVideoEngine2()
WebRtcVoiceEngine::Init
webrtc: CheckPlatform
webrtc: current platform is MAC
webrtc: CreatePlatformSpecificObjects
webrtc: output: kPlatformDefaultAudio
webrtc: Mac OS X Audio APIs will be utilized
webrtc: AttachAudioBuffer
webrtc:   OS info: OS X
webrtc:  Hardware model: MacBookAir6,2
webrtc:   number of availiable waveform-audio output devices is 3
webrtc:  Output device: Apple Inc. Built-in Output
webrtc: AudioMixerManagerMac::OpenSpeaker(id=38)
webrtc:  No process has hogged the input device
webrtc:   number of availiable waveform-audio input devices is 2
webrtc:  Input device: Apple Inc. Built-in Microphone
webrtc: AudioMixerManagerMac::OpenMicrophone(id=48)
webrtc:  No process has hogged the input device
webrtc: output: available=1
webrtc: output: available=1
webrtc: TransmitMixer::SetAudioProcessingModule(audioProcessingModule=0x1221bf0)
webrtc: OutputMixer::SetAudioProcessingModule(audioProcessingModule=0x1221bf0)
WebRtc VoiceEngine Version:
VoiceEngine 4.1.0
Applying audio options: AudioOptions {aec: true, agc: true, ns: true, hf: true, swap: false, typing: true, conference: false, agc_delta: 0, experimental_agc: false, experimental_aec: false, delay_agnostic_aec: false, experimental_ns: false, aec_dump: false, }
Error(webrtcvoiceengine.cc:1446): webrtc: Built-in AEC not supported on this platform
High pass filter enabled? 1
Stereo swapping enabled? 0
Typing detection is enabled? 1
Adjust agc delta is 0
Adjusting AGC level from default -2dB to -2dB
Aec dump is enabled? 0
Delay agnostic aec is enabled? 0
Experimental aec is enabled? 0
Experimental ns is enabled? 0
WebRtc VoiceEngine codecs:
opus/48000/2 (111)
ISAC/16000/1 (103)
ISAC/32000/1 (104)
G722/8000/1 (9)
ILBC/8000/1 (102)
PCMU/8000/1 (0)
PCMA/8000/1 (8)
CN/32000/1 (106)
CN/16000/1 (105)
CN/8000/1 (13)
red/8000/1 (127)
telephone-event/8000/1 (126)
WebRtcVoiceEngine::Init Done!
WebRtcVideoEngine2::Init
Applying audio options: AudioOptions {aec: true, agc: true, ns: true, hf: true, swap: false, typing: true, conference: false, agc_delta: 0, experimental_agc: false, experimental_aec: false, delay_agnostic_aec: false, experimental_ns: false, aec_dump: false, }
Error(webrtcvoiceengine.cc:1446): webrtc: Built-in AEC not supported on this platform
High pass filter enabled? 1
Stereo swapping enabled? 0
Typing detection is enabled? 1
Adjust agc delta is 0
Adjusting AGC level from default -2dB to -2dB
Aec dump is enabled? 0
Delay agnostic aec is enabled? 0
Experimental aec is enabled? 0
Experimental ns is enabled? 0
Setting microphone to (id=0, name=Default device) and speaker to (id=0, name=Default device)
Set microphone to (id=0 name=Default device) and speaker to (id=0 name=Default device)
Making key pair
Allowing SCTP data engine.
Returning key pair
Making certificate for WebRTC
Returning certificate
Making key pair
Local and Remote descriptions must be applied to get SSL Role of the session.
Error(webrtcsession.cc:1200): ConnectDataChannel called when data_channel_ is NULL.
Alice State: stable
Allowing SCTP data engine.
Returning key pair
Making certificate for WebRTC
Returning certificate
Making key pair
Bob State: stable
Returning key pair
Making certificate for WebRTC
Returning certificate
Returning key pair
Making certificate for WebRTC
Returning certificate
Session:8792605950890241566 Old state:STATE_INIT New state:STATE_RECEIVEDTERMINATE Type:urn:xmpp:jingle:apps:rtp:1 Transport:http://www.google.com/transport/p2p
Session:7365232863691173892 Old state:STATE_INIT New state:STATE_RECEIVEDTERMINATE Type:urn:xmpp:jingle:apps:rtp:1 Transport:http://www.google.com/transport/p2p
Total count of channels: 0

and there it stays just hanging...

the same also happens when I redirect any of the tests from node-webrtc to use webrtc native
such as https://github.com/js-platform/node-webrtc/blob/develop/test/connect.js but it seems consistent that it hangs after returning certificate.

v8::ObjectTemplate::Set() with non-primitive values is deprecated and will stop working in the next major release.

Built the latest version e10bc4e1 on Windows, and while it seems to work fine, it throws a few stack traces before running, saying

(node) v8::ObjectTemplate::Set() with non-primitive values is deprecated
(node) and will stop working in the next major release.

==== JS stack trace =========================================

Security context: 000003BB4FECFB61 <JS Object>#0#
    1: .node [module.js:597] [pc=000003C663D81524] (this=00000145768C1D49 <an Object with map 0000017F6DC1AC51>#1#,module=000000F9FE79F809 <a Module with map 0000017F6DC1BA69>#2#,filename=000000F9FE79DD09 <String[30]: C:\w\build\Release\webrtc.node>)
    2: load [module.js:487] [pc=000003C663D40D32] (this=000000F9FE79F809 <a Module with map 0000017F6DC1BA69>#2#,filename=000000F9FE79DD09 <String[30]: C:\w\build\Release\webrtc.node>)
    3: tryModuleLoad(aka tryModuleLoad) [module.js:446] [pc=000003C663D4085D] (this=000003BB4FE04381 <undefined>,module=000000F9FE79F809 <a Module with map 0000017F6DC1BA69>#2#,filename=000000F9FE79DD09 <String[30]: C:\w\build\Release\webrtc.node>)
    4: _load [module.js:438] [pc=000003C663D355A2] (this=00000145768C1D01 <JS Function Module (SharedFunctionInfo 000001457682D2B1)>#3#,request=00000268C6C6DDE9 <String[27]: ./build/Release/webrtc.node>,parent=000000F9FE79BFF9 <a Module with map 0000017F6DC1BA69>#4#,isMain=000003BB4FE04271 <false>)
    5: require [module.js:497] [pc=000003C663D4AA33] (this=000000F9FE79BFF9 <a Module with map 0000017F6DC1BA69>#4#,path=00000268C6C6DDE9 <String[27]: ./build/Release/webrtc.node>)
    6: require(aka require) [internal/module.js:20] [pc=000003C663D4A766] (this=000003BB4FE04381 <undefined>,path=00000268C6C6DDE9 <String[27]: ./build/Release/webrtc.node>)
    7: /* anonymous */ [C:\w\index.js:2] [pc=000003C663D8127E] (this=000000F9FE79C049 <an Object with map 00000221BBB075E9>#5#,exports=000000F9FE79C049 <an Object with map 00000221BBB075E9>#5#,require=000000F9FE79CC99 <JS Function require (SharedFunctionInfo 000001457685FF31)>#6#,module=000000F9FE79BFF9 <a Module with map 0000017F6DC1BA69>#4#,__filename=000000F9FE79B211 <String[13]: C:\w\index.js>,__dirname=000000F9FE79CC39 <String[4]: C:\w>)
    8: _compile [module.js:570] [pc=000003C663D49EF0] (this=000000F9FE79BFF9 <a Module with map 0000017F6DC1BA69>#4#,content=000000F9FE79C811 <String[58]\: \nmodule.exports = require('./build/Release/webrtc.node');\n>,filename=000000F9FE79B211 <String[13]: C:\w\index.js>)
    9: .js [module.js:579] [pc=000003C663D42F2B] (this=00000145768C1D49 <an Object with map 0000017F6DC1AC51>#1#,module=000000F9FE79BFF9 <a Module with map 0000017F6DC1BA69>#4#,filename=000000F9FE79B211 <String[13]: C:\w\index.js>)
   10: load [module.js:487] [pc=000003C663D40D32] (this=000000F9FE79BFF9 <a Module with map 0000017F6DC1BA69>#4#,filename=000000F9FE79B211 <String[13]: C:\w\index.js>)
   11: tryModuleLoad(aka tryModuleLoad) [module.js:446] [pc=000003C663D4085D] (this=000003BB4FE04381 <undefined>,module=000000F9FE79BFF9 <a Module with map 0000017F6DC1BA69>#4#,filename=000000F9FE79B211 <String[13]: C:\w\index.js>)
   12: _load [module.js:438] [pc=000003C663D355A2] (this=00000145768C1D01 <JS Function Module (SharedFunctionInfo 000001457682D2B1)>#3#,request=0000014576827BD1 <String[2]: ..>,parent=00000145768C1DC9 <a Module with map 0000017F6DC1BA69>#7#,isMain=000003BB4FE04271 <false>)
   13: require [module.js:497] [pc=000003C663D4AA33] (this=00000145768C1DC9 <a Module with map 0000017F6DC1BA69>#7#,path=0000014576827BD1 <String[2]: ..>)
   14: require(aka require) [internal/module.js:20] [pc=000003C663D4A766] (this=000003BB4FE04381 <undefined>,path=0000014576827BD1 <String[2]: ..>)
   15: /* anonymous */ [C:\w\test\multiconnect.js:5] [pc=000003C663D4DAC7] (this=00000145768C1FA1 <an Object with map 00000221BBB075E9>#8#,exports=00000145768C1FA1 <an Object with map 00000221BBB075E9>#8#,require=00000145768C1E59 <JS Function require (SharedFunctionInfo 000001457685FF31)>#9#,module=00000145768C1DC9 <a Module with map 0000017F6DC1BA69>#7#,__filename=00000145768C1F69 <String[25]: C:\w\test\multiconnect.js>,__dirname=00000145768C1F41 <String[9]: C:\w\test>)
   16: _compile [module.js:570] [pc=000003C663D49EF0] (this=00000145768C1DC9 <a Module with map 0000017F6DC1BA69>#7#,content=00000145768C2C11 <Very long string[3004]>#10#,filename=00000145768C1F69 <String[25]: C:\w\test\multiconnect.js>)
   17: .js [module.js:579] [pc=000003C663D42F2B] (this=00000145768C1D49 <an Object with map 0000017F6DC1AC51>#1#,module=00000145768C1DC9 <a Module with map 0000017F6DC1BA69>#7#,filename=00000145768C1F69 <String[25]: C:\w\test\multiconnect.js>)
   18: load [module.js:487] [pc=000003C663D40D32] (this=00000145768C1DC9 <a Module with map 0000017F6DC1BA69>#7#,filename=00000145768C1F69 <String[25]: C:\w\test\multiconnect.js>)
   19: tryModuleLoad(aka tryModuleLoad) [module.js:446] [pc=000003C663D4085D] (this=000003BB4FE04381 <undefined>,module=00000145768C1DC9 <a Module with map 0000017F6DC1BA69>#7#,filename=00000145768C1F69 <String[25]: C:\w\test\multiconnect.js>)
   20: _load [module.js:438] [pc=000003C663D355A2] (this=00000145768C1D01 <JS Function Module (SharedFunctionInfo 000001457682D2B1)>#3#,request=000001457685F949 <String[14]: ./multiconnect>,parent=00000145768C3809 <a Module with map 0000017F6DC1BA69>#11#,isMain=000003BB4FE04271 <false>)
   21: require [module.js:497] [pc=000003C663D4AA33] (this=00000145768C3809 <a Module with map 0000017F6DC1BA69>#11#,path=000001457685F949 <String[14]: ./multiconnect>)
   22: require(aka require) [internal/module.js:20] [pc=000003C663D4A766] (this=000003BB4FE04381 <undefined>,path=000001457685F949 <String[14]: ./multiconnect>)
   23: /* anonymous */ [C:\w\test\all.js:1] [pc=000003C663D4A1BB] (this=00000145768C3979 <an Object with map 00000221BBB075E9>#12#,exports=00000145768C3979 <an Object with map 00000221BBB075E9>#12#,require=00000145768C3899 <JS Function require (SharedFunctionInfo 000001457685FF31)>#13#,module=00000145768C3809 <a Module with map 0000017F6DC1BA69>#11#,__filename=00000145768C3951 <String[16]: C:\w\test\all.js>,__dirname=00000145768C3929 <String[9]: C:\w\test>)
   24: _compile [module.js:570] [pc=000003C663D49EF0] (this=00000145768C3809 <a Module with map 0000017F6DC1BA69>#11#,content=00000145768C3A69 <String[55]\: require('./multiconnect');\nrequire('./bwtest').tape();\n>,filename=00000145768C3951 <String[16]: C:\w\test\all.js>)
   25: .js [module.js:579] [pc=000003C663D42F2B] (this=00000145768C1D49 <an Object with map 0000017F6DC1AC51>#1#,module=00000145768C3809 <a Module with map 0000017F6DC1BA69>#11#,filename=00000145768C3951 <String[16]: C:\w\test\all.js>)
   26: load [module.js:487] [pc=000003C663D40D32] (this=00000145768C3809 <a Module with map 0000017F6DC1BA69>#11#,filename=00000145768C3951 <String[16]: C:\w\test\all.js>)
   27: tryModuleLoad(aka tryModuleLoad) [module.js:446] [pc=000003C663D4085D] (this=000003BB4FE04381 <undefined>,module=00000145768C3809 <a Module with map 0000017F6DC1BA69>#11#,filename=00000145768C3951 <String[16]: C:\w\test\all.js>)
   28: _load [module.js:438] [pc=000003C663D355A2] (this=00000145768C1D01 <JS Function Module (SharedFunctionInfo 000001457682D2B1)>#3#,request=00000145768543C9 <String[16]: C:\w\test\all.js>,parent=000003BB4FE04201 <null>,isMain=000003BB4FE043C1 <true>)
   29: /* anonymous */(aka /* anonymous */) [module.js:604] [pc=000003C663D3506A] (this=000003BB4FE04381 <undefined>)
   30: run(aka run) [bootstrap_node.js:394] [pc=000003C663D34EF0] (this=000003BB4FE04381 <undefined>,entryFunction=0000014576852E31 <JS Function Module.runMain (SharedFunctionInfo 000001457682E0F1)>#14#)
   31: startup(aka startup) [bootstrap_node.js:149] [pc=000003C663C44B12] (this=000003BB4FE04381 <undefined>)
   32: /* anonymous */(aka /* anonymous */) [bootstrap_node.js:509] [pc=000003C663C42939] (this=000003BB4FE04201 <null>,process=000003BB4FEE1EA1 <a process with map 00000221BBB113B1>#15#)
=====================

"npm install webrtc-native --save" doesn't work

I get throw new Error('prebuilt module not found. See the instructions from https://github.com/vmolsa/webrtc-native/wiki/Getting-started#building-from-source for building module from source.'); ^ Error: prebuilt module not found. See the instructions from https://github.com/vmolsa/webrtc-native/wiki/Getting-started#building-from-source for building module from source.
when i try to run npm install webrtc-native --save

Manual Path?

I got a weird requirejs config so this require call is not working for my set up
var WebRTC = require('webrtc-native');

Wondering what exactly is the main file being used? Will just try an absolute path

node js server can't forward the boardcast stream to client?

Hi, i have A peer and B peer, A peer provide a stream transport to webrtc-native server, and i want B peer get stream from nodejs server and play it.

but B peer in windows 7, i have a black screen. and the mediastream readystate is muted?

if in ubuntu 14.04.1, the nodejs server will be crash.

my node version is 0.12.7, it's webrtc-native bug? or my usage is wrong?

Prebuilt binaries not versioned

Somehow related to my findings in #31.

When downloading a module, it is not versioned by the lib itself, i.e. I use an older Version of webrtc-native (1.2.2 vs current 1.3.4), it is downloading the module as of

URL += 'webrtc-' + PLATFORM + '-' + ARCH + '-' + NODEVER + '.node';

and eventually returning (although it hangs up first due to #31 on my machine). However after using the module, it is clearly not the desired version (url is not versioned + the downloaded binary has the new chromium 50 api changes, e.g. new RTCStats format).

My proposal would be to keep the binaries of previous versions by downloading a versioned binary, then during piping of the request just rename it to webrtc.node as usual

A Stable Release for Windows Platform

Hi,

I could not find any Windows x64 release for this module. I could not install or build the source following the instructions, either. Could you please provide a Windows release too? Not necessarily for v 2.0.0 but for a stable version of webrtc-native?

Prebuilt binaries not found

When running npm install webrtc-native --save, I get the following:

npm install webrtc-native --save
[email protected] install /home/nithyesh/node_modules/webrtc-native
node scripts/install.js

Downloading module: webrtc-1.4.0-linux-x64-v6.9.x.node
/home/nithyesh/node_modules/webrtc-native/scripts/install.js:78
throw` new Error('prebuilt module not found. See the instructions from https://github.com/vmolsa/webrtc-native/wiki/Getting-started#building-from-source for building module from source.');
^

Error: prebuilt module not found. See the instructions from https://github.com/vmolsa/webrtc-native/wiki/Getting-started#building-from-source for building module from source.
at Request._callback (/home/nithyesh/node_modules/webrtc-native/scripts/install.js:78:13)
at Request.self.callback (/home/nithyesh/node_modules/request/request.js:186:22)
at emitTwo (events.js:106:13)
at Request.emit (events.js:191:7)
at Request. (/home/nithyesh/node_modules/request/request.js:1081:10)
at emitOne (events.js:101:20)
at Request.emit (events.js:188:7)
at IncomingMessage. (/home/nithyesh/node_modules/request/request.js:1001:12)
at IncomingMessage.g (events.js:291:16)
at emitNone (events.js:91:20)

It seems that the binaries are not present. Is there a way to proceed with this or is building from source my only option now?

Prebuilt modules for windows

Hi,

I'm interested in this library to add crossplatform webrtc support to eureca.io
right now I'm using node-webrtc, but it only support linux.

I have two questions

  • I don't have a windows environment with the prerequisties to build the module, are there any prebuilt binaries ?
  • since node-webrtc implements the WebRTC API as webrtc-native does, can I expect that the code using node-webrtc will remain compatible with webrtc-native or there are gotchas :) ?

Sources list empty

Using Ubuntu 14.04, WebRTC.getSources() returns an empty array. I have Alsa devices available and getUserMedia successfully returns an (seemingly) empty stream.

Won't build on Ubuntu 15.10

Hello!

Build is failing in multiple places. I'm trying to fix by manually installing libs, etc, and have made 2 changes so far, but as a result I don't have the exact error messages from those earlier failures (don't really feel like re-downloading chromium on my current internet connection!) - so I'm going to paraphrase.

Error 1:
missing .../third_party/icu/icu.gyp. The entire icu directory is missing. I pulled it from an earlier branch of chromium and put it in the expected location, which seems to have resolved the error message.

Error 2:
missing libvpx_new/libvpx.gyp Can't remember the exact details, but same idea - no libvpx_new folder was present. I also manually tried to install this, but am probably using the wrong version (I grabbed one from a day prior to your last commit ~26 October). Likely, that's the source of my current error:

Error 3:
I haven't been able to fix this yet:
ninja: error: '../../third_party/libvpx_new/source/libvpx/vp9/encoder/x86/vp9_error_intrin_avx2.c', needed by obj/third_party/libvpx_new/source/libvpx/vp9/encoder/x86/libvpx_intrinsics_avx2.vp9_error_intrin_avx2.o', missing and no known rule to make it

I read in another (closed) issue that you're planning to update to the latest WebRTC build. I'm looking forward to that, and thank you for your efforts!

Cross compiling for ARM

Webrtc-native works well on Ubuntu 14.04 including video and audio capturing with some modifications.
Now i'm trying to cross compile it to my arm based computer (it also has Ubuntu 14.04 OS). Any hints about how can i do it properly?

undefined symbol: jsimd_extxrgb_ycc_convert_sse2

I successfully build the code using buildwebrtc. when I tried to build it using another tool I got this error.
Error: /mnt/disk/node-webrtc-native/build/Release/webrtc.node: undefined symbol: jsimd_extxrgb_ycc_convert_sse2

I need to use the other tool to build the arm version. could you advise what could the error be.

regards,
M. Hefny

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.