基本信息
-
曹万平 / 男 / 1990.12
-
湖南 / 长沙
-
编程 / 健身 / 阅读
-
音视频开发工程师
技能点
-
-
-
-
-
-
-
-
其他
-
UPnP、SSDP、RokuCast、GoogleCast、XboxRemotePlay
-
FFmepg、OpenGL、Metal
-
Git、CMake、Markdown
教育经历
-
中南林业科技大学 - 软件工程专业(本科)
- 项目经验:FAT32文件系统解析及数据恢复,NTFS文件系统解析。
- 毕业设计:Window XP内存数据扫描器的设计与实现。
- 专业排名:GPA 3.75/4.0,校一等奖学金1次,国家励志奖学金1次,校三好学生1次,校优秀毕业生,校优秀毕业设计。
工作经历
-
艾尼科技有限公司-macOS&iOS开发工程师
-
Cisdem Duplicate Finder
AppStore
-
技术栈:Cocoa+GCD+MD5
-
[实现] 基于GCD的多线程快速搜索,使用文件的MD5值作为map的键值实现重复文件的比较。
[功能] 快速搜索和删除Mac电脑中的重复文件,可自定义搜索范围和文件大小等。
[团队] 与 1 位项目经理,1 位测试,1 位美工。
[贡献] 主要负责系统设计和研发等工作。
[效果] 成功上线,并因此获公司年度最佳员工。
-
Similar Image Detector
AppStore
-
技术栈:Cocoa+GCD+MD5+DCT(离散余弦变换)
-
[实现] 基于GCD的多线程快速搜索,两种相似比较算法:MD5+DCT和直方图比较。
[功能] 快速搜索和匹配Mac电脑中的相似图片,并提供删除和自定义搜索等功能。
[团队] 与 1 位项目经理,1 位测试,1 位美工。
[贡献] 主要负责系统设计和研发等工作。
[效果] 成功上线,并因此获公司年度最佳员工。
-
联通沃阅读iOS客户端[1.0版]
AppStore
-
技术栈:HTML+EPUB+iOS
-
[实现] 基于iOS的原生交互界面,快速解析EPUB格式模块。
[功能] 支持EPUB和TXT格式的电子书,支持滑动翻页和3D翻页。
[团队] 与 1 位项目经理,1 位测试,1 位美工,以及联通后端开发团队。
[贡献] 主要负责iOS客户端开发和EPUB格式解析等工作。
[效果] 成功上线1.0版本,并获得外包项目奖金。
-
紫蝶网络科技有限公司-macOS&iOS&音视频工程师
-
Stream to Chromecast
AppStore
-
技术栈:Cocoa+GoogleCast+Protobuf+mDNS+M3U8+FFmpeg
-
[实现] nDNS协议用于局域网的设备搜索,FFmpeg用于文件格式转换,GoogleCast协议用于连接设备和投送。
[功能] 将Mac上的音视频文件投送到Chromecast设备进行播放,支持常规的音视频格式和播放控制操作。
[团队] 与 1 位项目经理,1 位测试,1 位美工。
[贡献] 主要负责系统设计和研发等工作。
[效果] 成功上线,并一度登上App Store同类产品排行的Top10。
-
-
技术栈:Cocoa+UPbP+SSDP+M3U8+FFmpeg
-
[实现] SSDP协议用搜索局域网LG电视,FFmpeg用于文件格式转换,UPnP协议用于连接设备和投送。
[功能] 将Mac上的音视频文件投送到局域网内的LG电视上,支持常规的音视频格式,支持常规的播放控制操作。
[团队] 与 1 位项目经理,1 位测试,1 位美工。
[贡献] 主要负责系统设计和研发等工作。
[效果] 成功上线,并一度登上App Store同类产品排行的Top5。
-
XboxOne Steamer
未上线
-
技术栈:Swift+SmartGlass+Video/AudioToolBox+Metal
-
[实现] SmartGlass协议用于搜索、连接并从XboxOne拉流,Video/AudioToolBox用于音视频的硬解码,Metal用于视频的GPU渲染。
[功能] 通过iPhone无线连接和操作局域网内的Xbox设备,如低延时玩Xbox游戏,内嵌虚拟手柄,也支持外联手柄。
[团队] 与 1 位项目经理,1 位测试,1 位美工。
[贡献] 主要负责系统设计和研发等工作。
[效果] 完成并通过测试,但因Xbox版权原因等未能成功上线。
个人项目
-
-
技术栈:iOS+Swift+HTML5
-
[实现] 基于Swift和Objective-C的混编模式实现iOS原生交互界面。
[功能] 提供关于糖尿病的资讯、社区交互和商品购买等功能。
[团队] 与 1 位项目经理,3 位iOS开发,2 位测试,1 位美工,以及后端开发团队。
[贡献] 主要负责iOS界面开发、上线和后期维护等工作。
[效果] 成功上线,获甲方认可,以及用户广泛好评。
-
-
技术栈:WebRTC+mediasoup+Objective-C+CMake+VSCode
-
[实现] 一个基于libwebrtc和libmeidasoupclient的实现流媒体客户端,内嵌基于SDL库播放器。
[功能] 可将WebRTC流推送到mediasoup服务器,也可从meidasoup服务器中拉流进行本地播放。
[效果] 实现WebRTC和mediasoup之间的互联,Demo可正常编译和运行。
-
-
技术栈:FFmpeg+Swift
-
[实现] 一个Swift版本的编解码库,底层实基于对FFmpeg库的封装。
[功能] 提供Swift版的编解码API,支持多种音视频格式。
[效果] 可正常完成编码,且简单易用。
-
-
技术栈:WebRTC+GTest+CMake+VSCode+C++
-
[实现] 一个轻量且可调试的WebRTC库,采用C++实现,目前已完成H264视频发送和GoogCc码率控制模块,同时支持MbedTLS和OpenSSL。
[功能] 支持主流的Web浏览器,支持本地H264文件传输,支持DataChannel通信,支持基于GCC的发送码率监测。
[效果] 可正常运行和实时调试,且Release模式的编译大小不超10MB。
开源贡献
-
libdatachannel
Github
- 简介:libdatachannel是一个独立实现的WebRTC数据通道和媒体传输库,且可以与Web浏览器直接通信。
- 特点:轻巧且简单,且对外部依赖少,包括SRTP/DTLS/ICE等底层通信协议的实现,适用于WebRTC技术栈学习。
-
- 简介:mediasoup是SFU模式的媒体服务器,与其他现有的SFU实现不同,在服务器端是一个Node.js模块,因此可以集成到其他的应用程序中。内部由两个独立的组件组成,分别是提供ES6的API接口层和处理流媒体的C/C++子进程,二者基于进程间通信进行通信。
- 特点:小而美,功能强大,结构清晰,支持目前主流的WebRTC和ORTC浏览器,支持simulcast、SVC,以及多会议室和多参与者。
- 官网:mediasoup
-
smartglass-documentation
Github
- 简介:smartglass-documentation一个介绍XboxOne SmartGlass协议的文档库。
- 特点:详解且全面地介绍了SmartGlass协议的结构设计和实现细节,图文并茂。
- 官网:
smartglass-documentation
自我评价/期望
- 终身学习者:相信大脑的塑造是源于刻意练习而非所谓的天赋,忽略学科的划分,在业余时间尝试一切自己感兴趣且即便是无意义的事情,坚持阅读,坚持写博客,看似最笨的学习办法--笔记和记忆力--也许是最高效的。
- 专注的力量:相信制定合理的目标和科学的计划比坚持本身更重要。比如,我刚接触健身时制定的跑步计划100天,每天风雨无阻地跑5公里或30分钟。这项计划最终帮助我拿到了4枚马拉松的奖牌,并且在7年后的今天让健身成了我的日常。
- 兴趣的培养:认为兴趣并非是天生的,在此之前会有一段漫长的沉默期,对于成年人而言更是如此。我对计算机和编程的兴趣就是如此:从大学时期对计算机的一无所知,到毕业后对未来发展的迷茫,再到渐渐发现了计算机世界的美妙,最后决定将其作为终身事业,这一过程我用了近10年时间。
- 程序的世界:认为程序的世界就是对现实世界不断地做离散处理,再使用基于大自然规律的抽象模型进行修正,使之无限地接近于真实世界,即程序的世界里蕴藏着大自然的真理。如,H264压缩算法背后的傅里叶变换和欧拉公式等,WebRTC中的卡尔曼滤波,贝叶斯估计,最小二乘法,时序模型,高斯分布等。
- 人生的态度:认为人与人之间的差异远比想象中的要大,人性也远比想象中复杂,每个人都有自己的局限性,需秉着求同存异的理念相处。告诉自己既不能以己度人,也不以人观己,因为道德只能律己不能律人。告诉自己专注于当下,坚持自己的梦想和本心。我追求的人生态度正如罗曼·罗兰所说:“世界上只有一种真正的英雄主义,就是认清了生活的真相后还依然热爱它。”