iOS 直播一些相关知识的整理

本文介绍了流媒体技术的基础概念,包括GOP(画面组)的工作原理及其在视频解码过程中的作用,FFmpeg工具的使用方法,以及H.264编码标准和TS流媒体封装格式等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.流媒体
之前利用 Nginx+FFmpeg 搭建了一个简单的本地流媒体服务器,可以实现简单的推流(RTMP)拉流(HLS).在学习直播技术的过程中,一些有关流媒体的基本概念还是很模糊,这里做下总结. 



1.GOP
GOP(group of pictures)画面组,一个 GOP 就是一组连续的画面.一个影片由一个/多个序列组成;而一个序列由数个 GOP 组成;一个 GOP 又由一个 I 帧(帧内编码帧)及数个 B 帧(双向预测内插编码帧)和 P 帧(前向预测编码帧)组成.一个GOP 的结构由参数 M,N 来描述.下图是一个 GOP:

这个 GOP 中,M = 15,即每15帧里出现一次 I 帧;N = 3,即每3帧中出现一次 P 帧.
在视频的解码过程中,B,P 帧都需要通过确定 I 帧来构建图像.当用户第一次观看的时候,会寻找I帧,而播放器会到服务器寻找到最近的I帧反馈给用户.这里又会涉及到 GOP Cache 的问题,来解决视频播放的等待延时.感兴趣的同学可自行科普.

2.FFmpeg
FFmpeg 是一个完整的,跨平台的记录/转换音频,视频的开源程序.
FFmpeg 格式转换详细命令可以参考这篇博客;想要了解更多的话可以去 FFmpeg 的官网
这里贴两条我比较常用的命令
(1)通过 RTMP 发送媒体流的命令
ffmpeg -re -i "这里是源文件路径" -vcodec copy -f flv rtmp://localhost:1935/hls/abc

(2)捕获试试桌面以及摄像头数据通过 RTMP 发送媒体流
ffmpeg -f avfoundation -framerate 50 -i "1:0" -f avfoundation -framerate 30 -video_size 640x480 -i "0" -c:v libx264 -preset slow -filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' -acodec libmp3lame -ar 44100 -ac 2  -f flv rtmp://localhost:1935/hls/abc


3.H.264
5.m3u8





总结一下 iOS 直播所涉及到的知识点:


本文会不断的更新,总结.以上总结的部分,哪里有问题还望大家多多指出,我会马上修改更新!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值