网站资料 · 技术情报 · 相似站点

allluckly.cn 暂未发现付费内容

分类: 其他

自学iOS开发进阶首选博客,分享高质量的iOS开发技术,开发所遇到的疑难杂症,在此都一览无余,搜寻优秀的第三方开源框架,分享给大家,iOS开发技术博客,随Bison一起走进iOS开发的大道畅游翱翔。

访问网站

更新时间:2026-09-27 07:42 语言:未知(默认) 网站访问:正常

站内浏览 7 次 访问跳转 6 次
Bison的技术博客 – iOS开发 首页完整截图
编辑评测

网站深度测评

Bison的技术博客是什么网站?

Bison的技术博客(allluckly.cn)是一个面向 iOS 开发者的中文技术博客,定位在“自学 iOS 开发进阶”,内容以 iOS 开发技术、疑难问题和第三方开源框架分享为主。

内容与用途

  • 覆盖 iOS 开发,关键词包括 Swift、OC、iOS 开发技巧、开源框架。
  • 文章偏实战记录,例如 FFmpeg 相关主题:获取摄像头麦克风、推流器封装、H.264 解码。
  • 适合谁:正在自学 iOS、想找具体问题解法或开源框架参考的开发者。
  • 什么场景用:遇到编译、音视频、推流解码等具体问题时按主题检索。

和同类站点比

它更像个人实战笔记,而不是系统课程或问答社区。想系统学基础可以配合 Apple Developer 官方文档;遇到报错想找多人讨论,可以配合 Stack Overflow。Bison 博客的侧重点是作者自己在 iOS、FFmpeg 等方向踩坑后的整理。

下一步

先看文章列表里是否有你当前的技术栈(如 FFmpeg、Swift),有就直接按主题读;没有就把它当作补充参考,不必当作完整教程。

在iOS上如何用FFmpeg获取摄像头和麦克风?

在 iOS 上用 FFmpeg 获取摄像头和麦克风,核心是先把音视频采集交给 AVFoundation,再把采集到的原始帧通过 FFmpeg 的 AVFormatContext / AVCodecContext 封装或编码。Bison的技术博客 里有一篇《FFmpeg-iOS获取摄像头麦克风》,讲的就是这个流程,作者提到“代码很少”,后面再补充 iOS 端的采集细节。

具体做法

  • 视频:用 AVCaptureSession 配置 AVCaptureDevice(前置/后置摄像头),通过 AVCaptureVideoDataOutput 拿到 CMSampleBuffer,再转成 AVFrame 喂给 FFmpeg。
  • 音频:用 AVCaptureAudioDataOutput 或 AVAudioEngine 采集麦克风,同样把 PCM 数据填进 AVFrame。
  • FFmpeg 侧:初始化 AVFormatContext,用 avformat_alloc_output_context2 创建输出上下文,注册对应的编码器(如 H.264/AAC),把 AVFrame 送去编码或直接封装。

适合谁

  • 正在做 iOS 推流、直播、录制的开发者。
  • 已经会 AVFoundation 基础采集,但想把数据接入 FFmpeg 做编码/推流的人。
  • 跟着 Bison 博客里 FFmpeg-iOS 系列(获取摄像头麦克风、推流器封装、H.264 解码)一起看,能串起采集到推流的完整链路。

下一步

先跑通“采集 → 拿到 CMSampleBuffer → 转 AVFrame”这一步,再对照博客里的推流器封装把编码和输出接上。如果只是本地录制,也可以先用 AVAssetWriter 验证采集是否正常,再换 FFmpeg 做更灵活的封装。

FFmpeg-iOS推流器怎么进行简单封装?

该站把 FFmpeg-iOS 推流封装拆成三篇递进内容:先取摄像头/麦克风,再做推流器简单封装,最后讲 H.264 解码。封装思路是围绕“采集 → 编码 → 推流”分层,把 FFmpeg 的 C 接口包成 Objective-C/Swift 可调用的类。

典型使用场景

  • 你在做 iOS 直播或录屏推流,需要自己控制采集和编码参数,而不是直接用现成 SDK。
  • 你已经能在 iOS 上编译出 FFmpeg 库,但不想在业务代码里到处写 av_register_all、avformat_alloc_output_context2 这类调用。
  • 你想先跑通一个最小推流链路,再逐步加美颜、水印、重连。

封装可以怎么分层

  • 采集层:单独一个类负责 AVCaptureSession,输出音视频原始数据。
  • 编码层:把 H.264/AAC 编码参数、时间戳、关键帧判断收在一起。
  • 推流层:封装 RTMP 连接、av_interleaved_write_frame、断线重连和错误码。
  • 对外只暴露 start/stop/push 这类方法,FFmpeg 结构体留在实现文件里。

选择条件

  • 如果你的目标是快速上线,优先评估成熟推流 SDK;自封装更适合需要深度定制、可控成本或学习目的。
  • 如果只做本地文件封装,不必引入 RTMP 推流封装,直接用 avformat 写文件即可。
  • 参考该站时注意文章时间较早(2017 年),FFmpeg API 与新版有差异,接口名和注册函数需要按当前版本调整。

