年纪过三十就会发现时间过的很快,距离上次更新博客已经一年了。二〇二一年工作上依旧很忙碌,工作上的付出有觉得值的地方,也有觉得不值的地方,都看得淡然了。
二〇二一年在客户端音视频方向上展示了 Android/iOS/Windows/Mac/Web 平台上的全栈开发能力,获得了部门负责人的认可。
在即将到来的二〇二二年中,朝着自己制定的生活目标继续努力。面朝大海,春暖花开。
年纪过三十就会发现时间过的很快,距离上次更新博客已经一年了。二〇二一年工作上依旧很忙碌,工作上的付出有觉得值的地方,也有觉得不值的地方,都看得淡然了。
二〇二一年在客户端音视频方向上展示了 Android/iOS/Windows/Mac/Web 平台上的全栈开发能力,获得了部门负责人的认可。
在即将到来的二〇二二年中,朝着自己制定的生活目标继续努力。面朝大海,春暖花开。
还有十天就进入2021年了,时间过的真快,写篇随笔回顾下过去。
来上海工作一年半了,工作上一直非常忙。做了 macOS,iOS,C++ Windows/macOS,.Node, .TS,Electron 上 SDK/Demo 开发,拿过公司的 Spot Bonus 工作成绩突出奖。但是身体严重透支,很累,最近一周去医院检查了2次,医生建议我休息一段时间。从明天开始就进入休假模式了,一直休息到元旦节后。
Google 的视频会议应用:Google Meet
我在 Mac 设备上使用过 Google Meet,其音视频质量和应用交互的体验都很不错,Google Meet 可以作为视频会议类产品的参考了。
以往文章中引用的 WebRTC 开发指南主页的文档无法访问了,查了一下,原因是以前的网址前缀由 https://webrtc.org/ 变更为 https://webrtc.github.io/webrtc-org/ 了,导致之前的文章中的链接都失效了。之前文章中的链接,比如 https://webrtc.org/native-code/ios/ 出现 404 错误。如果要想继续访问,现在就需要使用 https://webrtc.github.io/webrtc-org/native-code/ios/。
链接的域名由 webrtc.org
变为 webrtc.github.io
了,webrtc.org
变成了一个纯粹的 WebRTC 产品介绍的主页了,说明 Google 对 WebRTC 产品更加重视了,会将其作为一个产品来重点推广应用。
很久没更新文章了,一个字“忙”。忙碌起来,满脑子都是想:
这个过程持续了一年,只能说有些许收获,谈不上有欢喜之感,更多的是身体和精神上的疲惫。
我是如何走上 Mac 应用开发这条路的呢?答案是项目需要。
在 WebRTC 开发(五)编译与运行 Mac 工程 一文中,介绍了如何运行 Mac 工程,可以参考其流程,来运行 iOS 工程,将 WebRTC 应用安装到 iOS 设备上。
编译 WebRTC 的 iOS 工程
进入 WebRTC 源码目录
1 | cd /Users/suntongmian/Documents/workplace |
修改 iOS 应用的 Info.plist 文件
为什么要修改 Info.plist 文件?原因是运行 iOS 应用,应用的 bundle id 和 iOS 证书要匹配。
编辑 examples/objc/AppRTCMobile/ios/Info.plist
1 | vi examples/objc/AppRTCMobile/ios/Info.plist |
根据 iOS 证书来指定一个可用的 bundle id,替换下面的 com.google.AppRTCMobile
1 | <key>CFBundleIdentifier</key> |
改为
1 | <key>CFBundleIdentifier</key> |
做音视频相关的产品,不可避免的要 dump 一些音视频数据用来分析音视频处理逻辑的正确性。FFmpeg 工具会经常用到,比如用 ffplay 播放视频。今天在分析一段视频数据时,想用 ffplay 来播放视频看看数据的正确性,结果在执行命令后遇到了 “zsh: no matches found: 1920*1024” 报错,导致无法使用 ffplay。
在给出解决方案前,先描述下问题是如何产生的。
在 Mac 电脑的终端下执行命令:
1 | ffplay -f rawvideo -pixel_format yuv420p -video_size 1920*1024 -framerate 15 dump-1920x1024.yuv |
执行后,终端显示结果为:zsh: no matches found: 1920*1024。从这个报错信息可以看出,“*” 这个符号没有被支持。
本文基于 WebRTC M76 来分析下 Mac 端的音频采集和渲染逻辑。
代码位置
代码位置:webrtc/src/modules/audio_device/mac
1 | audio_device_mac.h |
前文 WebRTC 开发(六)摄像头采集与视频渲染分析 提到了 WebRTC 视频渲染的大概流程,但没有具体分析每个实现文件的功能,本文会深入到具体的实现文件。
渲染的代码位置
代码位置:webrtc/src/sdk/objc/components/renderer
1 | # opengl |