自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(298)
  • 资源 (8)
  • 收藏
  • 关注

原创 antmedia评估

aero-add-to-checkout=47606)web browser打开: https://antmedia.io/webrtc-samples/srt-publish-webrtc-play/也可以用ffmpeg来推srt流:https://antmedia.io/docs/guides/publish-live-stream/srt/https://github.com/ant-media/videojs-webrtc-plugin。官方文档:https://antmedia.io/docs/

2023-11-05 07:05:14 186

原创 基于libopenh264 codec的svc分层流实现方案

OpenH264 http://www.openh264.org/ 是标准的H.264 encoder/decoder. ffmpeg已经集成libopenh264,但不支持svc特性。比如,刚开始播放时,尝试获取3s标清base layer S0T2进行播放,播放流畅的话,就尝试获取S1T2进行叠加图像效果。不同流用虚连接区分,NALU type上区分layers: dependency_id(DID) + temporal_id(TID) + quality_id(QID).对于传输,用RTP协议。

2023-11-05 07:00:08 707

原创 mediasoup udp端口分配策略

/ mediasoup-worker child process. mediasoup-worker是node.js的子进程。关于RTP port,包括组成medsoup-cluster的pipeToRemoteRouter的RTP转发port,mediasoup-worker多进程启动时,rtcMinPort/rtcMaxPort可以使用相同的配置。node.js的webRtcServer是c++ mediasoup-worker的封装。答案是mediasoup的node主进程来处理的。

2023-11-05 06:57:17 628

原创 mediasoup-cluster横向扩容机制

/向对端发出创建pipeProducer的event。参考文档:https://mediasoup.org/documentation/v3/mediasoup/api/#PipeTransportOptions。//注释里的本地指originNode, 对端指edgeNode。//pipeConsumer的消费对象是本地的producer。//通知对端进行pipeTransport连接。//向edgenode请求用作pipe的routerId。//响应源节点要求创建pipeProducer。

2023-11-05 06:54:20 193

原创 Linux 网卡性能优化设置

在高速网络传输中,每秒传输的数据量非常大。网络设备设置有一种缓存机制,即“缓存区”,在 Linux 系统中,网卡缓冲分为两种类型:软件缓冲区和硬件缓冲区。要提高网络吞吐率,首先当然是升级linux kernel。其次是设置linux系统参数和网卡驱动参数。如果可能,应该升级linux kernel和net driver(ko)以便获得更好的网络性能。网卡驱动一般情况下不允许设置,但可以查询设置情况和统计信息以定位问题。下面是一台典型centos7 VPS的网卡信息,驱动较为简单。下面的设置全部失败。

2023-10-21 10:04:45 797

原创 webrtc基于DTLS的端口复用技术

而TURN协议其实是对Cloud Native非常不友好的协议,因为它是需要分配一系列的端口,用端口来区分用户,这种是在私有网络中的做法,假设端口无限,而公有云上端口往往是受限的,比如需要经过Load Balance这个系统时,端口就是有限的。当队列的Socket包发送时间到时,队列头部的 Socket的包被发送,并且头部的Socket从队列中删除。发送队列包含Socket信息的链表。UDP多路复用,根据包头的目标Socket ID,将接收到的不同的UDT包分发给相应 的UDT Socket。

2023-10-19 22:11:48 786

原创 基于mediasoup的webrtc server,性能压测时发现带宽利用率偏低(40%)

基于mediasoup的webrtc server,进行性能压测时发现,在1gbps的网络条件下,带宽利用率在40%(400Mbps)时,就会出现过高丢包率的(packet loss > 10%)的情况。经过优化,带宽利用率提高30%达到55%。

2023-09-27 08:38:48 418

原创 Mediasoup在node.js下多线程实现