下一步动作 先看该站“FFmpeg-iOS获取摄像头麦克风”把采集跑通,再对照“FFmpeg-iOS推流器的简单封装”看它的类划分,最后用“FFmpeg-iOS的H.264解码”理解解码侧,形成完整闭环。若想补充 FFmpeg 通用用法,可参考 FFmpeg 官方文档;iOS 采集细节可查 Apple Developer。

iOS中FFmpeg的H.264解码如何实现?

该网站有直接相关的实操文章:Bison的技术博客 的「FFmpeg-iOS的H.264解码」,同系列还有「FFmpeg-iOS获取摄像头麦克风」和「FFmpeg-iOS推流器的简单封装」。这三篇连起来正好覆盖采集→解码→推流的完整链路。

在这套资料里能拿到什么

  • 主题:iOS 平台上用 FFmpeg 做 H.264 解码,属于该博客 FFmpeg 分类下的内容。
  • 前置条件:作者先写了「Mac编译ffmpeg获取FFmpeg-iOS」,说明解码是建立在自行编译出的 FFmpeg-iOS 库之上的。
  • 配套内容:采集(摄像头/麦克风)和推流器封装,说明解码不是孤立环节,而是推流方案的一环。

适合谁、什么情况下用

如果你正在做 iOS 端的 RTMP/RTSP 推流或播放器,需要把 H.264 裸流还原成图像,这类文章属于“边做边查”的参考:先按编译篇把库跑起来,再对照解码篇的代码结构接入自己的工程。

具体建议

  1. 先看编译篇,确认 FFmpeg-iOS 的静态库/头文件在 Xcode 工程里链接正常,否则解码代码无法编译。
  2. 再看 H.264 解码篇,重点看它如何组织 AVCodecContext、AVPacket 到 AVFrame 的流程。
  3. 最后对照推流器封装篇,理解解码后的帧如何进入渲染或编码环节。

同类参考

  • 官方文档 FFmpeg:查 avcodec_send_packet / avcodec_receive_frame 等 API 的权威定义,博客文章通常不会覆盖所有参数分支。
  • GitHub:搜 iOS + FFmpeg 的开源播放器或推流 demo,用可运行工程对照博客里的片段代码。

Mac上如何编译适用于iOS的FFmpeg?

Bison的技术博客里有专门讲 Mac 编译 FFmpeg 获取 FFmpeg-iOS 的文章,适合按它的步骤在 Mac 上编译出适用于 iOS 的库。

具体能参考什么

该博客的 iOS 开发分类下,FFmpeg 相关文章包括:

  • Mac编译ffmpeg获取FFmpeg-iOS
  • FFmpeg-iOS获取摄像头麦克风
  • FFmpeg-iOS的H.264解码
  • FFmpeg-iOS推流器的简单封装

如果你要的是“编译出 iOS 可用的 FFmpeg 库”,优先看第一篇;后续几篇适合编译完成后继续做采集、解码和推流。

适合谁在什么情况下用

  • 正在自学 iOS 开发,想跑通 FFmpeg 在 iOS 上的编译流程。
  • 需要做音视频采集、H.264 解码或推流,准备先拿到 FFmpeg-iOS。
  • 已经会 OC/Swift 基础,但没在 Mac 上编译过 FFmpeg。

下一步

打开 Bison的技术博客,在 FFmpeg 分类或站内搜索“Mac编译ffmpeg获取FFmpeg-iOS”,按文章步骤操作。编译成功后,再接着看它的摄像头麦克风、H.264 解码和推流封装文章。

iOS开发进阶应该学习哪些内容?

iOS开发进阶,核心是从“会用 UIKit 搭界面”转向“理解底层机制、能处理音视频/性能/架构问题”。Bison的技术博客的内容也偏这个方向:除常规 iOS 技术外,站内就有一组 FFmpeg-iOS 文章,涉及获取摄像头麦克风、H.264 解码和推流器封装。

建议覆盖的学习内容

  • 语言与运行时:Swift 进阶(泛型、协议、并发)、Objective-C 运行时、内存管理(ARC、循环引用、weak/unowned)。
  • 框架原理:UIKit 与 SwiftUI 的渲染流程、响应链、RunLoop、多线程(GCD、Operation、Swift Concurrency)。
  • 性能与稳定性:启动优化、卡顿与掉帧分析、内存泄漏排查、崩溃符号化、Instruments 使用。
  • 架构与工程化:MVVM、分层与模块化、依赖注入、组件化、CI/CD、单元测试与 UI 测试。
  • 专项方向:音视频、图形渲染、网络底层、安全加固等,按目标岗位选一到两个深入。

什么情况下优先学哪块

你的目标 优先补
进中大厂做业务开发 运行时、内存、性能优化、架构
做音视频/直播 FFmpeg、编解码、推流、Metal/OpenGL
做基础架构/组件化 模块化、依赖管理、编译构建、CI

怎么用这类博客

