【IoT】产品模型:基于 ARM 的音视频采集与传输系统
1 前言. 1
1.1 研究背景. 1
1.2 国内外发展概况. 1
1.3 论文的主要研究内容. 2
2 系统总体方案设计. 3
2.1 系统总体框图. 3
2.2 图像采集与编码模块方案介绍与论证. 3
2.2.1 DSP+视频采集芯片. 3
2.2.2 DSP+ARM+视频采集芯片. 4
2.2.3 ARM+视频压缩芯片+视频采集芯片. 4
2.2.4 ARM+T264编码库或FFmpeg x264编码库. 4
2.2.5 ARM+MJPG-streamer视频服务器. 5
2.3 音频采集与编解码模块. 6
2.3.1 音频采集与编码方案设计. 6
2.3.2 音频编程接口选择. 6
2.4 电力线载波通信模块. 6
2.4.1 电力线载波通信方案设计. 6
2.4.2 调制解调芯片选择. 7
2.5 嵌入式平台介绍及环境搭建. 7
2.5.1 硬件平台介绍. 7
2.5.2 平台软件环境搭建. 9
2.6 本章小结. 11
3 视频采集与编解码设计. 12
3.1 视频模块系统设计. 12
3.1.1 视频概述. 12
3.1.2 V4L2标准编程框架. 12
3.1.3 视频模块系统框图. 12
3.2 MJPG-streamer视频流服务器. 13
3.3 MJPG-streamer的移植. 13
3.3.1 JPEG库移植. 13
3.3.2 MJPG-streamer移植. 14
3.4 MJPG-streamer主程序处理流程. 15
3.5 视频服务器登陆设计. 16
3.5.1 Boa服务器概述. 16
3.5.2 Boa服务器功能. 16
3.5.3 Boa服务器移植. 16
3.5.4 CGI简介. 17
3.5.5 HTML简介. 18
3.5.6 JavaScript简介. 19
3.6 本章小结. 20
4 音频采集与编解码设计. 21
4.1 音频传输协议介绍. 21
4.2 音频基础介绍. 21
4.3 音频传输系统设计. 25
4.3.1 音频模块系统框图. 25
4.3.1 音频缓存区设计. 25
4.4 本章小结. 26
5 电力线载波通信设计. 27
5.1 电力线通信技术概述. 27
5.2 电力载波通信系统设计. 27
5.3 通信模块设计. 31
5.3.1 INT5500CS工作模式选择. 31
5.3.2 以太网模块设计. 31
5.3.3 用户接口协议. 32
5.4 本章小结. 34
6 样机系统功能测试. 35
6.1 系统测试准备. 35
6.1.1 音频测试. 35
6.1.2 视频测试. 35
6.1.2 电力线载波通信测试. 35
6.2 系统测试. 35
6.2.1 音频功能测试. 35
6.2.2 视频功能测试. 36
6.2.3 电力线载波通信功能测试. 38
6.2.4 联机测试. 38
6.3 总结与展望. 40
参考文献. 41
致 谢. 42
附 录. 43
1 前言
1.1 研究背景
综上所述,本课题针对需求,提出了具体的解决方案,将音频、视频和电力载波通信结合在一起,具有良好的实用价值和研究价值。
1.2 国内外发展概况
1.3 论文的主要研究内容
2 系统总体方案设计
2.1 系统总体框图
本系统涉及到音视频采集、音视频编码、电力线载波通信、音视频解码和终端显示几大部分,如图2-1所示:
2.2 图像采集与编码模块方案介绍与论证
2.2.1 DSP+视频采集芯片
该方案属于硬件压缩,使用视频采集芯片完成图像A/D的转换,通过DSP芯片完成数字图像数据的存储和编码压缩,典型方案如图2-2所示:
2.2.2 DSP+ARM+视频采集芯片
2.2.3 ARM+视频压缩芯片+视频采集芯片
该方案属于硬件压缩,经过转化的数字视频流由专用编码芯片编码,ARM控制图像数据存储和传输,典型方案如图2-4所示:
2.2.4 ARM+T264编码库或FFmpeg x264编码库
2.2.5 ARM+MJPG-streamer视频服务器
相比于软件压缩,硬件压缩效率较高,尤其是方案三,灵活性以及编码效率都要比其他方案更具有实用价值。但本系统涉及研究内容较多,成本以及开发周期有限,因此采用方案五,经实验测试完全可以满足本次设计要求。
2.3 音频采集与编解码模块
2.3.1 音频采集与编码方案设计
2.3.2 音频编程接口选择
OSS可移植性好,但具有声卡独占问题,闭源;ALSA具有声卡共享的特性,兼容OSS接口,开源。2.6版本的Linux内核用ALSA代替了OSS。但为了兼容以前的程序,ALSA提供OSS模拟。
综上所述,ALSA接口优点明显同时由于本次设计系统版本不支持OSS接口,因此采用ALSA接口。
2.4 电力线载波通信模块
2.4.1 电力线载波通信方案设计
编码后的音视频数据首先经过调制进入电力线通信网络,接收端解调后传输至终端。方案设计如图2-8所示:
2.4.2 调制解调芯片选择
由于音视频数据量较大,使用FSK调制和扩频技术都不能满足要求,下面仅对OFDM调制芯片做对比选择,如表2-1所示:
公司名称 |
芯片 |
芯片速率 |
执行标准 |
Intellon (目前已被高通收购) |
INT5200 |
||
INT5500 |
85Mbps |
HomePlug1.0+ |
|
INT6000 |
200Mbps |
HomePlug1.0 AV |
|
Maxim |
MAX2986 |
14Mbps |
HomePlug1.0 |
Qualcomm Atheros |
QCA6410 |
200Mbps |
HomePlug1.0 AV |
从通信速率角度来看以上芯片都可以满足本次设计要求,但考虑到电力线网络的复杂性且考虑到PLC通信芯片的传输距离与通信速率成反比关系,折中选择INT5500芯片。
2.5 嵌入式平台介绍及环境搭建
2.5.1 硬件平台介绍
本次样机设计核心处理器选用三星公司的32位RISC微处理器S5PV210,该处理器基于ARMv7架构,CPU采用Cortex-A8内核,芯片运行主频高达1GHz。该芯片的组成如图2-9所示:
声卡采用支持AC97接口的WM9713芯片,该芯片内部集成AD、DA控制器和触摸屏处理的部分功能,芯片通过内部有64个寄存器进行配置。WM9713芯片连接电路如图2-11所示:
2.5.2 平台软件环境搭建
#tar jxvf arm-linux-gcc-4.3.2.bz2–C /usr/local/arm
#sudo vim ~/.bashrc (打开脚本并在最后加入下面这行)
exportPATH=/usr/local/arm/4.3.2/bin:$PATH
#source ~/.bashrc (重新启动脚本使环境变量设置立即生效)
#tar zxvf unsp210_u-boot.tar.gz
7. 将tools 目录下生成的mkimage 文件拷贝到/bin 目录中,后面用于制作u-boot 所需格式的内核
#tar zxvf unsp210_linux_2.6.35.tar.gz
#cp config_sunplusedu_20130604 .config
yaffs 格式的根文件系统是可读可写的文件系统,没有经过压缩
#mkyaffs2image rootfs rootfs.yaffs
4. 根据PC机IP对开发平台进行IP设置"serverip(windows'sIP)" and "ipaddr(开发平台的IP)";
5. 分别使用的命令是:setenv serverip172.20.223.XX(windows IP) 或10.221.X.XX(windows IP)
setenv ipaddr 172.20.223.XX(开发板的IP)或10.221.X.XX(开发板的IP)
6. 保存刚才对硬件平台的设置:使用命令进行设置:saveenv;
7. 使用ping 命令查看PC机和A8平台的网络是否连通:(可在开发板上ping PC 机);
8. 打开PC机端tftp服务器tftpd32.exe 文件,并将编译好的u-boot、内核镜像和文件系统拷贝到tftp服务器目录;
10.如果烧写U-boot,可以输入命令:update boot u-boot.bin
如果烧写kernel,可以输入命令:update kernel zImage
如果烧写rootfs,可以输入命令:update yaffs rootfs.yaffs
2.6 本章小结
3 视频采集与编解码设计
3.1 视频模块系统设计
3.1.1 视频概述
3.1.2 V4L2标准编程框架
3.1.3 视频模块系统框图
3.2 MJPG-streamer视频流服务器
3.3 MJPG-streamer的移植
3.3.1 JPEG库移植
MJPG-streamer的移植需要jpeg库,因此首先移植jpeg库。
#./configure--prefix=/home/edu/share/video/jpeg --host=arm-linux
#cp /home/edu/share/video/jpeg/lib/libjpeg.so.* <A8>/lib -rfa
3.3.2 MJPG-streamer移植
#tar xvf mjpg-streamer-r63.tar.gz
2)修改源码
CFLAGS +=-O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
为
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
-I/home/edu/share/video/jpeg/include
$(CC)$(CFLAGS) -ljpeg -o $@ input_ uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
$(CC)$(CFLAGS) -ljpeg -L/home/edu/share/jpeg/lib -o $@ input_uvc.c v4l2uvc.lo
#cp *.so <A8>/usr/mjpg-streamer/ -rfa
#cp mjpg-streamer <A8>/usr/mjpg-streamer/
#cp www <A8>/usr/mjpg-streamer/ -rf
#./mjpg_streamer -i "./input_uvc.so -y -r 320*480" -o "./output_http.so
默认端口8080,默认设备/dev/video0,必须设置输出分辨率
6)在源码目录下有start.sh,这个脚本里有一些MJPG-streamer的使用方法及说明,
可以执行start.sh脚本运行视频服务器,首先注释掉所有行,然后添加以下几行:
export LD_LIBRARY_PATH="$(pwd)"
$WEBSERVER/mjpg_streamer-o "$WEBSERVER/output_http.so -p8000 -w
$WEBSERVER/www" -i"$WEBSERVER/input_uvc.so -y -r 320*480 -d /dev/video0"
3.4 MJPG-streamer主程序处理流程
3.5 视频服务器登陆设计
3.5.1 Boa服务器概述
3.5.2 Boa服务器功能
Boa服务器可以为网页终端提供数据交互,Boa的工作流程主要包括:
1.由于Boa是一款基于TCP/IP协议的服务器,因此首先需要创建TCP网络套接字、绑定端口、启动侦听等过程,同时也需要对一些环境变量进行相应的初始化,之后循环等待接收客户端的连接请求;
3、服务器通过CGI程序分析客户端请求,同时根据请求做出相应的处理,并向客户端发送相应的响应信息;
4、完成客户端和服务器的数据交互,关闭相应的TCP套接字连接,释放相关资源。
1、当服务器检测到客户端浏览器的请求方法为HEAD时,则Boa服务器直接向客户端返回响应首部;
2、当服务器检测到客户端浏览器的请求方法为GET时,则Boa服务器首先返回响应首部, 之后将读出的URL文件信息发送给浏览器;
3.5.3 Boa服务器移植
(1) tar zxvf boa-0.94.13-src.tar.gz 解压
(1) 建立boa.conf目录, 并复制boa.conf到建立的目录下
(2) 进入存放boa.conf的目录并修改其中的boa.conf文件
(3) 修改Usernobody 为 User 0 ; 修改Groupnogroup 为 Group 0
(4) 修改ErrorLog选项和AccessLog选项为:
ErrorLog /home/boa/log/error_log
AccessLog /home/boa/log/access_log
(5) 设置html文件目录:DocumentRoot /home/boa/www
(6) 设置默认首页:DirectoryIndex homepage.html
ScriptAlias /cgi-bin/ /home/boa/www/cgi-bin/
4、拷贝PC上/etc/mime.types文件到设置好的mime.types文件目录下
3.5.4 CGI简介
CGI是用来沟通HTML表单和服务器端程序的接口(interface)。如果一种语言支持标准输入和输出,可以设置环境变量,就可以实现CGI程序。
C语言具有标准输入和输出,并且可以设置环境变量,因此本次设计可以使用C语言来实现CGI程序。
2、CGI程序第一行输出的内容必须指定Content-Type如:
QUERY-STRING:GET方法。用来获得表单输入的数据。
CONTENT-LENGTH:POST方法。用来获得输入数据的字节数。
3.5.5 HTML简介
2、HTML标签是通常是成对出现的比如<html></html>
本次设计中浏览器通过标签解释Boa服务器传送的HTML文件,然后在网页上显示HTML内容。
表格是网页排版的灵魂,通过表格可以精确地控制各网页元素在网页中的位置。
表单是用来搜集站点访问者的域集。站点访问者填写表单的方式是输入文本、单击单选按钮与复选框,以及从下拉菜单中选择选项等,表单数据会使用相应的程序进行处理。
动画是网页上最活跃的元素,通常制作优秀、创意出众的动画是吸引浏览者的最有效的方法。不过现在的网页往往不是缺乏动画,而是太多动画让人眼花潦乱,无心细看。
框架是网页的一种组织形式,将相互关联的多个网页的内容组织在一个浏览器窗口中显示。
3.5.6 JavaScript简介
JavaScript是一种基于对象的脚本语言,该脚本语言通过客户端浏览器内部的解释器解析为可执行格式,具有简单性、跨平台性、面向对象和动态性的特点。
JavaScript脚本被设计用来向HTML 页面添加交互行为,是一种脚本语言(脚本语言是一种轻量级的编程语言),由数行可执行计算机代码组成,可以在HTML代码中实现。
<input type="button"οnclick=“alert(‘欢迎’);”value=“点击">;
<script type=“text/javascript”>
<script type=“text/javascript”src=“文件名.js”></script>
3.6 本章小结
4 音频采集与编解码设计
4.1 音频传输协议介绍
UDP协议取消了重传机制,是一种面向无连接的数据包方式,但UDP协议传输数据容易丢包,因此需要结合RTP与RTCP协议保证通信的正确性和实时性。
4.2 音频基础介绍
snd_pcm_open(&pcm_handle,"default", stream, 0);
snd_pcm_hw_params_any(pcm_handle, params);
snd_pcm_hw_params_set_access(pcm_handle,params,
SND_PCM_ACCESS_RW_INTERLEAVED);
snd_pcm_hw_params_set_rate_near(pcm_handle,params,
snd_pcm_hw_params_set_format(pcm_handle,params,
snd_pcm_hw_params_set_channels(pcm_handle,params,
snd_pcm_hw_params_set_period_size_near(pcm_handle,
exportPREFIX=/usr/lib/alsa_lib
tar xvfalsa-lib-1.0.27.2.tar.bz2
exportPATH=/usr/local/arm/4.3.2/bin:$PATH
将"/etc/alsa/"和"/usr/lib/alsa_lib"拷贝到A8平台相应目录下,设置额外链接库的路径:
exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/alsa/alsa_lib/lib
ln -s/dev/pcmC0D0c /dev/snd/pcmC0D0c
ln -s /dev/pcmC0D1c /dev/snd/pcmC0D1c
ln -s/dev/pcmC0D0p /dev/snd/pcmC0D0p
ln -s/dev/pcmC0D1p /dev/snd/pcmC0D1p
ln -s/dev/controlC0 /dev/snd/controlC0
ln -s/dev/timer /dev/snd/timer
tar xvfalsa-utils-1.0.27.2.tar.bz2
#修改A8平台环境变量,LD_LIBRARY_PATH库的额外链接路径,PATH可执行程序自动搜寻路径,注意根据自己的库还有可执行的aplay在开发板的路径去设置
exportPATH=$PATH:/usr/local/arm/gtk_dfb/sbin:/usr/alsa/alsa_lib/lib/bin
4.3 音频传输系统设计
4.3.1 音频模块系统框图
4.3.1 音频缓存区设计
4.4 本章小结
本章对音频采集与编解码进行了详细介绍,首先对音频和流媒体等基础知识作了简要介绍,然后详细介绍了ALSA接口库文件移植以及编程步骤,最后详细介绍了音频编解码模块代码设计流程以及数据传输过程。
5 电力线载波通信设计
5.1 电力线通信技术概述
电力载波通信是应用于电力系统的一种通信方式,将载有信息的射频信号以电流的形式加载到电力线上进行传输。
5.2 电力载波通信系统设计
INT5500CS芯片必须与模拟前端芯片INT1200配合才能使用,通过AFE接口相互连接,INT1200内部集成ADC和DAC控制器,同时可以调节开关增益放大器的放大倍数,连接框图如图5-4所示:
5.3 通信模块设计
5.3.1 INT5500CS工作模式选择
管脚 |
功能 |
电平 |
设置 |
ASC_EN |
保留 |
低电平 |
设置为低 |
ASC_DATA/MODE |
模式 |
低电平 |
Host/DTE模式 |
高电平 |
PHY模式 |
||
ASC_CLK |
保留 |
低电平 |
设置为低 |
ASC_PWRDWN/MAC_CLK |
时钟速度 |
低电平 |
50MHz |
高电平 |
75MHz |
||
GPIO_6 |
启动方式 |
低电平 |
FLASH启动 |
高电平 |
主机启动 |
5.3.2 以太网模块设计
由于模式选择引脚设置为低电平,则INT5500CS芯片工作在主机模式下,类似于以太网的数据链路层芯片,与AC101L的连接图如下所示:
5.3.3 用户接口协议
HomePlug MAC 管理入口MME出现在INT5500的任意帧处理过程中,INT5500CS芯片利用MAC管理在HomePlug 1.0.1规格书中指定帧格式。远程应答MME工作过程如下:
1. PTS发送一个数据帧到本地INT5500,包含设置远端站地址的DA,设置PTS地址的SA。附加MME的网络密钥,其EKS设为0,并且EK设置远程站DEK,远程应答MME和应答帧;
2. PTS的INT5500远程连接附加MME密钥,使用指定的EKS和EK加密结果帧并将帧数据发送到电力线上;
3. 远程INT5500从电力线上收到相应数据帧,数据是被远程主机的DEK加密的;
4. 通过INT5500返回一个远程应答MME到PTS,远程主机应答;
5. DUT INT5500转寄远程应答MME到电力线上,并使用NEK加密;
6. PTS INT5500收到远程应答MME并且转寄它到PTS;
8. DUT INT5500正常执行应答帧,如果需要转寄数据帧到电力线上;
5.4 本章小结
6 样机系统功能测试
6.1 系统测试准备
本设计主要分为音频、视频和电力线载波通信三部分,下面分别对各功能测试所需工具软件作简要介绍。
6.1.1 音频测试
所需工具:嵌入式A8硬件样机平台、拾音器、win7端Linux操作系统和网线;
软件环境:搭建好的嵌入式Linux软件环境,A8硬件平台和PC端Linux需要安装ALSA
6.1.2 视频测试
所需工具:嵌入式A8硬件样机平台、USB摄像头、win7端浏览器和网线;
软件环境:主机端搭建好的嵌入式Linux软件环境,配置安装视频流服务器和Boa服务器,支持USB摄像头驱动;
6.1.2 电力线载波通信测试
所需工具:INT5500CS调制解调器硬件平台、插排、PC机、嵌入式A8硬件样机平台和网线;
软件环境:PC端需要安装Intellon公司的PowerPacket Utility软件测试数据传输速率和通信质量相关信息。
6.2 系统测试
6.2.1 音频功能测试
使用网线和串口线连接A8样机平台和PC机,同时打开串口终端以便通过命令控制A8平台,将PC端IP地址和A8平台IP地址设在同一网段。
6.2.2 视频功能测试
使用网线和串口线连接A8样机平台和PC机,同时打开串口终端以便通过命令控制A8平台,将PC端IP地址和A8平台IP地址设在同一网段。
在用户窗口输入root,密码窗口输入111111,点击登陆后进入选择登陆界面,如图6-4所示:
6.2.3 电力线载波通信功能测试
图6-6 PowerPacket Utility软件测试效果
6.2.4 联机测试
通过对三个模块的单独测试,各模块完全满足设计要求,下面对系统总体功能进行测试。
在A8硬件平台附近或PC机附近说话,可以在另一端听到相应声音;改变摄像头位置,可以看到网页端图像发生相应变化。经过以上测试,本次系统方案完全满足设计要求。
6.3 总结与展望
本章在开始部分介绍了测试前所需要的工具软件,接下来分别对音频、视频和电力线载波通信模块进行了功能测试,最后对系统进行了整体功能测试。
参考文献
[1] 姚立斌. 低照度CMOS图像传感器技术[J]. ISSN, 2013.
[2] 廖根为.监控录像系统中人像鉴定问题研究.[M].上海人民出版社,2010.
[3] 杨宗德.吕光宏.刘雍.Linux高级程序设计.[M].人民邮电出版社,2012.
[4] 韦东山.嵌入式Linux应用开发完全手册.[M].人民邮电出版社,2011.
[5] INT5500CS datasheet [Z]. Intellon Corp.
[6] IntellonCorporation.OFDM WhitePaper.[Z]. 2002.
[7] 冯明. 网络视频监控业务发展浅析. 电信科学,2007(11).
[8] 陈龙,陈层. 安全防范工程. 北京:中国电力出版社,2006.
[9] 胡永红. 智能多路视频监控系统的设计. 微机发展,2001,1(2):75-76.
[10] 施裕丰,陈坚,陈启转. 网络式多媒体监控系统. 计算机工程,2000.
[11] INT1200datasheet[Z].Intellon Corp.
[12] 梁明等.高速电力线通信的关键技术[J].电工技术杂志.2004(4).
[13] 陈文智.嵌入式系统开发原理与实践.清华大学出版社,2005.
[14] 罗世伟.视频将监控系统原理及维护.北京:电子工业出版社,2007.
[15] 张明,李芳.高速公路监控系统研究.商业经济,2009(9).
[16] 林宇,郭凌云.Linux网络编程,人民邮电出版社.
[17] 严俊,马小骏,顾冠群.RTP协议的研究与实现,计算机工程与应用,2000.
【IoT】产品模型:基于 ARM 的音视频采集与传输系统相关推荐
- iOS直播(二)GPUImage音视频采集
上文中介绍了用AVFoundation实现音视频采集(https://blog.csdn.net/dolacmeng/article/details/81268622) ,开源的基于GPU的第三方图像 ...
- Android 音视频采集与软编码总结
请尊重原创,转载请注明出处:http://blog.csdn.net/mabeijianxi/article/details/75807435(本文已在 "任玉刚" 微信公众号发布 ...
- 基于ARM的移动视频监控系统
http://www.eeworld.com.cn/qrs/2010/0409/article_2439_1.html 0 引 言 传统的视频监控系统一般采用PC服务器的C/S(Client/Serv ...
- 介绍基于ARM的移动视频监控系统
摘要:将嵌入式Linux和无线网络引入到视频监控系统,阐述了系统的硬件组成:介绍了USB无线网卡驱动实现的过程:从嵌入式Linux开发环境的搭建.嵌入式流媒体服务器的设计和动态网页的设计等方面介绍了软 ...
- 【复】基于 WebRTC 的音视频在线监考模块的设计与实现(上)
文章目录 前言 什么是 WebRTC? WebRTC 架构 WebRTC 通讯内容 WebRTC 通讯协议 WebRTC 连接建立过程 后记 前言 最近在做关于考试系统的项目,其中有一项需求分析是要做 ...
- 基于GTK的USB视频采集程序
基于GTK的USB视频采集程序 查了几天的资料,今天终于将USB摄像头测试程序调试成功了.这个测试程序很简单,功能就是将USB摄像头采集的数据显示在屏幕上.写这个程序的目的是熟悉usb摄像头的一些基本 ...
- webrtc简单案例——音视频采集和播放
webrtc简单案例--音视频采集和播放 目录 打开摄像头并将画面显示到页面 打开麦克风并在页面播放捕获的声音 同时打开摄像头和麦克风,并在页面显示画面和播放捕获的声音 1. 打开摄像头并将画面显示到 ...
- Android端WebRTC本地音视频采集流程源码分析
WebRTC源码版本为:org.webrtc:google-webrtc:1.0.32006 本文仅分析Java层源码,在分析之前,先说明一下一些重要类的基本概念. MediaSource:WebRT ...
- WebRTC音视频采集和播放示例及MediaStream媒体流解析
WebRTC音视频采集和播放示例及MediaStream媒体流解析 目录 示例代码--同时打开摄像头和麦克风,并在页面显示画面和播放捕获的声音 API解析 mediaDevices MediaStre ...
- 基于WebRTC实现音视频及数据通信
文章目录 前言 一.WebRTC的组成? 二.信令交换的方式 三.会话描述 四.客户端应用 1.HTML 2.JavaScript 五.效果演示 六.项目地址 总结 前言 刚写了篇基于WebRTC使用 ...
最新文章
- 知乎如何运用OKR管理公司目标,达成绩效?
- ASP.NET MVC3细嚼慢咽---(2)模板页
- mysql分区失败_MYSQL表分区操作错误1503解决方案
- 基于Hadoop的Spark超快安装
- 浅析二层工业交换机的特点
- 微课|玩转Python轻松过二级:第1章课后习题解答
- deeply understanding Binary tree--二叉树
- 如何进行影像建库及做ArcGIS Server Cache
- 直播盒子的源代码怎么找
- ZYNQ平台Linux4.6内核蓝牙音频
- java根据书签添加内容_Java PDF书签——添加、编辑、删除、读取书签
- OSChina 周一乱弹 —— 无双什么都好,但不是芙妹
- java毕业设计二手商品交易网站mp4Mybatis+系统+数据库+调试部署
- Nuxt.js 如何做SEO
- Blazor发布问题,localhost可以访问,局域网无法访问
- 秘密secret的几个应用场景
- ActiveX控件属性的下拉列表
- 线性代数之——行列式公式及代数余子式
- 类似QQ空间,微信朋友圈,微博主页等,展示图片的九宫格控件
- 日本最大移动互联网公司Gree的秘密
热门文章
- 捷顺USB-RS485驱动
- java wifi开发教程_WiFi技术
- Qt日历控件显示周数为:日一二三四五六
- java txt 分段读取_Java 读取TXT文件的多种方式
- 解决libcrypto.so.1.0.0 动态库找不到的问题
- python录音pyaudio_Python开发之路(1)-用pyaudio录制和广播,使用,Pyaudio,进行,录音,播音...
- PYTHON简单的16进制转字符串
- php开源bi,Poli 简单易用的开源 BI 软件使用教程
- Android 一个adapter实现商品列表折叠
- Java—筛选法求素数