由于mediasoup-worker也是多进程,因此就成为socket.io server + mediasoup-worker的架构,这种框架,就大大增加SFU这种webrtc-server处理的复杂性。当然还有一个办法是processor#1上的socket.io forward msg to processor#2上的socket.io进行处理(内部转发),消息处理流程显得复杂了,多进程带来的效率提升恐怕也会被吃掉。首先尝试多线程MT方案,用node.js的worker_threads模块。

2023-09-01 22:58:47 760

原创 srs4.0dvr分支增加按需录像功能

if (fragment->duration() >= cduration) { //录像文件最长由配置文件dvr.conf决定。if (segment->current()->duration()>=3){ //录像文件最短3s。//stop_record和next start_stop之间的录像文件。//start_record和stop_record之间的录像文件。test.1688313245271.mp4.tmp //当前录像文件。//处理keyframe。

2023-07-02 23:59:58 407 1

原创 node.js学习笔记#1

node.js异步编程依托于回调来实现。回调函数在完成任务后就会被调用。Node 所有 API 都支持回调函数。var fs = require("fs");fs.readFile('input.txt', function (err, data) { //注册匿名回调函数 if (err) return console.error(err); console.log(data.toString());});fs.readFile函数用法可以查看官方资料:https://nodejs.org/

2023-06-26 16:25:00 484

原创 go 中slice与map区别

/用Go泛型。

2023-04-25 09:26:10 407

原创 GO面视题

P: Processor(其作用类似于CPU),负责调度goroutine,维护一个本地goroutine队列,M从P上获得goroutine并执行,同时还负责部分内存的管理。每个goroutine都有自己的栈空间,定时器,初始化的栈空间在2k左右,空间会随着需求增长。上锁期间其他人不能修改数据。堆内存分配不仅分配逻辑上比栈空间复杂,它最致命的是会带来很大的管理成本,Go语言要消耗很多的计算资源对其进行标记回收(也就是GC成本)。互斥锁是一种数据结构,用来让一个线程执行程序的关键部分,完成互斥的多个操作。

2023-02-21 20:48:23 166

原创 Golang特色与优势

7. Array,slice,map等内置基本数据结构,支持列表和字典更为轻松。2. 支持协程goroutine,效率比进程/线程要高许多。Go 语言可以很灵活的创建函数,并作为另外一个函数的实参。1. 支持多CPU架构,方便部署.9. 支持函数作为参数。5. 匿名函数和闭包。10. 指针和C一样。

2023-01-14 16:22:00 150

原创 一道经典的Go语言面视题

/ 分别开启三个go协程,协程中循环输出 gua ,wang , miao ,// 在元音字母 a, u, i ,输出总数达到50 个以后,停止输出。

2023-01-14 16:08:01 583

原创 mediasoup性能瓶颈分析

首先,升级mediasoup 至3.10.8. 为保证效果,mediasoup-worker需要合理分配,分离出一个单独的ms-worker作为pipe-worker来使用,而其它的ms-worker组成pool给user使用。故障发生时,观察到推流器obs的码率发生了严重下降,由正常的1.5Mbps下降到约400kbps,显然,这个encoding码率就会导致严重的画质问题。Action: 统计出ms-worker的数量,每个ms-worker上承载的room数量。

2022-10-18 22:15:49 710

原创 mysql 5.7忘记root密码

1.开窗口1D\program\phpstudy_pro\Extensions\MySQL5.7.26\bin>mysqld.exe--skip-grant-tables。mysqld.exe--skip-grant-tables;这样就把密码改为root123了。

2022-07-27 06:59:56 599

原创 socket.io介绍

Socket.IO 是一个库,可以在客户端和服务器之间实现低延迟、双向和基于事件的通信。它建立在 WebSocket 协议之上,并提供额外的保证,例如回退到 HTTP 长轮询或自动重新连接。几种可用的 Socket.IO 服务器实现:Java:https://github.com/mrniko/netty-socketioJava:https://github.com/trinopoty/socket.io-server-javaPython:https://github.com/miguelgrinb

2022-07-09 22:13:59 2927

原创 mediasoup client与server交互过程

mediasoup 不提供任何信令协议来通信客户端和服务器。 由应用程序使用 WebSocket、HTTP 或任何一种通信方式进行通信,并在客户端和服务器之间交换 mediasoup 相关的参数、请求/响应和通知。 在大多数情况下,这种通信必须是双向的,因此通常需要全双工通道。 但是,应用程序可以将相同的通道重用于非 mediasoup 相关的消息交换(例如身份验证过程、聊天消息、文件传输以及应用程序希望实现的任何内容)。...

2022-07-08 10:49:59 7914

原创 linux下编译 libmediasoupclient, webrtc过程

libmediasoupclient build-env: POSIX, cmake >= 3.5, gcc and g++ >= 4.9 or clang (win with C++11 support) refer: https://mediasoup.org/documentation/v3/libmediasoupclient/installation/ 由于libmediasoupclient使用libwebrtc,所以如果想编译libmediasoupclient,需先编译

2022-06-12 23:28:27 539

原创 Go-sqlite3在windows10下面不能使用

故障现象:D:\Goprj\work\src\token-server>go run src/main.go# github.com/mattn/go-sqlite3cc1.exe: sorry, unimplemented: 64-bit mode not compiled in感觉go-sqlite3要编译生成windows对接的lib才能运行。这是编译工具不匹配报警。下载一个mingw64。设置环境变量path后。Cmd进入命令行,查看一下gcc版本号。C:\ &gt

2022-05-19 22:25:01 649

原创 gorm在查表时打印 no such table

分析:明明就有这个table,但居然查询时,就说没有这个table。code如下''' db := models.GetDBConn() var channelStat models.WrsChannelStat err = db.Where("token = ?", userValidate.Token).First(&channelStat).Error if err != nil { fmt.Println(err) ...

2022-05-18 22:14:39 578

原创 jitsi与mediasoup对比

实现多用户直播的Webrtc有两个重要的方案:jitsi和mediasoup。在pc/mobile web兼容性方面,两者表现差不多,都比owt,强许多。Owt是intel领导的MCU方案,https://github.com/open-webrtc-toolkit/owt-server。但这个owt的播放端做得确实烂!我都不拿owt出来做对比了。先看一下jitsi和mediasoup两者的demo对比吧。Owt连个在线demo也没有,真的丢人!Jitsi Meetmediasoup d

2022-05-10 06:39:14 1730

原创 部署webrtc开源工程owt

介绍如何部署webrtc开源工程owt的过程

2022-03-05 10:14:44 1032

原创 Adaptive-HLS流的优劣分析

HLS是Apple采用的基于http的流媒体格式。媒体切片为mpegts格式,manifest文件被称作m3u8。一个主master.m3u8里包含多个不同resolution/bitrate的子流,由客户端播放器根据显示屏size和网络状况选取其中一个子流进行播放,这就是自适应(adaptive)的过程。下面是一个典型的master.m3u8文件。#EXTM3U#EXT-X-VERSION:3#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="group_audio",NAME="

2022-01-19 23:34:49 499

原创 obs和obs-ndi项目编译过程

obs-ndi真的是一个不错的项目,可以在局域网上虚拟出HDMI/SDI线,为obs接多HDMI输入组网应用场景提供了极大的便利。开源工程:https://github.com/Palakis/obs-ndi/releases/tag/4.9.1首先,要编译obs,最新版本是27.1.3OBS requires Windows 10 SDK version 10.0.20348.0: https://developer.microsoft.com/en-us/windows/download...

2021-10-29 22:34:00 1284

原创 python3 fastapi框架介绍

fastapi是堪比NODEJS和GO处理性能的python3框架。官网:https://fastapi.tiangolo.com/FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints.1. 转换 来自网络请求的输入数据为 Python 数据类型。不象Django还要用middleware.2.

2021-05-23 00:58:08 837

原创 srs录像丢失调查,50s video lost when recording 6hrs.

SRS录像,发现统计直播时长和录像时长不一致。录像6hour,差了50s。调查发现,on_publish事件和on_unpublish事件之间,差距就有4s。这4s是合理的,并不是录像视频丢失。录像时长实际上是正确的,只是两个ts切片之间有视频计算上的丢失。平均两个ts之间就有15ms的时间被gap。这个问题其实很好解决,上一个ts的end_time作为下一个ts的start_time就行了。[16446][59hd9wz8] hls#1:start_dts=0,dts=8949,duration=

2021-03-31 23:58:15 469

原创 srs在直播中断时自动填充式播放广告视频

为什么要这样修改呢?当然是有特别的场景需要。比如某一个直播,推流中断。这时,服务器直接用一个广告推流来替代。当直播恢复后,强行踢掉广告流。因为主播流和广告流是使用的同一个直播地址,因此,需要这个踢流机制。原来的播主网络恢复了,他要继续推流。如何处理呢?最好的办法不是发消息让广告进程停止注入。而是强迫广告进程让出原来的播主频道。srs原来提供了一个kickoff流的http-api。那是利用coroutine的机制来实现的,感觉非常危险。容易易导致程序crash。并且,也没有必要那样做,只需要想办

2021-03-31 21:06:18 266

原创 如何在srs的两个实例间传递数据

hls切片器用了两个srs实例,一个是live-srs,一个是hls-srs。live实例负责接受推流,而hls实例则负责切片。这种框架会带来很大的灵活性。在两个情况下,需要这两个srs进程间通信。情况1:由外部传入session_id来动态决定hls的录像路径,也就是ts切片文件存放的子目录。情况2:把流名称stream替换为另外一个随机数如uuid,从而隐藏原始的推流地址信息。涉及进程间通信,用redis缓存来传递数据是比较合适的选择,不需要做持久化。由于复制了2个子流,加上原始流,一共三个

2021-03-28 12:29:08 185

原创 直播live-broadcast中断时,hls-server填充预录视频的方法

当主播侧发生网络中断时,为了减小对N多观众端拉流的影响,最佳处理办法是在hls-server填充ts切片并继续更新m3u8索引文件。前端的处理方案要复杂许多。设计思路:1. 新建一个广告线程thread_hls_filler,用于推送填充视频。采用pthread的原因是通知的速度比进程快,用全局变量就可以。2. 在播主推流中断时,通知thread_hls_filler启动注入。notification delay <100ms。3. 当播主推流恢复后,通知thread_hls_filler

2021-03-27 21:14:32 2890

原创 srs允许两个进程向同一个rtmp-url地址推流,顺序生成hls切片

首先,需要允许rtmp-url重复。srs的SrsSource类是关键。class SrsSource 有一个类变量pool来保存由stream_url作为key的字典。每次进来一个推流,都要查重。string stream_url = vhost/app/stream三个字段组成。std::map<std::string, SrsSource*> pool;只需要增加一个pool就可以。我这里只允许本机IP可以重复推流。 std::map<std::string, Srs...

2021-03-26 22:17:24 651

原创 srs中转码线程如何设计来跟随源视频尺寸

在下面这个函数中,解析出input的size: oriw,orihsrs_error_t SrsSource::on_meta_data(SrsCommonMessage* msg, SrsOnMetaDataPacket* metadata){ SrsAmf0Any* prop = NULL; if ((prop = metadata->metadata->ensure_property_number("width")) != NULL) { req-&gt...

2021-03-25 18:04:35 341

原创 srs直播时复制子流,但损失了直播开始的20s数据

srs分为两级:源站(origin-node)和分发(edge-node)节点流程是源站负责接受主播推流(rtmp),forward一路流到edge-node,同时,利用ffmpeg产生(转码)出两路子流,这样就有三路流(原始流,标准流和低画质流)。edge-node实现ts切片,产生hls流。由三路hls流组成一路adaptive-hls流。播放器hls-player支持adaptive协议,根据客户端网络状况,自动选择不同速率的子流来适应。测试中发现,转码流启动速度太慢,导致开头的约20s时间

2021-03-21 10:02:44 250

原创 直播最佳推流参数推荐

高清推流:1920x1080, 30FPS,2s,3Mbps。标清推流:1280x720,30FPS,2s,1.5Mbps。这组参数是经过反复实践得出来的。高的FPS,在手机上播放视频时,会有极少量的cpu load上升,但户外直播时,观看流畅度远高于20/15 fps。bitrate看起来似乎有点高,但实际上,只是youtube推荐的最低值而已。这个值,可以保证画面质量优良。但继续提升bitrate,会带来肉眼感觉不出来的画质提升,不划算。如果再低一些,画质就会有损伤,不适应这个看颜值的时

2021-03-15 21:24:34 4779

原创 SRS中srt2rtmp代码阅读和流程分析

SRS4支持srt2rtmp功能,也就是说,实现了一个srt-server的同时,可以把srt://流转换为rtmp://流。 在测试时发现可以拉rtmp流,但是有明显的延迟。 先阅读一下代码,再分析一下可能的原因并提出解决方案。 in srt_data.cpp中(srt-server cycle): ret = srt_conn_ptr->read(data, DEF_DATA_SIZE); srt_conn_ptr->update_timest...

2020-12-30 11:01:29 423

原创 srt(udp)转rtmp(tcp)引擎设计(srs代码阅读)

srt2rtmp流程:接收srt data,然后decode,转封装为rtmp推送给rtmp server。流程的关键是一个decode func。int ts_demux::decode(SRT_DATA_MSG_PTR data_ptr, TS_DATA_CALLBACK_PTR callback){ int ret = -1; std::string path; if (!data_ptr || (data_ptr->data_len() < 188) ||...

2020-12-03 19:06:35 611

原创 网络质量指标及测试工具iperf

网络质量的指标,主要有以下几个: A. 带宽(throughput),网络的吞吐率,端到端之间可以传输的最大速率。 B. 延时(latency),数据包从本地传输到对端之间需要的时间,一般是来回的时间RTT。中美海底光纤RTT一般在170ms左右。 C. 丢包(loss),丢包率超过10%以后,网络质量会迅速劣化。 D. 延时抖动(jitter),如果延时不稳定,忽快忽慢,网络就存在抖动。在VOIP,视频会议等场合,往往声音和图像也会抖动。视讯直播对这四个指标都很敏感。基于...

2020-11-03 12:12:45 2592

原创 windows下编译srt.dll过程

编译libsrt.so库,按官方的说明文档来操作,最终成功!中间试图用msys2+mingw64来编译失败了! annot find -lwsock32.lib 和 ld.exe: cannot find -lws2_32.lib。应该是可以解决的。 下面记录用vs2019来编译生成srt.lib/srt.dll的过程。 vcpkg install openssl --triplet x64-windows vcpkg install pthreads --tripl...

2020-09-21 22:18:23 928 5

原创 绿幕现场环境搭建

绿幕抠像技术近年来日益游行。虚拟演播室效果如下:为了保证绿幕布不晃动,还做了一个3/4的围墙,用一层薄木板就可以隔离起来。地胶也是绿幕的一种,独立出来,方便踩踏且不会影响幕布。灯光至关重要,要达到无影的效果,推荐用5束光打光法。且不可在绿幕墙上留下人影。绿幕场景布置过程:首先,要确定两个参数:摄像机的高度,摄像机与桌台聚焦中心之间的夹角,前景与背景之间在画面中的比例。这一般由项目的美工来确定。其次,要调摄像机参数。首先是白平衡,一般用自动白平衡就可以。感光参数尽量调小一些,这会减

2020-08-03 21:15:44 2814 1

原创 nginx内置变量如何在不同location之间传递

问题起因是要实现nginx认证通过后才允许访问mp4视频文件进行直播。除了使用auth_request模块功能外,还有一个关键点是不同location之间传递变量。nginx为了方便配置文件修改,实际上nginx的配置文件相当于一个脚本语言了。nginx定义了许多变量,这里简单列出四个此次配置要使用的。$arg_PARAMETER #这个变量包含GET请求中,如果有变量PARAMETER时的值。ex: arg_tk$args #请求中的参数值$quer...

2020-07-02 20:56:33 1048

rtsp2rtmp.zip

rtsp2rtmp is used to pull multiple IPC and push to rtmp server. 核心是基于ffmpeg写的三个转码函数: int FF_Transcode_Live(int id,FF_TRANS_S *pTrans,int *state); int FF_Transcode_UDP(int id,FF_TRANS_S *pTrans,int *state); int FF_Transcode_Mp4(int id,char* inUrl, char* outUrl, int duration); 去掉了一些可能的侵权内容,因此,编译上可能有些问题,简单处理一下就好。 源文件:ffmpeg.c/.h, transmain.c/.h, tool.c/.h

2021-03-22

openrtxp.zip

openrtxp是一个小型的rtsp/rtmp协议的rtxpserver, ANSI C语言开发,方便移植到嵌入式系统如IPCam. 功能list: (1)支持H264 + AAC编码格式封包成RTSP/RTMP,可以使用VLC/VLC网页控件播放,RTMP可以用VLC/flash player/kmplayer播放. 支持RTP over TCP/UDP. (2)RTSP/RTMP的URL可配置,缺省URL如下: VOD点播(文件回放):rtsp://192.168.2.62/playback/test.mp4 直播:rtsp://192.168.2.62/stream/0 RTMP的url和RTSP一致,只需要把"rtsp"修改为"rtmp" 图像延迟在250ms左右. (4)同时支持基于UDP/TCP的TS流直播. (5)移植很方便,只需要编写约7个直播流获取Audio/Video的函数即可. (6)支持DVR功能,通过简单的调用,即可实现把直播流保存到硬盘中(支持.mp4/.ts格式) (7)所有代码为纯C代码,可移植性强。 移植很方便,只需要编写约7个直播流获取Audio/Video的函数即可. int liveInit(); int liveUninit(); void* liveCreate(char* filename,void* prv,double* duration,unsigned int* video_codec,unsigned int* video_width,unsigned int* video_height,unsigned int* video_fps,unsigned int* video_bps,unsigned int* audio_codec,unsigned int* audio_samplerate,unsigned int* audio_channels,unsigned int* audio_bps); int liveGetHeaderPacket(void* hdl,int data_type,char* buf); int liveGetVideoPacket(void* hdl,char* buf,double* pts,int* sync); int liveGetAudioPacket(void* hdl,char* buf,double* pts); int liveDestroy(void* hdl); FAQ: 1.为什么要用ffmpeg和ssl? 答:ssl是rtmp协议要用到。ts流,mp4文件都是由ffmpeg中的方法来实现的。如果去掉这两个lib,就支持不了rtmp,.ts,.mp4等功能。 libssl和libcrypto则是rtmp要使用的,修改configs.h 和Makefile就可以很容易地去掉。 playback/DVR/TS功能要用到ffmpeg lib的支持,修改configs.h和Makefile也很容易去掉ffmpeg,但这三项功能就实现不了。 去掉openssl和ffmpeg后,编译出来的image size在83KB左右。 2.如何支持底层的多通道?比如一个是1080P ch,一个是CIF ch. 答:通过live->idx = idx=atoi(filename);来区分不同的hw path。 3.如何支持多session或多个client连接? 答:来一个session,就调用liveCreate()来生成一个live实体。 liveCreate()的时候每次都是malloc()一个新的instance,那个instance包含一个h264enc指针和一个rd。 h264enc指针内部有一个wr,也就是说所有的流都共享一个h264enc指针,但每个流的rd是独立的。 第二次liveCreate()的时候,h264enc指针已经有了,就不需要再次建立h264enc指针了,直接引用就可以了(因此h264enc内部要做引用计数) 每多调用一次liveCreate(),h264enc->ref++。 每调用一次liveDestroy(),就h264enc->ref--,==0的时候就真正destroy h264enc。

2021-03-22

autolabelimg.zip

autolabelimg工具: 根据输入的待定位图片\rtmp流\capture来完成自动定位,生成xxx_pos.jpg和xxx_pos.xml。 生成的图片和xml定位文件可以被标注工具labelimg解析(兼容)。 如果定位成功,则会弹出标注后的图片。如果失败,则不会弹出图片。 特点: 1. 支持静态图片/rtmp视频流/本机video设备作为输入源。 2. 按扑克游戏类型进行特定标注,标注的顺序号符合游戏解析定位文件的要求。 支持的游戏类型:龙虎,牛牛,百家乐。 3. 支持1280x720与1920x1080分辨率。 源代码列表:autolabel.cpp/.h,labelmain.cpp,tinyxml2.cpp/.h 第三方lib: opencv 程序编译(vs2015/vs2019): 1>------ 已启动生成: 项目: autolabelimg, 配置: Release x64 ------ 1>autolabel.cpp 1>labelmain.cpp 1>tinyxml2.cpp 1>正在生成代码 1>586 of 589 functions (99.5%) were compiled, the rest were copied from previous compilation. 1> 21 functions were new in current compilation 1> 0 functions had inline decision re-evaluated but remain unchanged 1>已完成代码的生成 1>autolabelimg.vcxproj -> D:\wincpp\gitwork\autolabelimg\x64\Release\autolabelimg.exe 1>已完成生成项目“autolabelimg.vcxproj”的操作。 Demo: 两张pocker时生成的定位文件 <annotation> <filename>images\b21(1920x1080)_pos.jpg</filename> <size> <height>1080</height> <width>1920</width> </size> <object> <name>card_1</name> <bndbox> <ymax>864</ymax> <xmax>627</xmax> <ymin>493</ymin> <xmin>213</xmin> </bndbox> </object> <object> <name>card_2</name> <bndbox> <ymax>833</ymax> <xmax>1715</xmax> <ymin>468</ymin> <xmin>1305</xmin> </bndbox> </object> </annotation>

2021-03-22

流媒体技术入门与提高.pdf

音视频,流媒体,压缩,传输过程涉及的技术研究

2016-01-20

GM8138S_Data_Sheet_v1.1.pdf

GM8138S is a high-integrated SoC designed for IP-Cam. It provides a cost-effective and easy development system for the video applications. GM8138S includes a wide range of basic components, including the ISP, H.264 codec, MPEG4/JPEG codec, video capture, display controller, DES/3DES controller, DMA controller, Ethernet RGMII/RMII controller, USB 2.0 OTG, to reduce the overall system cost.

2014-07-07

libpsd v1.0

libpsd is used to r/w photoshop file(xxx.psd). It is the Photoshop File Format Encode/Decode Library. It supports for Adobe Photoshop CS4 version, and is compatible with the previous versions of Photoshop. run-time lib is:MultiThread DLL, debug version. using big-endian mode. programming by ANSI C to belifit porting work. function list: 1. load/save psd/bmp/jpeg/png file. 2. New psd file, new psd layer. 3. layer direction/brightness/contrast adjust. 4. layer zoom. 5. psd2png. http://sourceforge.net/projects/slibpsd/

2011-08-17

单片机的TCPIP协议栈及webserver源码

单片机的TCPIP协议栈及webserver源码,很不错!

2009-03-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除