以 Bison的技术博客 为例,它的 FFmpeg-iOS 系列适合已有 iOS 基础、想切入音视频的人:先跟着做“获取摄像头麦克风”,再理解“H.264 解码”,最后看“推流器封装”,形成一条从采集到传输的链路。同类可搭配 Apple Developer 官方文档打底,GitHub 上找对应开源项目对照源码。

下一步动作:先选一个专项(如音视频),用两周把采集、解码、推流各跑通一个最小 Demo,再回头补运行时和性能这些通用底层。

Swift 开发教程:从零开始学 iOS 开发的入门路径

想从零开始学 Swift,最有效的路径是:先确认你有 Mac 和 Xcode,然后用 Playground 把基础语法练熟,再动手做一个能跑起来的小界面。Swift 是 Apple 在 2014 年推出的编程语言,iOS 开发是它最主要的应用场景,但两者不是一回事——Swift 是语言,iOS 开发是用这门语言配合 Apple 的框架(UIKit 或 SwiftUI)做 App。本教程按这个顺序展开,每一步都给出可验证的结果。

开始之前:你需要什么

  • 一台 Mac:Xcode 只能在 macOS 上运行,这是硬性前提。
  • Xcode:从 Mac App Store 免费下载,安装后自带 Swift 编译器和 iOS 模拟器。
  • 不需要付费账号:学习和在模拟器里运行不需要 Apple Developer 付费会员,只有真机调试和上架才涉及账号问题。

装好 Xcode 后,打开它,你会看到欢迎界面。如果只是想快速试语法,不用建工程,直接选 Get started with a playground。

第一步:用 Playground 练基础语法

Playground 是 Xcode 里的交互式练习环境,左边写代码,右边立刻显示结果,非常适合入门阶段反复试错。

变量与类型

var name = "Bison"      // 可变变量
let pi = 3.14159        // 常量,赋值后不能改
var count: Int = 10     // 显式声明类型

Swift 是强类型语言,但支持类型推断。let 优先于 var——能不变的就别用变量,这是 Swift 社区的普遍习惯。

可选值(Optional)

这是 Swift 最容易卡住新手的点。可选值表示“这里可能有值,也可能是 nil”。

var nickname: String? = nil
if let nickname = nickname {
    print("昵称是 \(nickname)")
} else {
    print("没有昵称")
}

if let 叫可选绑定,是解包可选值最常用的方式。看到编译器报 Value of optional type 'X?' must be unwrapped,基本就是忘了处理可选值。

控制流与函数

for i in 1...5 {
    print(i)
}

func greet(person: String) -> String {
    return "Hello, \(person)"
}

1...5 是闭区间,1..<5 是左闭右开。函数用 func 声明,参数和返回值都要标类型。

闭包

闭包是可以传递的代码块,语法比函数紧凑:

let numbers = [3, 1, 2]
let sorted = numbers.sorted { $0 < $1 }

$0、$1 是闭包的简写参数名。初学阶段先会读、会改,不必强求一次写对。

第二步:理解类、结构体与协议

Swift 的面向对象和协议编程是它区别于很多语言的地方。

概念 关键字 特点
类 class 引用类型,支持继承
结构体 struct 值类型,赋值时复制
枚举 enum 定义一组相关值,可带关联值
协议 protocol 定义“能做什么”,不关心“怎么实现”
扩展 extension 给已有类型加方法,不用改原代码

Swift 标准库里的 String、Array、Dictionary 都是结构体。Apple 官方建议:默认用结构体,需要继承或引用语义时才用类。

协议是 Swift 的核心抽象方式。一个类型可以遵循多个协议,这比单继承灵活得多:

protocol Greetable {
    func greet() -> String
}

struct Person: Greetable {
    var name: String
    func greet() -> String {
        return "Hi, I'm \(name)"
    }
}

第三步:创建第一个能跑的 App

语法练得差不多后,建一个真实工程,把知识串起来。

  1. 打开 Xcode,选 Create New Project。
  2. 选 iOS → App,点 Next。
  3. 填 Product Name(比如 MyFirstApp),Interface 选 SwiftUI(新手推荐,代码量少)或 Storyboard,Language 选 Swift。
  4. 选一个保存位置,点 Create。

工程建好后,按左上角的运行按钮(或 Cmd + R),模拟器会启动并显示你的 App。能跑起来、能看到界面,就是这一步的验证标准。

做一个最简单的交互

如果选了 SwiftUI,打开 ContentView.swift,把内容改成:

import SwiftUI

struct ContentView: View {
    @State private var count = 0

    var body: some View {
        VStack(spacing: 20) {
            Text("点击次数:\(count)")
            Button("点我") {
                count += 1
            }
        }
    }
}

@State 让变量变化时界面自动刷新。再按 Cmd + R,点按钮,数字应该会增加。这一步把变量、函数、界面三者连起来了。

