多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

FFmpeg 录屏+麦克风:存 MP4 与推 RTMP 的技术本质

FFmpeg 录屏+麦克风:存 MP4 与推 RTMP 的技术本质 FFmpeg音视频处理管线前半段(采集→编码)相同,差异在封装与输出:MP4(ISOBMFF)适于文件存储,支持随机访问但需完整moov;FLV-over-RTMP则为实时流设计,逐帧传输、低延迟。录制优先画质与压缩效率,推流侧重延迟与码率稳定。时间戳需单调递增以保障推流同步。多路输出可用tee muxer实现一次编码、双路分发。核心区别:MP4面向文件,FLV面向实时网络。1. 架构总览无论是存文件还是推流,FFmpeg 处理音视频的完整管线为:输入设备 → 解复用 → 解码 → 滤镜/处理 → 编码 → 复用 → 输出对于录屏+麦克风场景,管线具体为:屏幕采集(x11grab/gdigrab/kmsgrab) + 麦克风采集(alsa/pulse/dshow/avfoundation) ↓ 原始帧(YUV/RGB) + PCM ↓ 编码(H.264 / H.265 + AAC/Opus) ↓ 封装(MP4 / FLV / MKV / TS) ↓ 输出(文件系统 / 网络协议)前半段(采集→编码)两者完全一致。本质区别在封装格式与输出目标。2. 封装格式差异2.1 MP4(ISO BMFF)MP4 是面向文件的容器格式,设计目标是存储和后期处理:采用 box 结构(ftyp、moov、mdat
返回列表