RTP乱序情况下 RTCP精确统计loss_fraction丢包率

RTCP统计丢包率loss_fraction方法概述:
expected_num=high_seqnum - preHigh_seqnum; // 期盼的rtp packet个数
recv_num // 真实recv rtp packet个数

loss_num=expected_num - recv_num;
loss_fraction=loss_num/expected_num;

现在问题是:
RTP乱序情况下,该统计已经不再准确了,请各位帮忙看看是我自己思路 有问题,还是有其他方法可以解决该问题的。。。

谢谢了

3个回答

这个链接看过了,没什么内容。谢谢回复

楼主找到解决办法了么?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C#调用RTP.NET类库如何分析RTCP包得到丢包率、时延和吞吐量,希望给出相应的代码
现在是可以实现RTP包的发送和解析但不会解析RTCP包,主要是想统计一下网路性能
使用python实现rtsp客户端遇见的setup消息发送的问题
使用python实现rtsp客户端的setup消息发送时返回状态码为503;现在不知如何解决,遂请求帮助。有偿+wx:ww1194609610(10rmb) ``` import socket from urllib.parse import urlparse config_dict = { 'cseq': 2, 'user_agent': 'LibVLC/3.0.2 (LIVE555 Streaming Media v2016.11.28)', 'timeout': 3, 'recvbite': 4096, 'res_status': '200 OK', 'rtsp_status': 'flase' } clientports=[60784, 60785] def options_get(url): ''' options请求检测 url: rtsp流地址 return: options请求相应 ''' url = urlparse(url) host = url.netloc hostname = url.hostname path = url.path port = url.port str_options = 'OPTIONS rtsp://' + str(host) + \ path + ' RTSP/1.0\r\n' str_options += 'CSeq: ' + str(config_dict['cseq']) + '\r\n' str_options += 'User-Agent: ' + config_dict['user_agent'] + '\r\n' str_options += '\r\n' print(str_options) client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.settimeout(config_dict['timeout']) client.connect((hostname, port)) client.send(str_options.encode()) d = client.recv(config_dict['recvbite']) return d def describe_get(url): ''' describe请求检测 url: rtsp流地址 return: describe请求相应 ''' url = urlparse(url) host = url.netloc hostname = url.hostname path = url.path port = url.port str_describe = 'DESCRIBE rtsp://' + str(host) + \ path + ' RTSP/1.0\r\n' str_describe += 'CSeq: ' + str(config_dict['cseq'] + 1) + '\r\n' str_describe += 'User-Agent: ' + config_dict['user_agent'] + '\r\n' str_describe += '\r\n' client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.settimeout(config_dict['timeout']) client.connect((hostname, port)) client.send(str_describe.encode()) d = client.recv(config_dict['recvbite']) return d def setup_get(url): ''' setup请求检测 url: rtsp流地址 return: setup请求相应 ''' url = urlparse(url) host = url.netloc hostname = url.hostname path = url.path port = url.port str_setup = 'SETUP rtsp://' + str(host) + path + '/' + 'streamid=0' + ' RTSP/1.0\r\n' str_setup += 'CSeq: ' + str(config_dict['cseq'] + 2) + '\r\n' str_setup += 'User-Agent: ' + config_dict['user_agent'] + '\r\n' # config_dict['user_agent'] str_setup += 'Transport: RTP/AVP;unicast;client_port=61740-61741\r\n\r\n' str_setup += '\r\n' client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.settimeout(config_dict['timeout']) client.connect((hostname, port)) client.send(str_setup.encode()) d = client.recv(config_dict['recvbite']) return d def teardown_get(url): ''' teardown请求检测 url: rtsp流地址 return: teardown请求相应 ''' url = urlparse(url) host = url.netloc hostname = url.hostname path = url.path port = url.port str_teardown = 'TEARDOWN rtsp://' + str(host) + path + ' RTSP/1.0\r\n' str_teardown += 'CSeq: ' + str(config_dict['cseq'] + 4) + '\r\n' str_teardown += 'User-Agent: ' + config_dict['user_agent'] + '\r\n' str_teardown += '\r\n' print(str_teardown) client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.settimeout(config_dict['timeout']) client.connect((hostname, port)) client.send(str_teardown.encode()) d = client.recv(config_dict['recvbite']) return d def send_main(url): try: str_options = str(options_get(url)) print(str_options) if config_dict['res_status'] in str_options: str_des = str(describe_get(url)) print(str_des) if config_dict['res_status'] in str_des: str_setup = str(setup_get(url)) str_teardown = str(teardown_get(url)) print(str_setup) print(str_teardown) if config_dict['res_status'] in str_teardown: config_dict['rtsp_status'] = 'true' return True except Exception: return False else: return False print(send_main('rtsp://192.168.10.214:554/live/av0')) ``` 上方为我的代码。 b'RTSP/1.0 503 Service Unavailable\r\nCSeq: 4\r\nDate: Thu, 01 Jan 1970 07:11:16 GMT\r\n\r\n' 此段消息为setup请求的返回信息,我看过rtsp的相关文档,说describe请求返回的sdp信息,客户端再分析该SDP描述,并为会话中的每一个流发送一个RTSP建立命令( SETUP)。这个我没搞懂,也不知道如何写,这里进行请教一下。 下面是我的一次正常的rtsp交互信息。 ``` OPTIONS rtsp://192.168.10.214:554/live/av0 RTSP/1.0 CSeq: 2 User-Agent: LibVLC/3.0.5 (LIVE555 Streaming Media v2016.11.28) RTSP/1.0 200 OK CSeq: 2 Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE DESCRIBE rtsp://192.168.10.214:554/live/av0 RTSP/1.0 CSeq: 3 User-Agent: LibVLC/3.0.5 (LIVE555 Streaming Media v2016.11.28) Accept: application/sdp RTSP/1.0 200 OK CSeq: 3 Date: Thu, 01 Jan 1970 07:05:17 GMT Content-Base: rtsp://192.168.10.214:554/live/av0/ Content-Type: application/sdp Content-Length: 315 v=0 o=- 0 0 IN IP4 127.0.0.1 s=No Title c=IN IP4 0.0.0.0 t=0 0 a=tool:libavformat 55.12.100 m=video 0 RTP/AVP 96 a=rtpmap:96 H264/90000 a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z2QAKq2EAQwgCGEAQwgCGEAQwgCEK1A8ARPyzcBAQFAAAAMAEAAAAwPIQA==,aO48sA==; profile-level-id=64002A a=control:streamid=0 SETUP rtsp://192.168.10.214:554/live/av0/streamid=0 RTSP/1.0 CSeq: 4 User-Agent: LibVLC/3.0.5 (LIVE555 Streaming Media v2016.11.28) Transport: RTP/AVP;unicast;client_port=61740-61741 RTSP/1.0 200 OK CSeq: 4 Date: Thu, 01 Jan 1970 07:05:17 GMT Session: 093634014dba841b Transport: RTP/AVP/UDP;unicast;client_port=61740-61741;server_port=20006-20007 PLAY rtsp://192.168.10.214:554/live/av0/ RTSP/1.0 CSeq: 5 User-Agent: LibVLC/3.0.5 (LIVE555 Streaming Media v2016.11.28) Session: 093634014dba841b Range: npt=0.000- RTSP/1.0 200 OK CSeq: 5 Date: Thu, 01 Jan 1970 07:05:17 GMT Session: 093634014dba841b TEARDOWN rtsp://192.168.10.214:554/live/av0/ RTSP/1.0 CSeq: 6 User-Agent: LibVLC/3.0.5 (LIVE555 Streaming Media v2016.11.28) Session: 093634014dba841b RTSP/1.0 200 OK CSeq: 6 Date: Thu, 01 Jan 1970 07:05:21 GMT Session: 093634014dba841b ```
ORTP库传输RTP声音流,VLC播放有噪音
发送WAV(PCMU)的声音文件到VLC播放器,能够听到音乐,但是噪音很大,有没有知道是什么原因的,谢谢,谢谢,谢谢... ... 发送端代码: ``` #include <stdio.h> #include <signal.h> #include <ortp/ortp.h> #define SIZE 160 #define TIMESTAMP 160 int cond=1; void stop(int signum) { cond=0; } int main(int argc,char** argv) { RtpSession* session; int ts=0; int fd; int readcount=0; int sendcount=0; char buf[SIZE]; ortp_init(); ortp_scheduler_init(); ortp_init(); ortp_scheduler_init(); ortp_set_log_level_mask(ORTP_MESSAGE| \ ORTP_WARNING|ORTP_ERROR); session=rtp_session_new(RTP_SESSION_SENDONLY); rtp_session_set_scheduling_mode(session,1); rtp_session_set_blocking_mode(session,1); rtp_session_set_connected_mode(session,TRUE); rtp_session_set_remote_addr(session,argv[2],atoi(argv[3])); rtp_session_set_payload_type(session,0); fd=open(argv[1],O_RDONLY); if(fd==-1) { perror("open"); return -1; } signal(SIGINT,stop); while(cond) { readcount=read(fd,buf,SIZE); if(readcount>0) { sendcount=rtp_session_send_with_ts(session,buf,readcount,ts); } else if(readcount==0) { printf("reading complete\n"); break; } else if(readcount==-1) { perror("read"); return -1; } ts+=TIMESTAMP; } if(close(fd)==-1) { perror("close"); return -1; } rtp_session_destroy(session); ortp_exit(); ortp_global_stats_display(); return 0; } ``` VLC的SDP文件: ``` m=audio 8888 RTP/AVP 0 a=rtpmap:0 pcmu/8000 a=ptime:20 c=IN IP4 192.168.0.36 ```
海康sdk 回调函数取帧,是否存在丢包
现象描述: 海康sdk 回调函数取帧,作检测人脸,是不是会出现一张断层的人脸照。 如下图: ![图片说明](https://img-ask.csdn.net/upload/201908/01/1564637958_400591.jpg) 可能原因是什么? 调用函数为:NET_DVR_SetRealDataCallBack() BOOL NET_DVR_SetRealDataCallBack( LONG lRealHandle, fRealDataCallBack cbRealDataCallBack, DWORD dwUser ); 官方文档中提到这样几句话: 1、cbRealDataCallBack回调函数中不能执行可能会占用时间较长的接口或操作,不建议调用该SDK(HCNetSDK.dll)本身的接口。 2、此函数包括开始和停止用户处理SDK捕获的数据,当回调函数cbRealDataCallBack设为非NULL值时,表示回调和处理数据;当设为NULL时表示停止回调和处理数据。回调的第一个包是40个字节的文件头,供后续解码使用,之后回调的是压缩的码流。回调数据最大为256K字节。 官方也给出是实例代码: ``` #include <stdio.h> #include <iostream> #include <time.h> #include "plaympeg4.h" using namespace std; LONG lPort; //全局的播放库port号 void CALLBACK g_RealDataCallBack_V30(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,DWORD dwUser) { HWND hWnd = GetConsoleWindow(); switch (dwDataType) { case NET_DVR_SYSHEAD: //系统头 if (!PlayM4_GetPort(&lPort)) //获取播放库未使用的通道号 { break; } //m_iPort = lPort; //第一次回调的是系统头,将获取的播放库port号赋值给全局port,下次回调数据时即使用此port号播放 if (dwBufSize > 0) { if (!PlayM4_SetStreamOpenMode(lPort, STREAME_REALTIME)) //设置实时流播放模式 { break; } if (!PlayM4_OpenStream(lPort, pBuffer, dwBufSize, 1024*1024)) //打开流接口 { break; } if (!PlayM4_Play(lPort, hWnd)) //播放开始 { break; } } case NET_DVR_STREAMDATA: //码流数据 if (dwBufSize > 0 && lPort != -1) { if (!PlayM4_InputData(lPort, pBuffer, dwBufSize)) { break; } } } } void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser) { char tempbuf[256] = {0}; switch(dwType) { case EXCEPTION_RECONNECT: //预览时重连 printf("----------reconnect--------%d\n", time(NULL)); break; default: break; } } void main() { //--------------------------------------- // 初始化 NET_DVR_Init(); //--------------------------------------- // 注册设备 LONG lUserID; NET_DVR_DEVICEINFO_V30 struDeviceInfo; lUserID = NET_DVR_Login_V30("172.0.0.100", 8000, "admin", "12345", &struDeviceInfo); if (lUserID < 0) { printf("Login error, %d\n", NET_DVR_GetLastError()); NET_DVR_Cleanup(); return; } //--------------------------------------- //设置异常消息回调函数 NET_DVR_SetExceptionCallBack_V30(0, NULL,g_ExceptionCallBack, NULL); //--------------------------------------- //启动预览并设置回调数据流 LONG lRealPlayHandle; NET_DVR_CLIENTINFO ClientInfo = {0}; ClientInfo.hPlayWnd = NULL; //需要SDK解码时句柄设为有效值,仅取流不解码时可设为空 ClientInfo.lChannel = 1; //预览通道号 ClientInfo.lLinkMode = 0; //最高位(31)为0表示主码流,为1表示子码流0~30位表示连接方式:0-TCP方式;1-UDP方式;2-多播方式;3-RTP方式; ClientInfo.sMultiCastIP = NULL; //多播地址,需要多播预览时配置 BOOL bPreviewBlock = false; //请求码流过程是否阻塞,0:否,1:是 lRealPlayHandle = NET_DVR_RealPlay_V30(lUserID, &ClientInfo, NULL, NULL, 0); if (lRealPlayHandle < 0) { printf("NET_DVR_RealPlay_V30 error\n"); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return; } if (!NET_DVR_SetRealDataCallBack(lRealPlayHandle, g_RealDataCallBack_V30, 0)) { printf("NET_DVR_SetRealDataCallBack error\n"); } //--------------------------------------- //关闭预览 NET_DVR_StopRealPlay(lRealPlayHandle); //注销用户 NET_DVR_Logout_V30(lUserID); NET_DVR_Cleanup(); return; } ```
Android5.0 编译出错,哪位大神帮帮我
mkdir -p out/target/product/generic/obj/STATIC_LIBRARIES/third_party_webrtc_modules_audioproc_debug_proto_gyp_intermediates; cp out/target/product/generic/obj/GYP/shared_intermediates/protoc_out/webrtc/audio_processing/debug.pb.cc out/target/product/generic/obj/STATIC_LIBRARIES/third_party_webrtc_modules_audioproc_debug_proto_gyp_intermediates/debug.pb.cc host Executable: third_party_libvpx_libvpx_obj_int_extract_arm_host_gyp (out/host/linux-x86/obj32/EXECUTABLES/third_party_libvpx_libvpx_obj_int_extract_arm_host_gyp_intermediates/libvpx_obj_int_extract) target thumb C++: third_party_webrtc_modules_rtp_rtcp_gyp <= external/chromium_org/third_party/webrtc/modules/rtp_rtcp/source/rtp_header_parser.cc /home/rock/android-5.0.0_r2/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/bin/../lib/gcc/x86_64-linux/4.6/../../../../x86_64-linux/bin/ld: error: out/host/linux-x86/obj32/EXECUTABLES/third_party_libvpx_libvpx_obj_int_extract_arm_host_gyp_intermediates/third_party/libvpx/source/libvpx/build/make/obj_int_extract.o: file is empty /home/rock/android-5.0.0_r2/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/bin/../sysroot/usr/lib/../lib32/Scrt1.o(.text+0x28): error: undefined reference to 'main' collect2: ld returned 1 exit status make: *** [out/host/linux-x86/obj32/EXECUTABLES/third_party_libvpx_libvpx_obj_int_extract_arm_host_gyp_intermediates/libvpx_obj_int_extract] 错误 1 make: *** 正在等待未完成的任务.... 哪位大神可以帮帮我。
android上 用ffmpeg解码rtp组播流
android上 用ffmpeg解码rtp组播流,avformat_find_stream_info这一步总是失败,错误信息是 Connection timed out,同样的代码linux下测试是没问题的,移植到android后就不行,这是为什么呢?
android作为客户端接收rtp解包解码
跪求:请各位帮忙啊!我的毕设是在android端接收rtp包,解包解码,在android平台上播放视频,实现局域网内视频的传输,刚刚接触android,不知道怎么入手,麻烦各位给个demo啊,十分感谢!
请教关于ffmpeg解码rtp码流的问题
小弟最近在学习网络视频流传输,有个疑问如下:用rtp流封装h264码流,rtp协议中有sequence和timestamp,我想请问这两者和PTS和DTS有关联吗?如果用ffmpeg解码,是否是按rtp包的有效数据加上0x00000001扔给解码器就行?SPS以及PPS中的数据需要初始化给ffmpeg吗? 本人小白,希望各位多多指教,谢谢!
请问下面这段代码的意思:C++ 中的冒号操作符
PaketRouter类里有一个成员: // Map from ssrc to sending rtp module. std::list<RtpRtcp*> rtp_modules_ GUARDED_BY(crit_.get()); 请问下面的函数里冒号是什么意思? ``` bool PacketRouter::TimeToSendPacket(uint32_t ssrc, uint16_t sequence_number, int64_t capture_timestamp, bool retransmission) { CriticalSectionScoped cs(crit_.get()); for (auto* rtp_module : rtp_modules_) {//这个冒号是什么意思? if (rtp_module->SendingMedia() && ssrc == rtp_module->SSRC()) { return rtp_module->TimeToSendPacket(ssrc, sequence_number, capture_timestamp, retransmission); } } return true; } ```
如何处理收到的audio rtp packet
当通过网络收到audio rtp packet后需要进行decoder,然后播放,有个问题是当网络异常,收到延迟的包或者包丢了,该如何处理?有清楚vlc是如何处理类似异常情况的吗?
linux下关于ffmpeg怎么将视频解码然后打包成rtp包发送出去。
做流媒体传输,需要用ffmpeg 将视频解码,然后通过rtp发送给vlc播放,但是怎么将得到的 一帧数据打包?直接用得到的AVFram结构体用rtp发送出去吗?求各位大神帮忙解惑。
关于RTP协议的问题 java语言
我先说下我的情况 无线摄像头模块+路由器+android手机 我的android手机已经可以实现查看摄像画面了,但是不流畅,总比电脑上显示的摄像画面要慢很多,动作不能太大,太大画面反应就慢了 我用的surfaceview,利用线程将摄像画面一帧一帧的加载到surfaceview上的。 现在我查到RTP协议可以实现实时视频文件传输,不太了解RTP协议,我是解析http协议的。 我有几个问题: 1.我见有的网友代码里写的是“rtp://xxx.xx.xxxxxx”,而我的摄像画面的url是“http://xxxx/action=snapshot”如果我用rtp协议的话,需要先去http的url把视频文件帧化再流化,最后再通过rtp协议传输?? 2.rtp解析的视频文件是什么形式?也是帧??那样的话,放在surfaceview上按理说跟从http取到帧再放到surfaceview上不一样吗??按理说不是帧吧,因为rtp是不需要像http一样先下载再加载的吧?那该怎么破? 3.对rtp不懂,说的乱,希望各位大牛能理解我的意思,能指点我一二。
freeswitch对接mod_unimrcp进行ASR语音识别时,unimrcp服务器一直显示检测中,但检测不到语音?
2019-07-11 10:41:10:706791 [INFO] Receive SIP Event [nua_i_invite] Status 100 Trying [SIP-Agent-1] 2019-07-11 10:41:10:706842 [INFO] Receive SIP Event [nua_i_state] Status 100 Trying [SIP-Agent-1] 2019-07-11 10:41:10:706848 [NOTICE] SIP Call State [received] 2019-07-11 10:41:10:706880 [INFO] Create Session 0x7f3bf4004728 <new> [uni2] 2019-07-11 10:41:10:706905 [INFO] Remote SDP 0x7f3bf4004728 <new> v=0 o=FreeSWITCH 7957069661587620113 7436270796488759771 IN IP4 172.17.1.116 s=- c=IN IP4 172.17.1.116 t=0 0 m=application 9 TCP/MRCPv2 1 a=setup:active a=connection:new a=resource:speechrecog a=cmid:1 m=audio 4002 RTP/AVP 0 8 96 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:96 L16/8000 a=sendonly a=mid:1 2019-07-11 10:41:10:706939 [NOTICE] Add Session <579805baa38511e9> 2019-07-11 10:41:10:706943 [INFO] Receive Offer 0x7f3bf4004728 <579805baa38511e9> [c:1 a:1 v:0] 2019-07-11 10:41:10:707015 [INFO] Add Pending Control Channel <579805baa38511e9@speechrecog> [1] 2019-07-11 10:41:10:716519 [INFO] Enable RTP Session 172.17.2.196:5002 2019-07-11 10:41:10:716594 [INFO] Open RTP Receiver 172.17.2.196:5002 <- 172.17.1.116:4002 playout [50 ms] bounds [0 - 600 ms] adaptive [1] skew detection [1] 2019-07-11 10:41:10:716604 [INFO] Media Path 0x7f3bf4004728 Source->[PCMU/8000/1]->Decoder->[LPCM/8000/1]->Bridge->[LPCM/8000/1]->Sink 2019-07-11 10:41:10:716652 [INFO] Send Answer 0x7f3bf4004728 <579805baa38511e9> [c:1 a:1 v:0] Status OK 2019-07-11 10:41:10:716663 [INFO] Local SDP 0x7f3bf4004728 <579805baa38511e9> v=0 o=UniMRCPServer 0 0 IN IP4 172.17.2.196 s=- c=IN IP4 172.17.2.196 t=0 0 m=application 1544 TCP/MRCPv2 1 a=setup:passive a=connection:new a=channel:579805baa38511e9@speechrecog a=cmid:1 m=audio 5002 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=recvonly a=mid:1 2019-07-11 10:41:10:717118 [INFO] Receive SIP Event [nua_i_state] Status 200 OK [SIP-Agent-1] 2019-07-11 10:41:10:717159 [NOTICE] SIP Call State 0x7f3bf4004728 [completed] 2019-07-11 10:41:10:718486 [NOTICE] Accepted TCP/MRCPv2 Connection 172.17.2.196:1544 <-> 172.17.1.116:52216 2019-07-11 10:41:10:718523 [INFO] Receive SIP Event [nua_i_ack] Status 200 OK [SIP-Agent-1] 2019-07-11 10:41:10:718529 [INFO] Receive SIP Event [nua_i_state] Status 200 OK [SIP-Agent-1] 2019-07-11 10:41:10:718533 [NOTICE] SIP Call State 0x7f3bf4004728 [ready] 2019-07-11 10:41:10:718535 [INFO] Receive SIP Event [nua_i_active] Status 200 Call active [SIP-Agent-1] 2019-07-11 10:41:10:726777 [INFO] Receive MRCPv2 Data 172.17.2.196:1544 <-> 172.17.1.116:52216 [468 bytes] MRCP/2.0 468 DEFINE-GRAMMAR 1 Channel-Identifier: 579805baa38511e9@speechrecog Content-Type: application/srgs+xml Content-Id: 5ce63f65-0f98-42da-93d8-f26bdbc88476 Content-Length: 278 <?xml version="1.0"?> <grammar xmlns="http://www.w3.org/2001/06/grammar" xml:lang="en-US" version="1.0" mode="voice" root="digit"> <rule id="digit"> <one-of> <item>one</item> <item>two</item> <item>three</item> </one-of> </rule> </grammar> 2019-07-11 10:41:10:726822 [INFO] Assign Control Channel <579805baa38511e9@speechrecog> to Connection 172.17.2.196:1544 <-> 172.17.1.116:52216 [0] -> [1] 2019-07-11 10:41:10:726844 [INFO] Process DEFINE-GRAMMAR Request <579805baa38511e9@speechrecog> [1] 2019-07-11 10:41:10:726869 [INFO] Process DEFINE-GRAMMAR Response <579805baa38511e9@speechrecog> [1] 2019-07-11 10:41:10:726890 [INFO] Send MRCPv2 Data 172.17.2.196:1544 <-> 172.17.1.116:52216 [112 bytes] MRCP/2.0 112 1 200 COMPLETE Channel-Identifier: 579805baa38511e9@speechrecog Completion-Cause: 000 success 2019-07-11 10:41:10:727815 [INFO] Receive MRCPv2 Data 172.17.2.196:1544 <-> 172.17.1.116:52216 [273 bytes] MRCP/2.0 273 RECOGNIZE 2 Channel-Identifier: 579805baa38511e9@speechrecog Content-Type: text/uri-list Cancel-If-Queue: false Recognition-Timeout: 10000 Start-Input-Timers: true No-Input-Timeout: 5000 Content-Length: 44 session:5ce63f65-0f98-42da-93d8-f26bdbc88476 2019-07-11 10:41:10:727865 [INFO] Process RECOGNIZE Request <579805baa38511e9@speechrecog> [2] 2019-07-11 10:41:10:727876 [INFO] Open Utterance Output File [/usr/local/unimrcp/var/utter-8kHz-579805baa38511e9.pcm] for Writing 2019-07-11 10:41:10:728055 [INFO] Process RECOGNIZE Response <579805baa38511e9@speechrecog> [2] 2019-07-11 10:41:10:728077 [INFO] State Transition IDLE -> RECOGNIZING <579805baa38511e9@speechrecog> 2019-07-11 10:41:10:728134 [INFO] Send MRCPv2 Data 172.17.2.196:1544 <-> 172.17.1.116:52216 [83 bytes] MRCP/2.0 83 2 200 IN-PROGRESS Channel-Identifier: 579805baa38511e9@speechrecog 2019-07-11 10:41:11:537114 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:11:547093 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:11:577014 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:11:586826 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:11:596742 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:11:606087 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:11:616821 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:11:626158 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:11:636391 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:11:646711 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:11:656691 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:11:666200 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:11:676635 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:11:686583 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:11:696703 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:11:706603 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:11:716682 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:11:726704 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:11:736657 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:11:746644 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:11:756449 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:11:766582 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:11:776901 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:11:786758 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:11:796875 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:11:806867 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:11:816656 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:11:826178 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:11:836737 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:11:846277 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:11:956524 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:11:966486 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:11:976403 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:11:986385 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:11:996284 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:12:006528 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:12:016476 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:12:026282 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:12:036295 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:12:046218 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:12:416443 [INFO] Activity Detector state changed [1] 2019-07-11 10:41:12:426244 [INFO] Activity Detector state changed [0] 2019-07-11 10:41:12:754256 [INFO] Receive MRCPv2 Data 172.17.2.196:1544 <-> 172.17.1.116:52216 [72 bytes] MRCP/2.0 72 STOP 3 Channel-Identifier: 579805baa38511e9@speechrecog 2019-07-11 10:41:12:754472 [INFO] Process STOP Request <579805baa38511e9@speechrecog> [3] 2019-07-11 10:41:12:756876 [INFO] Process STOP Response <579805baa38511e9@speechrecog> [3] 2019-07-11 10:41:12:756977 [INFO] State Transition RECOGNIZING -> IDLE <579805baa38511e9@speechrecog> 2019-07-11 10:41:12:757051 [INFO] Send MRCPv2 Data 172.17.2.196:1544 <-> 172.17.1.116:52216 [108 bytes] MRCP/2.0 108 3 200 COMPLETE Channel-Identifier: 579805baa38511e9@speechrecog Active-Request-Id-List: 2 2019-07-11 10:41:12:761118 [INFO] TCP/MRCPv2 Peer Disconnected 172.17.2.196:1544 <-> 172.17.1.116:52216 2019-07-11 10:41:12:761411 [INFO] Receive SIP Event [nua_i_bye] Status 200 Session Terminated [SIP-Agent-1] 2019-07-11 10:41:12:761443 [INFO] Receive SIP Event [nua_i_state] Status 200 Session Terminated [SIP-Agent-1] 2019-07-11 10:41:12:761795 [NOTICE] SIP Call State 0x7f3bf4004728 [terminated] 2019-07-11 10:41:12:761838 [INFO] Receive SIP Event [nua_i_terminated] Status 200 Session Terminated [SIP-Agent-1] 2019-07-11 10:41:12:761908 [INFO] Deactivate Session 0x7f3bf4004728 <579805baa38511e9> 2019-07-11 10:41:12:761933 [INFO] Terminate Session 0x7f3bf4004728 <579805baa38511e9> 2019-07-11 10:41:12:762049 [INFO] Remove Control Channel <579805baa38511e9@speechrecog> [0] 2019-07-11 10:41:12:766471 [INFO] Close RTP Receiver 172.17.2.196:5002 <- 172.17.1.116:4002 [r:101 l:0 j:96 p:50 d:0 i:0] 2019-07-11 10:41:12:766549 [INFO] Remove RTP Session 172.17.2.196:5002 2019-07-11 10:41:12:766649 [NOTICE] Destroy TCP/MRCPv2 Connection 172.17.2.196:1544 <-> 172.17.1.116:52216 2019-07-11 10:41:12:766694 [NOTICE] Remove Session <579805baa38511e9> 2019-07-11 10:41:12:766724 [INFO] Session Terminated 0x7f3bf4004728 <579805baa38511e9> 2019-07-11 10:41:12:766785 [NOTICE] Destroy Session <579805baa38511e9> ``` ```
vxworks rtp引用动态库报signal11的错误
新人求指导,vxworks下的rtp应用添加了几个qt的动态库,编译成功但是运行报错, rtp has been deleted due to signal 11 .哪位大侠知道是哪的问题啊
aac格式音频在java中如何使用RTP打包发送
如题,从手机麦克风中采集音频数据,格式是PCM,采样率是44100。然后转成了aac格式。然后想通过RTP形式发送。所以要把AAC格式的byte[]数组封装成rtp形式的来发送。现在问题是在JAVA中怎么把AAC封装成RTP,然后rtp的时间戳怎么计算。要JAVA版本。网上的找到的都是C的版本。
FFMPEG实时解码RTP传输的H264流视频花屏
自己用QT写的程序,在PC上采集视频编码RTP打包发送。如果发送给自己,然后用VLC播放的话是可以正常显示的(尽管延迟会不断增大,这个问题再待解决),但是用自己编的软件确无法正常显示,能看到一瞬间有部分画面正常,然后一会画面就糊掉了。 同样的代码, 我在树莓派上,用OPENMAX硬件加速编码,然后同样的打包方式发送,发送给树莓派自己或者给PC,都能正常地显示。 不知道这个是哪部分出了原因?到底是FFMPEG编码部分出问题,还是接收的代码有问题?? 结果如图。。。![图片说明](https://img-ask.csdn.net/upload/201510/25/1445754428_146815.jpg) 然后程序会不断报类似如下错误 [h264 @ 17653080] Cannot use next picture in error concealment [h264 @ 17653080] concealing 1040 DC, 1040 AC, 1040 MV errors in P frame [h264 @ 17653080] Cannot use next picture in error concealment [h264 @ 17653080] concealing 1000 DC, 1000 AC, 1000 MV errors in P frame [h264 @ 17653080] Cannot use next picture in error concealment [h264 @ 17653080] concealing 1040 DC, 1040 AC, 1040 MV errors in P frame [h264 @ 17653080] Cannot use next picture in error concealment [h264 @ 17653080] concealing 1040 DC, 1040 AC, 1040 MV errors in P frame [h264 @ 17653080] Cannot use next picture in error concealment [h264 @ 17653080] concealing 1040 DC, 1040 AC, 1040 MV errors in P frame [h264 @ 17653080] Cannot use next picture in error concealment [h264 @ 17653080] concealing 1040 DC, 1040 AC, 1040 MV errors in P frame [h264 @ 17653080] Cannot use next picture in error concealment [h264 @ 17653080] concealing 1000 DC, 1000 AC, 1000 MV errors in P frame [h264 @ 17653080] Cannot use next picture in error concealment [h264 @ 17653080] concealing 1040 DC, 1040 AC, 1040 MV errors in P frame [h264 @ 17653080] Cannot use next picture in error concealment
采用rtsp与网络摄像头对接后,怎么处理网络摄像头发送的rtp数据,才能提出h264视频流?
我想问的是:怎么处理网络摄像头的这些数据,才能提出h264视频流? 我把数据放去rtp解包生成h264文件并不能vlc播放。 解包也有错误,解了3分钟,recv到得数据只有3个字节就出现段错误了。 版本号也是不定的,有为0,2,3。 流媒体新人,求大神多指导!!!
rtp音视频解析,存储mp4。
请教各位老师帮忙解决下,rtp音视频流怎么样存储为MP4,需要音视频同步。 音频G711, 视频h264. 需要c++实现。
用VLC播放RTP传输过来H264的问题,不使用打开sdp文件的方式
用VLC播放RTP/UDP/TCP传输过来H264的问题,不使用打开sdp文件的方式
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
JDK12 Collectors.teeing 你真的需要了解一下
前言 在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话显得很抽象,老规矩,我们先来看个图(这真是一个不和谐的图????): 管道改造经常会用这个小东西,通常我们叫它「三通」,它的主要作用就是将 downstream1 和 downstre...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
GitHub标星近1万:只需5秒音源,这个网络就能实时“克隆”你的声音
作者 | Google团队 译者 | 凯隐 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100) 本文中,Google 团队提出了一种文本语音合成(text to speech)神经系统,能通过少量样本学习到多个不同说话者(speaker)的语音特征,并合成他们的讲话音频。此外,对于训练时网络没有接触过的说话者,也能在不重新训练的情况下,仅通过未知...
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下...
【管理系统课程设计】美少女手把手教你后台管理
【文章后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 1. 这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,若没有烟草销售系统,本人家人想要购买烟草,还要独自前往药...
4G EPS 第四代移动通信系统
目录 文章目录目录4G 与 LTE/EPCLTE/EPC 的架构E-UTRANE-UTRAN 协议栈eNodeBEPCMMES-GWP-GWHSSLTE/EPC 协议栈概览 4G 与 LTE/EPC 4G,即第四代移动通信系统,提供了 3G 不能满足的无线网络宽带化,主要提供数据(上网)业务。而 LTE(Long Term Evolution,长期演进技术)是电信领域用于手机及数据终端的高速无线通...
相关热词 c# clr dll c# 如何orm c# 固定大小的字符数组 c#框架设计 c# 删除数据库 c# 中文文字 图片转 c# 成员属性 接口 c#如何将程序封装 16进制负数转换 c# c#练手项目
立即提问