常见卡点与排查方法

  • 编译报错看不懂:先看报错的行号和类型,Swift 的报错通常指向具体类型不匹配。把报错信息整段复制去搜索,往往能直接找到答案。
  • 模拟器起不来:检查 Xcode 是否装完(首次安装会下载额外组件),或在 Xcode → Settings → Platforms 里确认 iOS 模拟器已安装。
  • 可选值相关报错:见前面的 if let 部分,这是新手最高频的错误来源。
  • 不知道某个 API 怎么用:在 Xcode 里按住 Option 键点击类型或方法名,会弹出文档;也可以查 Apple 官方文档。

关于参考资料

Bison 的技术博客(allluckly.cn)是一个 iOS 开发技术博客,内容涵盖 iOS 开发技巧、第三方开源框架分享,以及 FFmpeg 在 iOS 上的实践(如获取摄像头麦克风、H.264 解码、推流器封装等)。它的定位偏向进阶和疑难问题,适合在掌握基础语法、能独立建工程之后,用来查具体技术点的实现思路。入门阶段仍应以 Apple 官方文档和系统性的 Swift 教程为主。

接下来学什么

基础语法和第一个 App 跑通后,可以按这个顺序推进:

  1. SwiftUI 布局:VStack、HStack、List、NavigationStack。
  2. 数据流:@State、@Binding、@Observable。
  3. 网络请求:URLSession 配合 async/await。
  4. 数据持久化:UserDefaults、SwiftData 或 Core Data。
  5. 真机调试与上架:这时才需要 Apple Developer 账号。

每一步都建议配一个能运行的小项目,而不是只看不写。Swift 的语法细节很多,只有实际敲过、报过错、改对了,才算真正掌握。

Bison 的技术博客是什么?如何用它学习 iOS 开发

Bison 的技术博客(allluckly.cn)是一个面向 iOS 开发进阶的中文技术博客,定位是分享 iOS 开发技术、疑难问题和第三方开源框架。如果你已经掌握 Swift 或 Objective-C 基础语法,想找一些偏实战、偏具体问题的中文文章来补充学习,它适合作为辅助阅读来源;如果你需要的是系统化课程或官方文档式的完整教程,它不能替代教材,更适合当作遇到具体问题时的检索对象。

博客的定位与内容方向

从站点自身的描述看,它强调三件事:

  • 进阶向:面向“自学 iOS 开发进阶”的读者,而不是零基础入门。
  • 疑难杂症:把开发中遇到的问题整理成文章,属于经验型内容。
  • 第三方框架:会搜寻并分享优秀的开源框架。

关键词覆盖 Swift 开发教程、iOS 开发技巧、OC 开发、iOS 软件开发等,说明内容同时涉及 Swift 和 Objective-C 两条技术线,而不是只押注某一种语言。

典型内容长什么样

从页面可见的文章标题和分类可以判断内容颗粒度。以 FFmpeg 方向为例,站内出现了这样一组文章:

文章标题 主题
FFmpeg-iOS 获取摄像头麦克风 在 iOS 上调用 FFmpeg 采集音视频
FFmpeg-iOS 推流器的简单封装 对推流逻辑做封装
FFmpeg-iOS 的 H.264 解码 视频解码
Mac 编译 ffmpeg 获取 FFmpeg-iOS 编译与环境准备

这组文章有明显的递进关系:先解决“怎么把 FFmpeg 编译进 iOS 项目”,再讲“怎么拿到摄像头和麦克风数据”,然后是“怎么解码 H.264”,最后是“怎么封装成推流器”。文章带有分类标签(如 FFmpeg)和发布时间(如 2017 年 7 月),说明它按主题归档、按时间累积。

这类内容的共同特征是:围绕一个具体技术任务展开,代码量不大但指向明确。比如“获取摄像头麦克风”那篇,站点摘要里直接写了“代码很少”,意味着它更适合作为动手参考,而不是理论讲解。

如何找到并浏览它

  1. 直接访问站点:在浏览器打开 allluckly.cn,首页即博客主体。
  2. 看导航与分类:页面有 MENU 入口,文章按 FFmpeg 等分类聚合,点进分类可以看到同一主题下的全部文章。
  3. 按主题筛选:如果你在学音视频方向,就从 FFmpeg 分类切入;如果关注语言本身,找 Swift / OC 相关标签。
  4. 注意更新节奏:从可见文章的日期看,内容不是高频日更型,更像阶段性整理。所以把它当作“按需查阅的存档”比当作“追更的资讯源”更合适。

用它学习 iOS 开发的具体方法

技术博客的价值不在“读完”,而在“用上”。可以按下面的流程走:

1. 先定位问题,再找文章

不要从首页顺序刷。先明确你当前卡在哪,比如“我想在 iOS 项目里接入 FFmpeg 做推流”,再去找对应文章。博客的强项是单点问题,不是知识地图。

2. 复现示例代码

文章里的代码通常是为了说明某个环节,直接复制到项目里往往跑不通。正确做法是:

  • 在自己的工程里新建一个最小验证环境;
  • 按文章步骤逐步接入,每步确认预期结果(比如编译是否通过、能否拿到摄像头帧);
  • 遇到报错时,先判断是环境差异(Xcode 版本、FFmpeg 版本、iOS 系统版本)还是代码本身的问题。

