Webrtc如何添加进去x265编码器。编译上面如何编译

Webrtc如何添加进去x265编码器。编译上面如何编译,webrtc源码支持的是ffmpeg的h265解码,但是编码的话,总感觉自己用ninja编译不进去

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
webrtc编译Android版本编译参数is_clang=false时,编译报错,is_clang=true时,编译成功。

[2274/3376] LINK ./rgba_to_i420_converter FAILED: rgba_to_i420_converter exe.unstripped/rgba_to_i420_converter python "../../build/toolchain/gcc_link_wrapper.py" --output="./rgba_to_i420_converter" --strip="../../buildtools/third_party/eu-strip/bin/eu-strip" --unstripped-file="./exe.unstripped/rgba_to_i420_converter" -- ../../third_party/llvm-build/Release+Asserts/bin/clang++ -Wl,--fatal-warnings -fPIC -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,-z,defs -Wl,--as-needed -fuse-ld=gold -Wl,--icf=all -Wl,--exclude-libs=libgcc.a -Wl,--exclude-libs=libvpx_assembly_arm.a --target=aarch64-linux-android -Wl,-mllvm,-enable-machine-outliner=never -Wl,--warn-shared-textrel -Wl,-O2 -Wl,--gc-sections -nodefaultlibs --sysroot=../../third_party/android_ndk/platforms/android-21/arch-arm64 -nostdlib -Wl,--warn-shared-textrel -pie -Bdynamic -Wl,-z,nocopyreloc -Wl,--dynamic-linker,/system/bin/linker64 -L../../third_party/android_ndk/sources/cxx-stl/llvm-libc++/libs/arm64-v8a -o "./exe.unstripped/rgba_to_i420_converter" -Wl,--start-group @"./rgba_to_i420_converter.rsp" -Wl,--end-group ../../third_party/android_ndk/platforms/android-21/arch-arm64/usr/lib/crtbegin_dynamic.o -lc -lgcc_s -lm -lrt -landroid_support ../../third_party/android_ndk/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/lib/gcc/aarch64-linux-android/4.9.x/libgcc.a -ldl -llog -lGLESv2 ../../third_party/android_ndk/platforms/android-21/arch-arm64/usr/lib/crtend_android.o /usr/bin/ld.gold: fatal error: obj/rtc_tools/rgba_to_i420_converter/converter.o: unsupported ELF machine number 183 clang: error: linker command failed with exit code 1 (use -v to see invocation)

webrtc中voiceengine在vs2010中编译出错

