用 rbenv 来安装ruby
参考: rbenv 1234567891011# Install Homebrew/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"# Install rbenv and ruby-buildbrew install rbenv# Set up rbenv integration with your shellrbenv init# Check your installationcurl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash 配置 .zshrc 12# rbenveval "$(rbenv init - zsh)" Restart your terminal to apply your changes. Next, you can install the Ruby version...
ios keychain 总结
Keychain 是什么一个加密的数据库, 可以用来存储小的用户数据, 包括 kSecClassGenericPassword:通用密码(可以用来存自定义数据) kSecClassInternetPassword:互联网密码 kSecClassCertificate:证书 kSecClassKey:秘钥 kSecClassIdentity:证书+秘钥 Figure 1 Securing the user’s secrets in a keychain 打开 mac 系统的 keychain 观察一下, 发现系统有多个keychain,每个keychain都有上图对应的项目 如何管理数据,增删查改Figure 1 Putting data and attributes into a keychain keychain 将要存储的数据封装为 SecKeychainItemRef,通过存取 SecKeychainItem 来达到对数据的管理。 SecKeychainItemRef 包含 data, CFData, 要存取的数据 attributes, 该条目的属性,存取权限,查...
命令行重启iPhone
参考: Any way to reboot a iDevice that is connected to a USB port via terminal (Mac terminal)? 安装libimobiledevice 12brew install libimobiledevice 使用 1idevicediagnostics restart
Xcode 配置 clang-format 格式化 C++代码
在命令行,通过clang-format工具,可以对代码进行格式化。但 clang-fromat 只能在终端中使用,有没有什么办法可以让它在Xcode中也可以使用呢,这样就很方便的对当前文档进行格式化了。 答案是: 借助 macOS 自带的 Automator 工具。 clang-format 安装1brew install clang-format 添加 Automator 服务打开 Automator 选择 “Quick Action”。 左侧 Library 中搜索 “Run Shell Script” 并拖动到右侧。在脚本编辑框中输入以下内容: 12source ~/.zshrcclang-format 同时记得勾选上 “Output replaces selected text”,然后保存并输入保存的名称,比如 clang-format。 至此一个服务便已添加好。 Automator 在磁盘上的位置The location of the user created services is under: 1~/Library/Services/ other locat...
cmake Importing and Exporting Guide
参考:https://cmake.org/cmake/help/latest/guide/importing-exporting/index.html ImportingIMPORTED targets 将cmake工程外部的库,可执行文件引入到当前的cmake工程中,被引入的内容会关联到一个cmake 中一个逻辑上的target。 创建方式,调用add_executable(),add_library()命令创建target, 但是要添加IMPORTED参数。 这个IMPORTED target不产生任何构建文件,因为他们引入的都是现成的库或者可执行文件。 一旦IMPORTED target 被创建好了,就可以像工程中的其他target一样被引用了。 通过这种方式,就可以方便,灵活引用外部可执行文件和库了。 Importing Executables使用磁盘上的可执行文件。 12345add_executable(myexe IMPORTED)set_property(TARGET myexe PROPERTY IMPORTED_LOCATION &q...
cmake add_custom_command
目的: 添加自定义的构建规则到生成的构建系统中。 有两种用法: 使用外部命令来产生一个输出, 例如生成文件 监听一个target的构建事件,在target构建前或者构建后,执行命令 Examples: Generating Files添加命令,执行后生成源文件 1234567add_custom_command( OUTPUT out.c COMMAND someTool -i ${CMAKE_CURRENT_SOURCE_DIR}/in.txt -o out.c DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/in.txt VERBATIM)add_library(myLib out.c) 通过生成器表达式,为每个config指定不同的输出 12345678add_custom_command( OUTPUT "out-$<CONFIG>.c" COMMAND someTool -i ${CMAKE_CURRENT_SO...
HLS 介绍,M3U8 格式分析
HLS 是什么维基百科的介绍: HTTP Live Streaming,缩写为HLS,是由苹果公司提出基于HTTP的流媒体网络传输协议。是苹果公司QuickTime X和iPhone软件系统的一部分。它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的扩充 M3U (m3u8) 播放列表文件,用于寻找可用的媒体流。 HLS只请求基本的HTTP报文,与实时传输协议(RTP)不同,HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器。它也很容易使用内容分发网络来传输媒体流。 苹果公司把HLS协议作为一个互联网草案(逐步提交),在第一阶段中已作为一个非正式的标准提交到IETF。2017年8月,RFC 8216发布,描述了HLS协议第7版的定义。 苹果自己的介绍: Send live and on‐demand audio and video to iPhone, iPad, Mac, ...
MPEG-TS 格式分析
参考:MPEG-TS 格式解析 An introduction to MPEG-TS 背景介绍MPEG-TS一种标准数据容器格式,传输与存储音视频、节目与系统信息协议数据,应用于数字广播系统,譬如DVB,ATSC与IPTV。传输流在MPEG-2第1部分系统中规定,正式称为ISO / IEC标准13818-1或ITU-T建议书[1]。 MPEG2/DVB是一种多媒体传输、复用技术,在数字电视广播中可提供数百个节目频道。复用的含义是,可以同时传输多层节目。 注意,DVB全称为Digital Video Broadcasting,包括不同的系统,如卫星数字电视广播系统,有线数字电视广播系统,地面开路数字电视广播系统,交互式数字电视广播系统以及数字电视加扰系统。DVB系统标准是一种全球数字电视技术的标准。如何定义广播中的比特流语法与句法,以实现在比特流中复用数字音频与视频,欧洲的DVB采用数字视频压缩MPEG-2标准,该标准是定义比特流的语法与句法的一个ISO/IEC标准,即13818-1标准。DVB系统的核心技术是采用MPEG-2技术进行视频、音频的编码,...
fdk aac
github 地址: https://github.com/mstorsjo/fdk-aac fdk-aac 提供了跨平台的编解码 aac 的功能。 编译fdk-aac提供了CMake构建静态库和动态库。 1234567cd fdk-aacmkidr build #BUILD_SHARED_LIBS 控制构建静态库还是动态库cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFFcmake --build --config Release# installcmake --install <dir> --prefix <prefix> 文档在documentation目录下,有两个pdf文件,分别对应编码和解码相关的文档。 12aacDecoder.pdfaacEncoder.pdf demofdk-aac 提供一个编码的示例aac-enc.c, 主要介绍如何实现aac 编码功能该demo 可以通过cmake来调试。首先在cmake 中启用该程序,给cmake 传递参数-DBUILD_PROGR...
aac adts 格式分析
AAC音频格式在MPEG-2(ISO-13318-7 2003)中有定义。AAC后来又被采用到MPEG-4标准中。 AAC 有两种格式 ADIF(Audio Data Interchange Forma) 和 ADTS(Audio Data Transport Stream) ADIF: ADIF只有一个统一的头,所以必须得到所有的数据后解码 ADTS: 每一帧都有头信息, 可以在任意帧解码 ADIFadif头 + 对齐字节 + 数据块 12345adif_sequence() { adif_header(); byte_alignment(); raw_data_stream();} ADTS数据流是一帧一帧的adts,可以在任何位置解码。 123456adts_sequence() { while (nextbits() == syncword) { adts_frame(); } } adts_frame123456789101112131415adts_f...