3. 记录踩坑点

博客文章写的是作者当时的成功路径,但你的环境可能不同。把“文章没写但你必须做的步骤”记下来,比如某个依赖的安装方式、某个权限配置,这些才是你真正学到的东西。

4. 顺着分类做主题串联

单篇文章解决单点问题,但一个方向(如音视频)往往需要多篇连起来看。按分类把 FFmpeg 相关文章按“编译 → 采集 → 解码 → 推流”的顺序读一遍,比零散地看更有效。

和其他学习资源怎么搭配

资源类型 适合解决 和 Bison 博客的关系
官方文档(Apple Developer) API 定义、系统机制 博客给实战路径,官方文档给准确语义,两者互补
系统化课程 / 教材 从零建立知识体系 博客不承担这个职责,先有体系再看博客更高效
开源项目源码 完整工程结构 博客常讲某个框架的用法,源码让你看到全貌
同类技术博客 多角度验证同一问题 同一问题看两三个来源,能快速识别哪些是环境特例

一个实用的组合是:用课程或官方文档打底,用 Bison 这类博客补具体场景,用开源项目验证完整实现。

什么时候它帮不上忙

  • 你需要的是从零开始的入门教程;
  • 你想找的是最新版本 API 的权威说明(博客内容有发布时间,可能滞后于当前 SDK);
  • 你需要的是体系化的知识框架,而不是零散问题。

遇到这些情况,回到官方文档或系统课程更合适。博客的定位始终是“进阶路上的问题参考”,把它放在正确的位置,它的价值才能发挥出来。

iOS 技术博客是什么?如何用它学习 iOS 开发

iOS 技术博客是开发者围绕 iOS 开发持续输出文章的站点,内容通常包括 Swift/OC 教程、第三方框架用法、编译与调试问题排查等。它适合已经能写基础代码、需要解决具体问题或补齐知识盲区的人;如果你完全没接触过编程,博客更适合作为辅助资料,而不是唯一教材。以 Bison 的技术博客(allluckly.cn)为例,它的定位就是“自学 iOS 开发进阶首选”,文章覆盖 FFmpeg-iOS 获取摄像头麦克风、推流器封装、H.264 解码等偏实战的主题。

一个 iOS 技术博客通常提供什么

从 Bison 博客的页面结构可以看到两类内容:

  • 系列化的技术专题:例如 FFmpeg-iOS 相关文章按“获取摄像头麦克风 → 推流器封装 → H.264 解码”的顺序展开,属于同一技术栈的连续输出。
  • 问题导向的实战记录:标题直接指向“在 iOS 平台上利用 ffmpeg 获取摄像头和麦克风”这类具体任务,并附有代码和后续补充说明。

这类博客的价值不在“从零讲语法”,而在于把某个具体场景的完整做法写出来,包括踩过的坑。

如何判断一个 iOS 技术博客是否值得长期读

用下面几个可核对的维度筛选,而不是看更新频率或排版:

维度 值得读的信号 需要警惕的信号
主题聚焦 围绕 iOS 开发,如 Swift、OC、音视频、框架源码 什么都写,iOS 只占很小一部分
文章粒度 一篇讲清一个具体任务,有输入、步骤、结果 标题很大但正文只有概念罗列
代码可验证 给出关键代码和运行前提 只有截图或伪代码,无法复现
时效性 标注发布时间,涉及 API 时说明版本 用已废弃 API 却不说明

Bison 博客的文章带有明确日期(如 2017 年 7 月)和分类标签(FFmpeg),阅读时要注意:较早的文章里涉及的 API 或工具链版本可能已经变化,需要对照当前 Xcode 和依赖库版本验证。

从博客学习 iOS 开发的路径

博客不适合当唯一主线,建议按下面的顺序使用:

  1. 入门语法阶段:用系统教程或官方文档学 Swift 基础,博客只用来查某个语法点的实际用法。
  2. 实战项目阶段:遇到具体需求(如“在 iOS 上获取摄像头和麦克风”)时,搜索对应博客文章,照着实现一遍。
  3. 源码与框架阶段:读第三方框架的封装思路,比如推流器如何组织采集、编码、发送流程。
  4. 疑难排查阶段:把博客当问题索引,按关键词定位同类问题的解决记录。

把零散文章整理成自己的知识体系

博客文章是点状的,需要自己连成线:

  • 按技术栈建目录,例如“FFmpeg-iOS”下面收采集、编码、推流、解码四类笔记。
  • 每篇文章读完后记三件事:解决什么问题、关键代码在哪、有什么前提条件。
  • 定期回看,把已经过时的做法标注出来,避免以后照抄旧代码。

博客代码跑不通时的排查思路