![图片说明](https://img-ask.csdn.net/upload/201507/14/1436881013_436597.png) 如上图所示,提示MoFreeMediaType和MoInitMediaType无法识别,这两个函数都在dmort.h这个头文件中,但我包含该头文件也还是不行。同样的工程在VS2005中编译就能通过,不会报上述错误,希望有大神可以帮忙解决下!

webrtc框架下得isac语音译码问题

看了了webrtc源代码的isac编译码程序,自己写了一个控制台程序,读取一个pcm int16的话音文件,然后用isac编码,最后译码,译码后语音明显有破音和过载,与原语音比较差异很明显,始终找不到原因,忘高手指教。以下是我写的源代码。 #include "stdafx.h" #include "isac.h" #include "utility.h" #include "math.h" #include "windows.h"; int _tmain(int argc, _TCHAR* argv[]) { ISACStruct* ISAC_main_inst; WebRtc_Word16 stream_len = 0; IsacSamplingRate sampFreqKHz = kIsacWideband; WebRtc_Word16 declen; WebRtc_Word16 speechType[1]; *speechType = 1; WebRtc_UWord16 payload[600]; WebRtc_Word16 decoded[1920]; WebRtc_Word16 decodeout[1920]; WebRtc_UWord16 payloadRCU[600]; WebRtc_Word16 rcuStreamLen = 0; int samplesIn10Ms = 160, cur_framesmpls = 0; const char Infilename[] = "D:\\matlab code\\fileout.pcm"; const char Outfilename[] = "D:\\matlab code\\fileout_decode.pcm"; FILE *filein, *fileout; short shortdata[160]; memset(shortdata, 0, 160); memset(decoded, 0, 1920); filein = fopen(Infilename, "r"); fileout = fopen(Outfilename, "w"); fclose(fileout); fileout = fopen(Outfilename, "a+"); //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ int err = WebRtcIsac_Create(&ISAC_main_inst); WebRtcIsac_SetEncSampRate(ISAC_main_inst, (sampFreqKHz == 16) ? kIsacWideband : kIsacSuperWideband); WebRtcIsac_SetDecSampRate(ISAC_main_inst, (sampFreqKHz == 16) ? kIsacWideband : kIsacSuperWideband); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ fseek(filein, 0, SEEK_END); int fsize = ftell(filein); int samplenum = floor((double)fsize / 2); int blocknum = floor((double)samplenum / samplesIn10Ms/3); fseek(filein, 0, SEEK_SET); if (WebRtcIsac_DecoderInit(ISAC_main_inst) < 0) { printf("cannot initialize decoder\n"); return -1; } if (WebRtcIsac_EncoderInit(ISAC_main_inst, 0) < 0) { printf("cannot initialize encoder\n"); return -1; } if (WebRtcIsac_ControlBwe(ISAC_main_inst, 36000, 30, 1) < 0) { printf("cannot configure BWE\n"); return -1; } BottleNeckModel packetData; packetData.arrival_time = 0; packetData.sample_count = 0; packetData.rtp_number = 0; stream_len = 0; for (int i = 0; i < blocknum; i++) { cur_framesmpls = 0; stream_len = 0; fseek(filein, i*samplesIn10Ms * 3 * 2, SEEK_SET); //+++++++++++read file and encode while (stream_len == 0) { int k = 0; int size = fread(shortdata, sizeof(short), samplesIn10Ms, filein); k++; fseek(filein, i*samplesIn10Ms * 3 * 2 + samplesIn10Ms*2*k, SEEK_SET); cur_framesmpls += samplesIn10Ms; //-------- iSAC encoding --------- stream_len = WebRtcIsac_Encode(ISAC_main_inst, shortdata, (WebRtc_Word16*)payload); if (stream_len < 0) { // exit if returned with error //errType=WebRtcIsac_GetErrorCode(ISAC_main_inst); fprintf(stderr, "\nError in encoder\n"); getchar(); exit(EXIT_FAILURE); } } rcuStreamLen = WebRtcIsac_GetRedPayload(ISAC_main_inst, (WebRtc_Word16*)payloadRCU); //++++++++++++++test parameters++++++++ //WebRtc_Word32 sendbottleneck; //WebRtcIsac_GetUplinkBw(ISAC_main_inst, &sendbottleneck); //WebRtcIsac_UpdateUplinkBw(ISAC_main_inst, 9); WebRtc_Word16 bweindex, framelen; WebRtcIsac_ReadBwIndex((WebRtc_Word16*)payload, &bweindex); WebRtcIsac_UpdateUplinkBw(ISAC_main_inst, bweindex); WebRtcIsac_ReadFrameLen(ISAC_main_inst, (WebRtc_Word16*)payload, &framelen); //=========================updata bw======================================== //get_arrival_time(cur_framesmpls, 10000, 16000, &packetData, //sampFreqKHz * 1000, sampFreqKHz * 1000); /* /* if (WebRtcIsac_UpdateBwEstimate(ISAC_main_inst, payload, stream_len, 1, 0, 480) < 0) { printf(" BWE Error at client\n"); return -1; }*/ //======================= iSAC decoding =========================== declen = WebRtcIsac_Decode(ISAC_main_inst, payload, stream_len, decoded, speechType); if (declen <= 0) { //errType=WebRtcIsac_GetErrorCode(ISAC_main_inst); fprintf(stderr, "\nError in decoder.\n"); getchar(); exit(1); } //+++++++++++++++++++++write file to the out file /*for (int i = 0; i < declen; i++) { WebRtc_Word16 bit1 = (int16_t)decoded[i] >> 15 & 0x0001; WebRtc_Word16 bit2 = (int16_t)decoded[i] >> 13 & 0x0002; WebRtc_Word16 bit3 = (int16_t)decoded[i] >> 11 & 0x0004; WebRtc_Word16 bit4 = (int16_t)decoded[i] >> 9 & 0x0008; WebRtc_Word16 bit5 = (int16_t)decoded[i] >> 7 & 0x0010; WebRtc_Word16 bit6 = (int16_t)decoded[i] >> 5 & 0x0020; WebRtc_Word16 bit7 = (int16_t)decoded[i] >> 3 & 0x0040; WebRtc_Word16 bit8 = (int16_t)decoded[i] >> 1 & 0x0080; WebRtc_Word16 bit9 = (int16_t)decoded[i] <<1 & 0x0100; WebRtc_Word16 bit10 = (int16_t)decoded[i] <<3 & 0x0200; WebRtc_Word16 bit11 = (int16_t)decoded[i] << 5 & 0x0400; WebRtc_Word16 bit12 = (int16_t)decoded[i] << 7 & 0x0800; WebRtc_Word16 bit13 = (int16_t)decoded[i] << 9 & 0x1000; WebRtc_Word16 bit14 = (int16_t)decoded[i] << 11 & 0x2000; WebRtc_Word16 bit15 = (int16_t)decoded[i] << 13 & 0x4000; WebRtc_Word16 bit16 = (int16_t)decoded[i] << 15 & 0x8000; decodeout[i] = bit1 | bit2 | bit3 | bit4 | bit5 | bit6| bit7 | bit8 | bit9 | bit10 | bit11 | bit12| bit13 | bit14 | bit15 | bit16; }*/ fwrite(decoded, sizeof(WebRtc_Word16), declen, fileout); } fclose(filein); fclose(fileout); return 0; }

webrtc理论上是看了个大概可是不知怎么着手?

我已经大概在webrtc中文网看了一下内容: 在webrtc中SDP是用于交互多媒体流信息的最小不接去除单位 _____________________________________________________________________________ webrtc是先定位两个人的位置,然后两个人都跳到同一个链接里面进行数据互通。信令结束以后,就不需要web服务器在中间传递数据。 编解编码器的功能是压缩和解压音频和视频数据。 还有实现设备间的信息互通,可能需要中继TURN服务器,因为可能因为对方的防火墙和NAT和限制了(隐藏了IP地址或者)用于通信的洞,所以只好在通话的时候进行ICE协商。就是发起者这边发了一个offer,有关怎么找到要准备进行通话的小伙伴的方法。然后,将这个数据给到服务器,然后服务器再给到那个小伙伴,然后那个小伙伴就可以通过设备找到发起人,然后就可以开始设备之间的互通,而不需要服务器在中间传递数据。 webrtc 三大API getUserMedia PeerConnection Data Channel getUserMedia 应用: #为用户文件档案拍照 #录制语音数据,并将数据发送到语音转文字引擎 #为用户录制语音或者视频,而且在掉包的情况下能保证语音及视频的质量不下滑 webrtc实例 https://www.jianshu.com/p/57fd3b5d2f80 Peer Connection #生成并传递SDP (不是通过网络本身传递,而是生成他们并处理输入的消息) #对音视频进行压缩和解压 #通过回声消除算法处理语音 #丢包隐藏,数据重传,抖动缓存区,估计宽带等功能 Data Channel #信息传输的通道,设置通道是否可靠,设置可靠则可以自动重传。 #通道设计类似于websocketAPI界别的通道,所以可以用websocket的想法去看待它。 #通道设计类似于在websocketAPI级别上工作,所以可以用websocket的思考法式对待它。 想要一个webrtc的应用的实现方法,有以下几点: 1.客户端 2.信道 3.NAT 4.媒体 1.客户端 浏览器端使用javasrcipt进行开发,或者用框架,或者很多人都是直接从github上开始的。 如果是软件的话,应该挑选合适的sdk。 如果是pc,则使用psdn或者嵌入式的方法进行开发。 如果是pc的话,则可以用Electron进行完成,说着用嵌入式的方式完成。 2.信道 你需要一个新到服务器,当然也可以不要。在用之前,你必须检查你的服务器是否有信道机制用于 非webrtc上。如果有,你可以在这些机制上搭载sdp消息和其他webrtc信令。 3.NAT 一下是你不应该做的: #不用trun服务器 #不用公共服务器 #不用stun公共服务器 #所有服务都在同一个服务器上实现 #不要一上来就想布置世界级的全球服务网络。 以下是你应该做的: #部署stun和turn在同一进程 #stun和turn应该在同一个服务器上部署,而且要部署到同一进程中。 #用coturn,几乎所有人都在使用。 #你也可以从其他公司获取NAT服务,例如XirSys和T willio也是不错的选择。 4.媒体 如果你使用pstn或者视频会议,音频或者更高级的功能,建议使用一个媒体服务器。 现在市面和商业服务器有很多,他们在很很多方面是有区别的。 现在开源和商业的服务器有很多,他们在很多方面都是有区别的。 webrtc使用领域前瞻 1.机器学习和人工智能 2.在线学习 3.在线医疗 4.社交媒体 webrtc打洞就是将交换数据双方ip,port和nat信息通过信令服务器进行交互,然后双方各自获得对方的信息后就进行穿透,stun对p2p依然后有问题,所以还需要用到ICE。然后libjingle就是ICE思想的具体实现。 _____________________________________________________________________________ 但是我不知道怎么着手去弄,信令服务器我查了,没有说买信令服务器的,都是说配置的。所以我不知怎么做了?希望有哪位老师指点一下。感激不尽!

基于chrome的webrtc在web端能不能实现分辨率动态调整,回音消除等等?

基于chrome的webrtc在web端能不能实现分辨率动态调整,回音消除等等? 1.还是必须要经过中转服务器对媒体流进行处理,能不能在web段进行处理呢? 2.如果有中转服务器,可以对媒体流进行二次处理吗?比如二次编码,自适应编码? 3.视频传输机制,chrome有没有做?还是传输方面,服务器端还要进行优化?谢谢各位大神!

WebRTC音视频编解码异常中断

WebRTC实现视频会议时,发现接听方的音视频异常中断,查看日志发现音视频的解码器被异常销毁了。 具体日志如下: ``` 11-08 14:06:16.811 18846-18846/com.goldnetsh.mesh I/SurfaceView: Changes: creating=false format=false size=false visible=false left=false top=false mUpdateWindowNeeded=true mReportDrawNeeded=true redrawNeeded=false forceSizeChanged=false mVisible=true mRequestedVisible=true, this = fm.video.AndroidOpenGLView{c08a40c V.E...... ........ 0,88-720,1048} 11-08 14:06:16.811 18846-18846/com.goldnetsh.mesh I/SurfaceView: Cur surface: Surface(name=null)/@0x17aa4b, this = fm.video.AndroidOpenGLView{c08a40c V.E...... ........ 0,88-720,1048} 11-08 14:06:16.818 18846-18846/com.goldnetsh.mesh I/SurfaceView: New surface: Surface(name=null)/@0xf88c28, vis=true, frame=Rect(0, 136 - 720, 1096), this = fm.video.AndroidOpenGLView{c08a40c V.E...... ........ 0,88-720,1048} 11-08 14:06:16.818 18846-18846/com.goldnetsh.mesh I/SurfaceView: surfaceRedrawNeeded, this = fm.video.AndroidOpenGLView{c08a40c V.E...... ........ 0,88-720,1048} 11-08 14:06:16.818 18846-18846/com.goldnetsh.mesh I/SurfaceView: finishedDrawing, this = fm.video.AndroidOpenGLView{c08a40c V.E...... ........ 0,88-720,1048} 11-08 14:06:22.732 18846-20178/com.goldnetsh.mesh I/fm: Increasing Opus encoder quality to 60.00 %. 11-08 14:06:28.837 18846-20178/com.goldnetsh.mesh I/fm: Increasing Opus encoder quality to 70.00 %. 11-08 14:06:34.934 18846-20178/com.goldnetsh.mesh I/fm: Increasing Opus encoder quality to 80.00 %. 11-08 14:06:40.931 18846-20178/com.goldnetsh.mesh I/fm: Increasing Opus encoder quality to 90.00 %. 11-08 14:06:42.990 18846-18846/com.goldnetsh.mesh I/SurfaceView: updateWindow -- onWindowVisibilityChanged, visibility = 8, this = fm.video.AndroidOpenGLView{c08a40c V.E...... ........ 0,88-720,1048} 11-08 14:06:42.990 18846-18846/com.goldnetsh.mesh I/SurfaceView: Changes: creating=false format=false size=false visible=true left=false top=false mUpdateWindowNeeded=false mReportDrawNeeded=false redrawNeeded=false forceSizeChanged=false mVisible=true mRequestedVisible=false, this = fm.video.AndroidOpenGLView{c08a40c V.E...... ........ 0,88-720,1048} 11-08 14:06:42.990 18846-18846/com.goldnetsh.mesh I/SurfaceView: Cur surface: Surface(name=null)/@0x17aa4b, this = fm.video.AndroidOpenGLView{c08a40c V.E...... ........ 0,88-720,1048} 11-08 14:06:42.993 18846-18846/com.goldnetsh.mesh I/SurfaceView: New surface: Surface(name=null)/@0xf88c28, vis=false, frame=Rect(0, 136 - 720, 1096), this = fm.video.AndroidOpenGLView{c08a40c V.E...... ........ 0,88-720,1048} 11-08 14:06:42.993 18846-18846/com.goldnetsh.mesh I/SurfaceView: Callback --> surfaceDestroyed, this = fm.video.AndroidOpenGLView{c08a40c V.E...... ........ 0,88-720,1048} 11-08 14:06:42.993 18846-18846/com.goldnetsh.mesh I/SurfaceView: surfaceDestroyed callback +, this = fm.video.AndroidOpenGLView{c08a40c V.E...... ........ 0,88-720,1048} 11-08 14:06:43.003 18846-18846/com.goldnetsh.mesh I/SurfaceView: surfaceDestroyed callback -, this = fm.video.AndroidOpenGLView{c08a40c V.E...... ........ 0,88-720,1048} 11-08 14:06:43.004 18846-20209/com.goldnetsh.mesh I/DefaultContextFactory: eglDestroyContext = 152, this = fm.video.AndroidOpenGLView{c08a40c V.E...... ........ 0,88-720,1048} 11-08 14:06:43.005 18846-18846/com.goldnetsh.mesh I/SurfaceView: updateWindow -- onDetachedFromWindow, this = fm.video.AndroidOpenGLView{c08a40c V.E...... ........ 0,88-720,1048} 11-08 14:06:43.067 18846-20639/com.goldnetsh.mesh I/fm: Destroying audio packetizer: OPUS:8000:1 11-08 14:06:43.067 18846-20639/com.goldnetsh.mesh I/fm: Destroying audio encoder: OPUS:8000:1 11-08 14:06:58.231 18846-20218/com.goldnetsh.mesh I/fm: Destroying audio decoder: OPUS:8000:1 11-08 14:06:58.233 18846-20218/com.goldnetsh.mesh I/fm: Destroying audio decoder: PCMU:8000:1 11-08 14:06:58.233 18846-20218/com.goldnetsh.mesh I/fm: Destroying audio decoder: PCMA:8000:1 11-08 14:06:58.526 18846-20218/com.goldnetsh.mesh I/fm: Destroying video decoder: VP8:90000 11-08 14:06:58.529 18846-20218/com.goldnetsh.mesh I/fm: Destroying video decoder: RED:90000 11-08 14:06:58.529 18846-20218/com.goldnetsh.mesh I/fm: Destroying video decoder: ULPFEC:90000 ```

webrtc并发测试有哪些好用的工具

我们自己做了一个webrtcServer,目前是200路视频流能够正常,但是超过200路,目前无法测试,因为每个PC机上面启动的Chrome浏览器且编解码根据不通PC机的性能是有区别的,目前我能够找到的PC机是有限的,那么问题就来了: 我如何能够用有限的PC机模拟出多个浏览器,来并发压我的webrtcServer

webrtc音频采集传输问题

phonertc或者webrtc在安卓机顶盒上采集到的声音,传给对方,对方听不到或者声音断断续续

webrtc在android平台下声音传输异常

我在根据Google的demo做了一个android平台下的基于webrtc技术的p2p视频通信。编译运行后,视频成功打通,但是声音传输却并不正常。我给两端换了不同的手机测试,发现有的手机声音较大,有的很小,大多数是没有声音。不知道有没有做这方面开发的大牛,给指点一下,拜谢了先!!!

WebRTC库在Android端声音问题

我使用webRTC库开发音视频聊天app,运行成功后图像能够联通,但是没有声音或者声音小 AudioSource audioSource = factory.createAudioSource(new MediaConstraints()); localMS.addTrack(factory.createAudioTrack("ARDAMSa0", audioSource));

请教一下webrtc相关的问题

具体情况是这样的,我们公司主要是做音视频这方面的,cs架构,有自己的设备,一般就是把设备卖出去,然后pc客户端这边能看见设备拍摄的一些画面之类的,然后公司领导看见别的公司也做音视频,bs架构的,用的是webrtc的技术,视频传回来的流没什么延迟,比我们的效果要好,还有就是客户那边也要求说想要bs这种架构的,不用安装下载,方便一些,我们公司领导就心动了,然后让我了解,我纯小白,代码也不会写= = 刚入职,以前也没做过音视频这方面,真是一点点都不懂。 都有什么公司用这个webrtc技术啊,市场占比高嘛?开发成本、优缺点什么的都是什么啊,自己也查过一些资料,要不就是看不懂,要不就是复制粘贴,有没有哪个大神可以指教一下。

移动端WebRTC实时视频

最近在研究P2P实时视频,信令服务器与stun服务器都是部署在公网上(阿里云),最终测出来的结果为同一个局域网的两台移动设备可以链接进行通信;移动4G与WiFi,移动4G与联通4G,移动4G与电信4G,联通4G与电信4G都是可以通的; 后又经测试发现,联通4G与WiFi,电信4G与WiFi,WiFi与WiFi偶尔可以通信,但是大多数是不通的,测试中NAT给电信4G或者联通4G分配的内网外网IP映射是一只变化的,经查电信4G与联通4G分配是多IP,而移动的4G给分配的公网IP一直是一个(在p2p连接使用中),而电信,联通4G给分配的公网IP一直是变化的,请教各位大神,本人小白,能否给指点下电信和联通的分配的公网IP怎么一直是变化的能否更改stun配置来给固定分配一个可直接两客户端直接建立连接的公网IP,或者只考虑锥型路由器用stun穿透,不考虑turn,各位大神给指点下

关于x264交叉编译(linux to windows)的库在vs2005中链接失败的问题

环境: centos mingw gcc版本: [root@localhost x264]# x86_64-w64-mingw32-gcc -v Using built-in specs. COLLECT_GCC=x86_64-w64-mingw32-gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-w64-mingw32/4.9.2/lto-wrapper Target: x86_64-w64-mingw32 Configured with: ../configure --prefix=/usr --bindir=/usr/bin --includedir=/usr/include --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --with-gnu-as --with-gnu-ld --verbose --without-newlib --disable-multilib --disable-plugin --with-system-zlib --disable-nls --without-included-gettext --disable-win32-registry --enable-languages=c,c++,objc,obj-c++,fortran --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-threads=posix --enable-libgomp --target=x86_64-w64-mingw32 --with-sysroot=/usr/x86_64-w64-mingw32/sys-root --with-gxx-include-dir=/usr/x86_64-w64-mingw32/sys-root/mingw/include/c++ Thread model: posix gcc version 4.9.2 20141030 (Fedora MinGW 4.9.2-1.el6) (GCC) 配置: ./configure \ --prefix=../windows/x86_64 \ --enable-static \ --enable-pic \ --host=x86_64-w64-mingw32 \ --cross-prefix=x86_64-w64-mingw32- 结果: 1、生成的x264.exe能正常在windows中运行; 2、生成的libx264.a在vs2005的工程中不能被正常链接!!! 测试程序: #include "stdafx.h" #include "stdint.h" #include "x264.h" int _tmain(int argc, _TCHAR* argv[]) { x264_param_t param; x264_encoder_open(&param); return 0; } 1>Linking... 1>VideoEncoder.obj : error LNK2019: unresolved external symbol _x264_encoder_open_148 referenced in function _wmain 1>F:\personal\sourcecode\VideoEncoder\Debug\VideoEncoder.exe : fatal error LNK1120: 1 unresolved externals 分析: dumpbin /ALL libx264.a > 1.txt String Table Size = 0x539 bytes COFF SYMBOL TABLE 000 00000000 DEBUG notype Filename | .file encoder.c 002 00000000 SECT1 notype () Static | x264_slice_header_init tag index 00000000 size 00000000 lines 00000000 next function 00000000 004 000002D0 SECT1 notype () Static | mbcmp_init 005 000007D0 SECT1 notype () Static | sprintf 006 00000800 SECT1 notype () Static | snprintf 007 00000820 SECT1 notype () Static | x264_fdec_filter_row 008 00000F00 SECT1 notype () Static | x264_set_aspect_ratio.isra.3 009 00001020 SECT1 notype () Static | x264_encoder_thread_init 00A 00001050 SECT1 notype () Static | x264_nal_end 00B 00001190 SECT1 notype () Static | x264_encoder_encapsulate_nals.constprop.13 00C 00001360 SECT1 notype () Static | x264_encoder_frame_end.part.7 00D 00002870 SECT1 notype () Static | x264_slice_write 00E 00001400 SECT7 notype Static | x264_ue_size_tab 00F 000013EC SECT7 notype Static | x264_mb_chroma_pred_mode_fix 010 00006470 SECT1 notype () Static | x264_slices_write 011 000066B0 SECT1 notype () External | x264_encoder_open_148 012 00000000 SECTB notype Static | .rdata$.refptr.x264_levels 发现libx264.a中是x264_encoder_open_148,而vs2005链接的时候寻找的是_x264_encoder_open_148,因此产生了链接问题。 经查资料,发现是因为msvc在链接c函数时都会加"_",而在linux中使用mingw编译的库却没有加"_", 在configure时增加--extra-cflags="-fleading-underscore": No working C compiler found. Makefile:3: config.mak: 没有那个文件或目录 cat: config.h: 没有那个文件或目录 有谁知道解决办法?不胜感激!

关于如何在java客户端通过webrtc实现音频通话

求大神指教! 现在服务是好的,PC客户端需要通过webrtc与服务通讯,实现音频通话,求支撑库和DEMO。 网上都是需要自己下载编译,有没有拿来主义。 不要浏览器的。 当然,如果你能让它在java客户端运行也可以。

WebRTC怎么断线重连?

用户加入房间后因为意外断网,导致该用户的信息并不能删除!再次进入会提示用户已经存在!敢问类似的聊天室是如何处理断网的?必须发送保活连接的心跳包吗?

webrtc做一个简单的视屏通话Demo用tomcat服务器

现在webrtc开发用什么工具,环境部署怎样的,用什么语言nodejs? 可以推荐学习webrtc好的网站 有源码demo的

webRTC在本机部署后,无法看到本地画面

在本机部署了webRTC,刚开始在本地浏览器看到的是本地的画面,当另外一台电脑打开我发送的链接后,我们相互能看到对方的画面,但是看不到本地的,请教大神是为什么,该怎么解决??

webrtc音视频通话,除了在华为手机上正常,其他手机均是远程视频黑屏情况

情况和问题描述: 最近在开发webrtc的音视频通话功能,本使用org.webrtc:google-webrtc:1.0.28513/这个版本开发,但是却发现远程视频显示不出来,过程没有任何报错,信令交互一切正常,我很疑惑,就将版本调整至org.webrtc:google-webrtc:1.0.24465@aar;让我惊喜的是在华为手机上正常了,远程和本地视频一切正常;但在1+、小米和红米等手机上无法正常显示出远程视频;本以为是没有video的candidate造成,但是经过华为手机反复测试和看log后发现,即使没有video的candidate都能正常显示出远程视频,所以我将这点给排除了;然后经过反反复复的测试和调整,华为手机只要不要用太新的webrtc版本就能正常,但其他手机均不正常;我在这个问题上已经纠结了两个星期,希望有大能能够帮助我。 这个问题实在很奇怪,没有报错,信令正常,交互正常,最终流能通,但就是无法显示远程视频;是解析的问题呢,还是渲染的问题,还是其他问题。很疑惑了,希望业界大佬指教!!! 正常截图: ![图片说明](https://img-ask.csdn.net/upload/201909/17/1568702658_848334.jpg) 异常截图: ![图片说明](https://img-ask.csdn.net/upload/201909/17/1568702684_763667.jpg) 然后经过log的反复查看,发现了以下的一个log,怀疑也可能有关系,本人webrtc小白,贴出讨论,虚心请教 ![图片说明](https://img-ask.csdn.net/upload/201909/17/1568702792_787513.png)

iOS WebRTC视频语音不同网段下点对点连接

我需要做WebRTC,在网上找了DEMO,测试了一下。在同一网段下能视频聊天,但是我将一个手机使用4G是就无法连接。问是STUN穿墙的原因吗?

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

深入剖析Springboot启动原理的底层源码,再也不怕面试官问了!

大家现在应该都对Springboot很熟悉,但是你对他的启动原理了解吗?

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

你期望月薪4万,出门右拐,不送,这几个点,你也就是个初级的水平

先来看几个问题通过注解的方式注入依赖对象,介绍一下你知道的几种方式@Autowired和@Resource有何区别说一下@Autowired查找候选者的...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《Oracle Java SE编程自学与面试指南》最佳学习路线图2020年最新版(进大厂必备)

正确选择比瞎努力更重要!

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

字节跳动面试官竟然问了我JDBC?

轻松等回家通知

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

立即提问
相关内容推荐