这是用博客学习最常见的卡点,按顺序检查:

  1. 环境前提:文章是否说明了 Xcode 版本、iOS 最低版本、依赖库版本?例如 FFmpeg 相关文章通常需要先完成 Mac 上编译 FFmpeg 得到 FFmpeg-iOS 这一步。
  2. 依赖是否装全:缺少静态库或头文件搜索路径,编译会直接失败。
  3. API 是否变化:旧文章里的方法名或参数在新系统上可能已废弃,对照当前官方文档确认。
  4. 权限配置:涉及摄像头、麦克风的代码,需要先在 Info.plist 里声明用途描述,否则运行时会崩溃或拿不到数据。
  5. 代码是否完整:博客常只贴关键片段,缺失的上下文需要自己补全。

如果以上都排除了仍跑不通,把报错信息作为关键词再搜,往往能找到同一问题的其他记录。

结论

iOS 技术博客适合作为“解决具体问题 + 补充实战细节”的资料,而不是入门主线。选博客时看主题是否聚焦、代码是否可复现、是否标注时间;用的时候按“入门语法 → 实战项目 → 框架源码 → 疑难排查”的顺序取用,并把读到的内容整理进自己的目录,才能把零散文章变成可复用的知识。

技术博客是什么?如何找到并有效阅读技术博客

技术博客是开发者围绕具体技术栈持续输出实践记录的站点,内容通常集中在 Web 前端、后端语言、移动开发和工程工具上。它适合想解决某个具体问题、或想跟踪某条技术路线长期变化的人;如果你要的是即时问答或新闻快讯,问答社区和资讯站更合适。以朴人博客(poorren.com)为例,它自 2007 年起持续更新,定位是专注 B/S 应用的技术型博客,覆盖 Web 技术、Web 前端、Java、PHP、JavaScript、HTML、CSS、Android 开发以及互联网、IT、软件、硬件等方向,属于典型的个人长期技术博客形态。

技术博客通常写什么

技术博客的内容范围由作者的技术栈决定,常见几类:

  • 语言与框架:Java、PHP、JavaScript 的语法细节、框架用法、踩坑记录。
  • 前端与规范:HTML、CSS、Web 前端布局、符合 W3C 规范的 Web 应用开发。
  • 移动与客户端:Android 开发等。
  • 工程与工具:构建、部署、调试、性能优化。
  • 软硬件与行业观察:互联网、IT、软件、硬件相关的经验与评论。

判断一个博客是否对你有用,先看它的内容是否围绕具体技术问题展开,而不是泛泛的行业感慨。像朴人博客这样明确写出关注 Web 技术、Web 前端和多种开发语言,说明它的读者主要是做 B/S 应用的开发者。

技术博客和资讯站、问答社区的区别

维度 技术博客 资讯站 问答社区
内容来源 作者个人实践与总结 编辑或聚合 大量用户提问与回答
更新节奏 不定期,跟作者节奏 高频、追热点 实时、碎片化
深度 单篇可深入一个完整问题 偏概述和快讯 视回答质量波动大
适合场景 系统学习某条技术路线、复现操作 了解行业动态 卡在某个具体报错时快速求助
主要风险 文章可能过时 深度不足 答案质量参差

技术博客的价值在于连续性和作者视角:同一作者长期写同一技术栈,你能看到他的判断如何演变。代价是更新不稳定,且旧文可能跟不上版本变化。

如何判断一个技术博客是否值得长期关注

看四点即可,不需要读完全部文章:

  1. 定位是否清晰:是否明确写了关注哪些技术。朴人博客在站点描述里直接列出 Web 前端、Java、PHP、JavaScript、HTML、CSS、Android 等,读者能立刻判断是否对口。
  2. 是否有时间跨度:站点标注“Since 2007”,说明作者长期维护,内容积累和可信度通常高于刚建站几周的博客。
  3. 文章是否可复现:好的技术文会给出环境、步骤和预期结果,而不是只贴结论。
  4. 互动是否真实:评论区有具体技术讨论(哪怕是质疑)比清一色“写得好”更有参考价值。

如何高效阅读一个技术博客

用分类和标签缩小范围

大多数技术博客按分类或标签组织文章。先进入与你当前任务相关的分类(例如“Web 前端”),再挑最近一到两年的文章,避免一上来就从最早的文章顺序读。

用站内搜索定位具体问题

遇到具体报错或 API 用法时,直接搜关键词比翻目录快。搜索时用错误信息原文或具体技术名词,不要用“怎么解决”这类泛词。

用订阅跟踪更新

如果站点提供订阅入口,订阅后新文章会主动推送,适合长期跟踪某条技术路线。是否收费、是否需要登录,以站点实际页面说明为准,不要默认免费。

阅读时的验证习惯

  • 先看文章日期和提到的版本号,判断是否还适用于你当前的环境。
  • 代码先在小范围或独立环境跑通,再放进项目。
  • 涉及购买、配置等操作的内容,注意区分作者的个人选择和通用建议。

文章过时或代码跑不通时怎么排查

这是读技术博客最常见的卡点,按顺序排查:

  1. 核对版本:语言、框架、依赖库的版本是否与文章写作时一致。版本差异是代码失效的首要原因。
  2. 核对环境:操作系统、运行时、构建工具是否相同。
  3. 看评论区:其他读者可能已经报告了同样的问题,作者也可能在评论里给出修正。
  4. 找同站更新:同一作者可能写过后续文章修正前文,例如朴人博客就有“入手某设备”及“后续”两篇关联文章,说明作者会对同一话题做跟进。
  5. 交叉验证:用官方文档或其他来源确认关键 API 的当前行为,不把单篇博客当作唯一依据。

以朴人博客为例的典型形态

朴人博客符合个人长期技术博客的多数特征:有明确的站点定位(B/S 应用、Web 技术、Web 前端)、覆盖多种开发语言和平台、从 2007 年持续至今。它的文章既有纯技术内容,也有带个人色彩的实践记录,例如关于购买 2019 款 15 寸 MacBook Pro 的系列文章及后续跟进,评论区有读者互动。这类内容对读者的价值不在于结论本身,而在于作者如何记录一次决策和它的后续结果——这正是技术博客区别于文档和问答的地方。

访问方式很直接:在浏览器打开 poorren.com,通过首页分类、标签或站内搜索进入具体文章。是否需要登录、是否有付费内容,以站点页面实际提示为准。

iOS 开发中如何用 FFmpeg 获取摄像头麦克风、推流与 H.264 解码

FFmpeg 在 iOS 开发中主要承担音视频采集后的编码、推流和解码工作,适合需要自定义传输协议、跨平台复用代码或处理非系统原生格式的场景。如果只是播放本地视频或做简单录制,AVFoundation 加 VideoToolbox 通常更省事。下面按采集、推流、解码三个环节说明基本做法和选择条件。

FFmpeg 在 iOS 音视频链路中的位置

一条典型的直播或实时通信链路是:

  1. 采集:从摄像头取视频帧、从麦克风取音频采样。
  2. 编码:把原始帧压缩成 H.264(视频)和 AAC(音频)。
  3. 推流:按 RTMP、RTSP 等协议发送到服务器。
  4. 解码:接收端把 H.264 还原成可渲染的图像。

FFmpeg 可以覆盖编码、推流、解码多个环节,采集环节在 iOS 上通常仍借助系统接口拿到原始数据,再交给 FFmpeg 处理。Bison 的技术博客(allluckly.cn)中有一组 FFmpeg-iOS 文章,标题包括《FFmpeg-iOS获取摄像头麦克风》《FFmpeg-iOS推流器的简单封装》《FFmpeg-iOS的H.264解码》,正是按这条链路组织的,可作为入门参考。

用 FFmpeg 获取摄像头和麦克风

前提

  • 在 Mac 上编译出适用于 iOS 的 FFmpeg 静态库(博客中有《Mac编译ffmpeg获取FFmpeg-iOS》一文对应这一步)。
  • Xcode 工程已链接这些库,并在 Info.plist 中声明相机和麦克风用途说明,否则系统会直接拒绝授权。

基本步骤

  1. 申请权限:通过 AVFoundation 请求摄像头和麦克风访问权限,用户同意后再启动采集。
  2. 配置采集会话:用 AVCaptureSession 添加视频和音频输入,设置分辨率、帧率、采样率等参数。
  3. 拿到原始数据:在 AVCaptureVideoDataOutput 和 AVCaptureAudioDataOutput 的代理回调中接收 CMSampleBuffer。
  4. 交给 FFmpeg:把原始帧送入 FFmpeg 的编码上下文,准备后续编码或推流。

预期结果是:代理回调持续收到视频帧和音频采样,且格式与后续编码器要求的输入格式一致。常见卡点是像素格式不匹配(如采集到的是 BGRA,编码器要 YUV420P),需要在送入前做转换。

FFmpeg-iOS 推流器的简单封装思路

推流器的核心是把「编码后的音视频包」按协议发送出去。一个简单的封装通常包含:

  • 初始化:创建输出上下文,设置推流地址和协议(如 RTMP)。
  • 写头:连接服务器后写入流信息头。
  • 写包:每编码出一帧视频或一段音频,就调用写包接口发送。
  • 收尾:结束时写入尾部并释放资源。

封装时把连接、写头、写包、关闭拆成独立方法,调用方只需在编码回调里转发数据,不必关心协议细节。需要注意网络中断和服务器拒绝连接的处理,否则容易出现推流悄悄停止但界面无提示的情况。

H.264 解码的基本流程

  1. 初始化解码器:根据 H.264 流创建解码上下文。
  2. 送入压缩数据:把收到的 NAL 单元或完整帧交给解码接口。
  3. 取出解码帧:从解码器取出 YUV 数据。
  4. 渲染:把 YUV 转成可显示的格式,交给渲染层。

常见坑包括:帧不完整导致解码失败、缺少 SPS/PPS 信息无法初始化解码器、以及解码输出格式与渲染层要求不一致。iOS 上也可以改用 VideoToolbox 做硬解,性能和功耗通常更好,FFmpeg 软解更适合需要跨平台一致行为或处理特殊码流的场景。

该用 FFmpeg 还是系统原生框架

维度 FFmpeg AVFoundation / VideoToolbox
跨平台复用 强,代码可移植到 Android 等 弱,绑定 Apple 平台
协议支持 广,RTMP、RTSP 等可自行控制 有限,需自行实现或借助其他库
硬解硬编 可配合,但配置复杂 原生支持,性能功耗更优
上手成本 需先编译库、理解上下文模型 文档完善,示例多
适合场景 自定义协议、特殊格式、跨端一致 本地播放、录制、常规直播

选择条件很直接:如果需求是标准播放或录制,优先用系统框架;如果需要自定义推流协议、处理系统框架不支持的格式,或希望音视频代码在多个平台复用,再引入 FFmpeg。

从哪里入手

按「编译库 → 采集 → 编码 → 推流 → 解码」的顺序推进,每一步都先跑通最小可运行示例,再叠加下一环。Bison 的技术博客提供了 FFmpeg-iOS 系列的几篇文章,可作为这条路径的起点,遇到具体问题时再针对对应环节查资料。

网站信息概览

依据当前可见线索,长期注册记录并非孤立存在,基础设施也有专业服务支撑,因此更可能具备稳定维护流程,而非一次性部署。依据当前可见线索,搜索与社交元数据形成了完整链路,搜索平台较少需要自行猜测页面主题,分享预览也更可能保持稳定。

域名与注册信息

截至本次评测,域名年龄约为 11 年。顶级域为 .cn,本身不提供额外的身份信号。

DNS 与邮件配置

邮件认证尚不完整,当前缺少 DMARC。现有迹象表明,DNS 托管可识别为 Cloudflare。综合当前可观察字段,该域名的收件服务由 Cloudflare Email Routing 提供。该主机名未使用别名记录。该域名尚未启用 DNSSEC。

TLS 与证书

TLS 使用现代椭圆曲线公钥 EC。服务器返回了完整证书链。证书可验证域名控制权,但现有数据不能确认组织身份。依据当前可见线索,当前证书颁发者为 Let's Encrypt。TLS 证书采用约 89 天的短有效期。

HTTP 响应

未检测到常用浏览器安全响应头。CORS 允许任意来源读取该响应。响应已省略 X-Powered-By 标头。从公开技术信号来看,HTTP 头提供了 CDN/WAF 经过证据:cf-ray、x-cache、x-served-by、via。响应头没有可识别的内部信息泄露。

技术栈分析

现有迹象表明,站点可见的技术栈为 jQuery、Cloudflare、Fastly,精确版本未知。技术名称本身提供了架构线索,但目前没有证据表明某个具体版本存在问题。

SEO 与社交分享

Twitter/X 分享卡片信息可用。Title 信息完整,共 18 个字符。Meta Description 信息完整且长度适中。当前首页面向常规搜索抓取开放。首页没有通过元数据暴露 CMS 生成器。

主机和电子邮件

DNSCloudflare
主机Fastly
电子邮件Cloudflare Email Routing
位置 位置未知 104.21.71.216

用户评价(0)

  • 暂无评价。

页面、搜索与分享信息

页面描述自学iOS开发进阶首选博客,分享高质量的iOS开发技术,开发所遇到的疑难杂症,在此都一览无余,搜寻优秀的第三方开源框架,分享给大家,iOS开发技术博客,随Bison一起走进iOS开发的大道畅游翱翔。
规范链接http://allluckly.cn/
语言未知(默认)
Twitter Cardsummary

社交分享预览

12 个字段

未发现具体规则

域名登记事实 RDAP / WHOIS

注册商阿里云计算有限公司(万网)
注册时间2015-09-12
到期时间2027-09-12
域名状态ok
名称服务器cody.ns.cloudflare.com、kami.ns.cloudflare.com
DNSSECunsigned

DNS 记录

类型名称值TTL优先级
Aallluckly.cn104.21.71.216300—
Aallluckly.cn172.67.171.193300—
AAAAallluckly.cn2606:4700:3031::ac43:abc1300—
AAAAallluckly.cn2606:4700:3037::6815:47d8300—
MXallluckly.cnroute1.mx.cloudflare.net30033
MXallluckly.cnroute3.mx.cloudflare.net30065
MXallluckly.cnroute2.mx.cloudflare.net30079
NSallluckly.cncody.ns.cloudflare.com86400—
NSallluckly.cnkami.ns.cloudflare.com86400—
TXTallluckly.cnv=spf1 include:_spf.mx.cloudflare.net ~all300—

TLS 与证书

定性结果配置正常
支持协议TLSv1.2、TLSv1.3
协商协议TLSv1.3
证书主题allluckly.cn
颁发者Let's Encrypt
有效期至2026-12-06T21:50 · 记录时剩余 70 天
验证事实证书信任:通过 · 域名匹配:通过

HTTP 响应标头

标头值
content-typetext/html; charset=utf-8
cache-controlmax-age=600
servercloudflare
access-control-allow-origin*

已识别技术

jQueryCloudflareFastly