音视频面试题rtmp-04面试题汇总

音视频面试题集锦 2022.04 下面是 2022.04 月音视频面试题集锦内容的节选: 1)RTMP 消息分优先级的设计有什么好处? RTMP 的消息优先级是:控制消息 > 音频消息 > 视频消息。当网络传输能力受限时,优先传输高优先级消息的数据。 要使优先级能够有效执行,分块也很关键:将大消息切割成小块,可以避免大的低优先级的消息(如视频消息)堵塞了发送缓冲从而阻塞了小的高优先级的消息(如音频消息或控制消息)。 2)什么是 DTS 和 PTS?它们有什么区别? DTS 是解码时间戳;PTS 是显示时间戳。 阅读详情

文章目录

RTMP 核心高频面试题

1. 什么是 RTMP?有什么特点?

  • RTMP(Real-Time Messaging Protocol)是 Adobe 开发的基于 TCP 的实时消息传输协议
  • 特点:低延迟(通常 1-3 秒)、基于长连接、支持音视频和数据消息、有状态协议
  • 默认端口:1935

2. RTMP 协议栈分层?

  • 物理层/传输层:TCP(保证可靠传输)
  • RTMP 块层(Chunk Layer):将消息拆分为 Chunk 进行传输,多路复用
  • RTMP 消息层(Message Layer):定义各种消息类型(音视频、命令、数据等)

3.RTMP 握手过程(Handshake)?

  • 简单握手:
    • C0(1字节,版本号)+ C1(1536字节,时间戳+随机数据)
    • S0 + S1 + S2(回应 C1 的时间戳等)
    • C2(回应 S2)
    • 共 3 个来回,C0/C1 → S0/S1/S2 → C2
  • 复杂握手:涉及加密(RTMPE),包含 Diffie-Hellman 密钥交换和 HMAC 验证

4. RTMP Chunk(块)的作用和格式?

  • 作用:将大消息拆分为小块,实现多路复用和优先级控制,减少大消息阻塞
  • Chunk 基本组成:
    • Basic Header(1-3字节):Chunk Stream ID + 消息头类型(fmt)
    • Message Header(0/1/3/7/11字节):时间戳、消息长度、消息类型、消息流ID
    • Extended Timestamp(0/4字节):时间戳超过最大值时使用
    • Chunk Data:实际数据

5. Chunk Stream ID(CSID)和 Message Stream ID 的区别?

  • CSID:标识块流通道,用于多路复用,接收端根据 CSID 组装消息
  • Message Stream ID:标识逻辑上的消息流(如音频流、视频流、命令流),同一个 CSID 可以承载不同 Message Stream ID 的消息

6. RTMP 消息头的 4 种格式(fmt=0/1/2/3)?

  • fmt=0(全量头,11字节):新消息流开始时使用,包含完整信息
  • fmt=1(8字节):同一条流的后续消息,省略 msg stream id
  • fmt=2(3字节):只含时间戳增量,用于连续相同大小和类型的消息
  • fmt=3(0字节):完全复用前一个 Chunk 头信息,用于连续相同属性的消息

高频考点:为什么有多种格式?——压缩冗余,同一条流的后续消息很多字段相同,不需要重复传输。


7. RTMP 常见消息类型?

类型 ID名称说明
1Set Chunk Size设置块大小,默认 128 字节
2Abort中断某个块流
3Acknowledgement确认收到字节数
4User Control用户控制消息(如 StreamBegin、StreamEOF)
5Window Acknowledgement Size窗口确认大小(流量控制)
6Set Peer Bandwidth设置对端带宽
8Audio Message音频数据
9Video Message视频数据
15AMF3 DataAMF3 格式数据消息
16AMF3 Shared ObjectAMF3 共享对象
17AMF3 CommandAMF3 命令消息
18AMF0 DataAMF0 格式数据消息
19AMF0 Shared ObjectAMF0 共享对象
20AMF0 CommandAMF0 命令消息(connect、play、publish 等)

8. AMF 是什么?AMF0 和 AMF3 的区别?

  • AMF(Action Message Format)是 RTMP 用于序列化数据的二进制格式
  • AMF0:旧版格式,支持基本类型(Number、Boolean、String、Object、Array 等)
  • AMF3:新版格式,更紧凑,支持更多类型(如 ByteArray、XML、Vector),有引用机制减少重复数据

9. RTMP 推流(Publish)完整流程?

  1. TCP 三次握手 → 建立连接
  2. RTMP 握手(C0/C1 → S0/S1/S2 → C2)
  3. connect 命令:客户端发送 connect 命令,携带 app 名、flashVer 等,服务端返回 _result
  4. releaseStream / FCPublish:客户端申请发布流
  5. createStream:创建流通道,服务端返回 stream id
  6. publish 命令:发送 publish(流名 + 类型 live/record/append)
  7. 发送音视频数据:持续发送 Audio Message 和 Video Message

10. RTMP 拉流(Play)完整流程?

  1. TCP 握手 + RTMP 握手 + connect(同上)
  2. createStream → 获取 stream id
  3. play 命令:发送 play(流名 + 起始 + 时长 + 重置)
  4. 服务端发送 User Control(StreamBegin) → Status(NetStream.Play.Start) → 音视频数据
  5. 拉流端收到数据后解码播放

11. RTMP 的 AAC/AVC 序列头是什么?

  • AAC 序列头(AudioSpecificConfig):音频开始前发送,包含采样率、声道数、编码配置等解码必需信息,存储在 Audio Tag 的第一个包中(PacketType=0)
  • AVC 序列头(AVCDecoderConfigurationRecord):视频开始前发送,包含 SPS/PPS 等解码信息,存储在 Video Tag 的第一个包中(PacketType=0)
  • 后续的音视频数据 PacketType=1,表示 NALU 数据或 AAC 原始数据

12. RTMP 视频数据的关键帧和非关键帧标识?

  • Video Tag 的第一个字节高 4 位为 FrameType:
    • 1 = keyframe(关键帧,H.264 中为 IDR 帧)
    • 2 = inter frame(非关键帧,P/B 帧)
    • 3 = disposable inter frame
  • 低 4 位为 CodecID:
    • 7 = AVC(H.264)
    • 10 = HEVC(H.265,扩展支持)
    • 2 = AAC(注:这是音频的 CodecID,视频中不同)

13. RTMP 的时间戳(Timestamp)机制?

  • 每个 Chunk 携带时间戳或时间戳增量(delta)
  • 单位:毫秒
  • 3 字节存储,最大值 0xFFFFFF(约 1677 秒),超过则使用 Extended Timestamp(4 字节)
  • 音视频同步依靠各自的时间戳和同一时间基准

14. RTMP 的流量控制机制?

  • Window Acknowledgement Size:设置窗口大小,接收方每收到窗口大小的数据后要发送 Acknowledgement
  • Set Peer Bandwidth:设置对端带宽上限,结合 ACK 实现拥塞控制
  • 发送方如果没有及时收到 ACK,会降低发送速率

15. RTMP vs RTSP vs HLS 对比?

维度RTMPRTSPHLS
传输层TCPUDP/TCPHTTP(TCP)
延迟1-3s1-3s(UDP)10-30s
协议类型有状态有状态(信令)+ RTP(媒体)无状态
防火墙穿透差(1935端口)差好(80/443)
兼容性Flash 时代主流,需插件安防/监控领域移动端/网页通用
适用场景直播推流、互动直播安防摄像头、IPTV点播、直播分发

16. RTMP 的变种协议?

  • RTMPT:RTMP over HTTP,用 HTTP 封装 RTMP 数据,穿透防火墙(端口 80)
  • RTMPS:RTMP over TLS/SSL,加密传输,端口 443
  • RTMPE:RTMP 加密,使用 Adobe 自有加密算法,握手阶段协商密钥
  • RTMP Dump:纯数据格式,文件形式存储 RTMP 流

17. RTMP 延迟由哪些因素构成?如何优化?

  • 延迟来源:
    1. 采集编码延迟(编码器 buffer、I 帧间隔)
    2. 网络传输延迟(RTT、拥塞)
    3. 服务端转发延迟(队列、buffer)
    4. 客户端播放缓冲延迟(jitter buffer、解码缓冲)
  • 优化手段:
    • 减小 GOP 长度(I 帧间隔)
    • 调整 Chunk Size(适当增大可减少包头开销)
    • 减小播放端 buffer
    • 选用更近的接入节点
    • 使用 TCP_NODELAY 禁用 Nagle 算法

18. RTMP 推流为什么首帧慢?怎么优化?

  • 原因:需要等待第一个关键帧(I 帧)才能解码;GOP 越大首帧等待越久
  • 优化:
    • 推流开始时立即发送一个 IDR 帧
    • 服务端缓存最近的 GOP,新观众接入时先发缓存的关键帧
    • 减小 GOP 长度(如 1-2 秒一个 I 帧)

19. RTMP 如何实现多路流复用?

  • 通过 Chunk Stream ID 在同一个 TCP 连接上承载多个逻辑流
  • 不同流的 Chunk 交错发送,接收端根据 CSID 分别组装
  • 例如:一条连接上同时传输音频流、视频流、命令流

20. RTMP 连接失败常见原因?

  • 端口 1935 被防火墙拦截
  • 服务端未启动或应用名(app)错误
  • 流名已被占用(推流冲突)
  • 鉴权失败(token 过期/错误)
  • 网络不通或 DNS 解析失败

21. RTMP 的 Chunk Size 对性能有什么影响?默认值是多少?如何调整?

参考答案:

  • 默认值:128 字节
  • 过小:Chunk 数量多,包头开销占比大,传输效率低
  • 过大:大消息占用连接时间长,影响其他流的实时性(队头阻塞)
  • 调整方式:发送 Set Chunk Size(类型 ID = 1) 消息通知对端
  • 实践中通常设置为 4096 或更大,以平衡开销和延迟

22. RTMP 协议中的 User Control Message 有哪些常见事件?分别在什么场景触发?

参考答案:

事件 ID事件名称触发场景
0Stream Begin流开始时发送
1Stream EOF流结束,无更多数据
2Stream Dry流已空(无数据可发)
3Set Buffer Length设置客户端缓冲区长度
4StreamIsRecorded流已被录制
6Ping Request服务端探测客户端是否存活
7Ping Response客户端回应 Ping

23. RTMP 播放时如何实现 Seek(跳转)和暂停?

参考答案:

  • Seek:客户端发送带有 start 参数(负数表示从指定位置开始)的 play 命令,或使用 seek 命令
  • 暂停:客户端发送 pause 命令(true=暂停,false=恢复)
  • 注意:Seek 只能定位到关键帧(I 帧)位置,服务端需要从最近的关键帧开始发送数据
  • 直播流通常不支持 Seek(因为是实时流),点播流支持

24. RTMP 中的 Shared Object 是什么?有什么用途?

参考答案:

  • 共享对象(Shared Object)是一种在多个客户端之间同步数据的机制
  • 可以理解为"远程共享变量",服务端维护数据状态,客户端订阅变更
  • 用途:
    • 实时聊天室的用户列表同步
    • 多人协作/白板的数据共享
    • 直播在线人数实时更新
    • 游戏状态同步
  • 分为 持久化 和 临时 两种,临时的在连接断开后清除

25. RTMP 连接中,connect 命令通常携带哪些参数?各有什么含义?

参考答案:

参数含义
app应用名称,服务端用于区分不同应用
flashVerFlash Player 版本号
swfUrl发布 SWF 文件的 URL
tcUrl服务器 URL(rtmp://host:port/app)
fpad是否使用代理(布尔值)
capabilities客户端能力位图
audioCodecs支持的音频编解码器
videoCodecs支持的视频编解码器
videoFunction支持的视频功能
pageUrl加载 SWF 的网页 URL
objectEncodingAMF 编码版本(0=AMF0,3=AMF3)

26. 请描述 RTMP 协议中音频 Tag 的详细结构?

参考答案:

第 1 字节(SoundFormat + SoundRate + SoundSize + SoundType):

  • 高 4 位:SoundFormat(编码格式)
    • 10 = AAC
    • 2 = MP3
    • 0 = PCM 大端
  • 接下来 2 位:SoundRate(采样率)
    • 0 = 5.5kHz,1 = 11kHz,2 = 22kHz,3 = 44kHz
  • 接下来 1 位:SoundSize(采样精度)
    • 0 = 8-bit,1 = 16-bit
  • 最低 1 位:SoundType(声道)
    • 0 = 单声道,1 = 立体声

第 2 字节起(当 SoundFormat = 10 / AAC 时):

  • 第 2 字节:AACPacketType
    • 0 = AAC sequence header(AudioSpecificConfig)
    • 1 = AAC raw(音频帧数据)

27. RTMP 视频 Tag 的详细结构?AVCPacketType 有哪两种?

参考答案:

第 1 字节(FrameType + CodecID):

  • 高 4 位:FrameType
    • 1 = keyframe
    • 2 = inter frame
    • 3 = disposable inter frame
    • 4 = generated keyframe
    • 5 = video info / command frame
  • 低 4 位:CodecID
    • 7 = AVC(H.264)
    • 10 = HEVC(H.265,扩展)

第 2-4 字节(当 CodecID = 7 / AVC 时):

  • 第 2 字节:AVCPacketType
    • 0 = AVC sequence header(AVCDecoderConfigurationRecord,含 SPS/PPS)
    • 1 = AVC NALU(视频帧数据)
    • 2 = AVC end of sequence(序列结束)
  • 第 3-4 字节:Composition Time(CTS,PTS - DTS,用于 B 帧显示时间偏移)

28. RTMP 协议是如何保证可靠性的?TCP 拥塞控制会对 RTMP 直播产生什么影响?

参考答案:

RTMP 基于 TCP,天然具备可靠传输特性:

  • 确认重传:TCP 确认机制保证数据不丢
  • 顺序保证:按序到达
  • 流量控制:滑动窗口机制
  • 拥塞控制:慢启动、拥塞避免、快重传、快恢复

对直播的影响:

  • 网络抖动时:TCP 会重传丢失的包,导致延迟累积(延迟越来越大)
  • 带宽不足时:TCP 拥塞控制会降低发送速率,造成音视频卡顿
  • 直播场景痛点:TCP 的可靠传输机制反而可能导致延迟不可控(丢包不如延迟敏感)
  • 解决方案:使用 QUIC/HTTP3 或基于 UDP 的协议(如 SRT、WebRTC)替代

29. RTMP 推流过程中,如果网络抖动导致数据积压,常见的处理策略有哪些?

参考答案:

  1. 丢帧策略:

    • 丢弃非关键帧(P/B 帧),只保留关键帧
    • 丢弃音频或视频的低优先级数据
    • 动态调整编码码率
  2. 动态调整编码参数:

    • 降低分辨率/码率
    • 减小 GOP 长度,减少关键帧间隔
  3. 缓冲管理:

    • 设置发送缓冲区上限,超过则丢帧
    • 使用环形缓冲区,新数据覆盖旧数据
  4. 协议层面:

    • 监测 RTT 和 ACK 频率,动态调整发送速率
    • 使用 TCP_NODELAY 减少小包合并延迟

30. RTMP、RTSP、WebRTC 三种协议在实时互动直播场景下如何选型?

参考答案:

维度RTMPRTSP + RTPWebRTC
延迟1-3s1-2s100-500ms
浏览器支持需插件需插件原生支持
穿透能力一般(1935)差好(ICE/STUN/TURN)
安全RTMPS/RTMPESRTP/DTLSDTLS-SRTP
复杂度中等中等高
兼容性直播 CDN 广泛支持安防/监控领域新兴,生态完善中
典型场景直播推流/CDN摄像头/IPTV视频会议/互动直播

选型建议:

  • 传统直播(一对多,秒级延迟可接受):RTMP 推流 + HLS/FLV 分发
  • 超低延迟互动(毫秒级):WebRTC
  • 安防/设备接入:RTSP + RTP

nginx搭建直播rtmp推流,httpflv拉流环境 工作中发现挺多直播CDN在实现httpflv拉流时都没有使用http chunk编码,而是直接使用no-content-length的做法。在拉流http chunk流的时候,使用tcpdump抓包,wireshark分析后,均没有看到http chunk协议,与网上其他教程不符合。no-content-length,Google下得知,使用这种非标准的no-centengt-length的原因是实现简单。可以在响应头中看到使用了http chunk协议,且没有content-length。 阅读详情

相关推荐

Qt-FFmpeg开发-实现录屏功能

最近研究了一下FFmpeg开发,功能实在是太强大了,网上ffmpeg3、4的文章还是很多的,但是学习嘛,最新的还是不能放过,就选了一个最新的ffmpeg n5.1.2版本,和3、4版本api变化还是挺大的;在这个Demo里主要使用Qt + FFmpeg开发一个【简易录屏软件】,这里主要使用的是【软解码】,需要使用硬解码的可以看之前的文章;为了便于学习,这里只是录制视频图像,没有引入音频等信息;

irainsa的博客 3314

音视频面试题集锦第 1 期

RTMP 消息分优先级的设计有什么好处?什么是 DTS 和 PTS?它们有什么区别?

758

FFmpeg 详尽编译过程

个人概率性介绍,我在后来测试的时候,就是把别人的 .sh 脚本程序代码,直接拷贝到,我的 linux 系统下使用 vim 编译器打开的脚本中,然后更换自己的路径。在上面编写的Android.mk中,我们制定了后缀名**.c文件的名字为ffmpeg_jni.c**,所以c文件要与Android.mk的LOCAL_SRC_FILES:= ffmpeg_jni.c与此保持一致;对于整个编译的过程我的感触是非常深刻的,因为我在这个编译的过程中踏到了好多的“雷”,每个来的很是突然,都是触不及防的突然。

yinshipin007的博客 485

音视频开发面试题集锦

下面是 2022.04 月音视频面试题集锦内容的节选: 1)RTMP 消息分优先级的设计有什么好处? RTMP 的消息优先级是:控制消息 > 音频消息 > 视频消息。当网络传输能力受限时,优先传输高优先级消息的数据。 要使优先级能够有效执行,分块也很关键:将大消息切割成小块,可以避免大的低优先级的消息(如视频消息)堵塞了发送缓冲从而阻塞了小的高优先级的消息(如音频消息或控制消息)。 2)什么是 DTS 和 PTS?它们有什么区别? DTS 是解码时间戳;PTS 是显示时间戳。

m0_60259116的博客 1713

C++流媒体面试题

问题:请简述RTSP、RTMP、HLS三种流媒体协议的区别。RTSP(Real Time Streaming Protocol):RTMP(Real Time Messaging Protocol):HLS(HTTP Live Streaming):问题:在流媒体处理中,如何减少视频传输的延迟?问题:请介绍H.264和H.265两种视频编码标准的主要区别。问题:请描述一个基于Nginx的RTMP流媒体服务器的基本架构。问题:在C++中,如何实现RTMP协议的客户端或服务器?

道亦无名 721

三部对接 sora-2:OpenAI 最新视频模型快速接入指南

本文介绍OpenAI最新视频生成模型Sora-2的接入方案,重点解析其Chat格式调用功能。开发者可通过在提示词中嵌入"横屏/竖屏""时长""清晰度"等要求快速生成视频。文章分三部分:1)基础准备(环境配置与API密钥获取);2)核心调用(提供Python/Java示例代码);3)结果查询与优化建议。Sora-2支持多语言调用,简化了视频生成流程,适用于短视频、广告创意等场景。

2501_93565190的博客 3436

iOS直播:LFLiveKit + RTMP实现直播推流

RTMP(the Real-time Messaging Protocol)协议作为客户端和服务器端的传输协议,这是一个专门为高效传输视频、音频和数据而设计的 TCP/IP 协议。HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议。

irainsa的博客 655

2023年金蝶云星辰初级顾问认证参考试题(1)

最新积累的考试真题,答案只供参考(49分T~T),欢迎大佬们更正,私聊我修改,有新的试题也可以私聊我,日后会完善题库!大家一起努力,预祝大家顺利通过!1.【简单】生产环节中,客户老板希望掌握材料的超发或漏发情况,,以便分析用料情况,对材料浪费进行管控,可以查看什么报表?⒉[中等】客户主营电气柜的生产销售,商品为非标品需定制,又因交期效短,需要边生产边补料,以下哪个功能最适合该客户场景?15.【简单】在给商品设置科目关联时,分别按照单个商品,商品类别,所有商品设置了对应客户,()优先级最高。

MLX00的博客 7977

Nginx搭建RTMP流媒体服务器(Ubuntu18.04)

Nginx搭建RTMP流媒体服务器(Ubuntu18.04)

m0_60259116的博客 581

2023-12-26~2025-07-04备份

一、海康视觉与汇川机器人 服务器-客户端通信设置IP在同一网段名称IP端口类型海康相机工控机7930服务器机器人3000客户端海康VM服务器设置1通信管理 增添TCP服务端,设置本机IP:192.168.0.20,端口号79302 协议解析 通信双方约定通信格式(设置收发数据格式,分隔符)机器人客户端设置(不同类型机器人设置有差别)1 通讯服务设置 设置连接服务器IP、服务端端口号、机器人端口号,确保连接正常2 协议解析 使用指令代码构建通讯解析。

青铜小码农 3126

Win11只读模式无法关闭的终极解决方案

通过以上方法,我们应该能够解决Windows 11中文件夹无法取消只读状态的问题。如果问题仍然存在,请确保你的账户具有足够的权限来修改文件夹属性,并考虑是否有其他安全软件或策略阻止了权限更改。在操作过程中,请务必小心谨慎,避免误操作导致数据丢失或系统损坏。希望本文能够帮助到大家!

mmoo_python的博客 1万+

音视频技术开发周刊 | 244

每周一期,纵览音视频技术领域的干货。新闻投稿:contribute@livevideostack.com。✦一周简讯✦JPEG-XL华为自动驾驶车辆测试专利公布,无需人力测试自动驾驶华为技术有限公司“自动驾驶车辆的测试方法、装置及系统”专利公布。摘要显示,本申请实施例提供的系统包括软件控制模块、运动控制模块和多个运动平台。根据软件控制模块获取的测试场景信息,确定测试运动平...

LiveVideoStack 1396

MDF和DHF、DMR、DHR三者差异?注册与备案文件?医疗器械产品技术要求编写指导原则

定义:设计历史文档(DHF ) 指的是描述某医疗器械成品设计过程的有关记录。内容:DHF包括设计开发活动的所有记录。从最初的策划、客户需求、设计输入,设计输出、设计验证、设计确认、所有的设计评审,设计转换,以及设计变更相关的所有记录。均属于DHF的一部分。要求:各制造商应为每个类型的器械建立并保持设计历史文件。设计历史文件应包含或引用必要的记录,以证实设计符合经批准的设计计划和法规的要求。

学海无涯的专栏 9112

【SRS】流媒体服务器(推流+拉流+转流)

环境ubuntu16.04make编译完之后可以执行make install,默认是安装到/usr/local/srs 配置文件:/usr/local/srs/conf/rtmp.conf listen 6666;vhost defaultVhost { } 其中listen默认为1935,是rtmp流推送的默认端口;max_connections值最大连接;

irainsa的博客 885

5ZCM6ZGrVDllSFLkv6Hmga/ljJbnrqHnkIbns7vnu58= GetFlowDropDown SQL注入

5ZCM6ZGrVDllSFLkv6Hmga/ljJbnrqHnkIbns7vnu58=、eHR/OA一体化智慧云平台、智慧一卡通云平台、行业软件开发与定制、智慧企业管理信息化咨询与项目服务为核心业务的顾问式管理咨询和软件个性定制开发的高科技股份集团公司。同鑫T9eHR信息华管理系统存在SQL注入漏洞,攻击者可通过该漏洞上传shell。关闭互联网暴露面或接口设置访问权限。利用sqlmap进行shell。

iSee857的博客 701

YOLO11涨点优化:Loss魔改 | WIoU (Wise-IoU) v3版本全面替换,基于动态非单调聚焦机制,让模型更聪明地学习

YOLOv11目标检测中的WIoU v3损失函数改进 本文探讨了YOLOv11目标检测模型中CIoU损失函数的局限性,并提出了WIoU v3改进方案。关键发现包括: CIoU的缺陷:在低质量样本(小目标/遮挡目标)上过度惩罚,导致模型优化方向偏离,小目标AP往往比大目标低30%左右。 WIoU v3的创新: 动态非单调聚焦机制:根据样本"离群度"智能分配梯度 让模型重点优化中等质量样本,减少对低质量样本的无效关注 采用指数移动平均来自适应调整质量评判标准 实际效果:WIoU v3在保持大

2601_95807009的博客 424

Android FFmpeg系列04--FFmpeg调用MediaCodec进行硬解码

本文基于之前的Demo添加了FFmpeg使用MediaCodec来硬解码的方式,包括解码出buffer再利用OpenGL进行渲染上屏和直接解码到Surface然后上屏两种方式。上述步骤都是在打开解码器之前完成,剩下的步骤和软解一致了,只是解码出来的AVFrame的fmt为上面我们查找到的hw_pix_fmt,也就是。所以接下来采用FFmpeg在3.1之后提供的直接调用MediaCodec的C接口来实现硬解码。解码流程和软解的流程也是类似的,这里重点描述下差异的地方。

irainsa的博客 1248

在 LangGraph 中集成 Skills 增强智能体能力

LangGraph 的核心是通过**状态机 + 节点(Node) + 工具(Tool)**来编排智能体流程,你可以把 Skills 理解为“封装好的工具或可复用的任务流”,下面是一套可落地的集成方案。

lpfasd123的博客 1182

VLC架构及流程分析

VLC是一个非常庞大的工程,我从它的架构及流程入手进行分析,涉及到一些很细的概念先搁置一边,日后详细分析。

irainsa的博客 428

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

《FFmpeg Basics》中文版-04-调整和伸缩视频

FFmpeg工具没有输入视频宽度和高度的精确数字,而是提供了在下一页的表中列出的预定义视频大小。输入vga参数之后显示的如下图:(确实是640:480)FFmpeg中视频大小的缩写大小缩写典型用法128x96sqcif手机160x120qqvga手机176x144qcif手机320x200cga旧的CRT显示器320x240qvga手机、摄像头352x288cif手机640x350ega旧的CRT显示器640x480vga显示器,摄像头704x576。

irainsa的博客 1236

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Qt-FFmpeg开发-保存视频流裸流

最近研究了一下FFmpeg开发,功能实在是太强大了,网上ffmpeg3、4的文章还是很多的,但是学习嘛,最新的还是不能放过,就选了一个最新的ffmpeg n5.1.2版本,和3、4版本api变化还是挺大的;在这个Demo里主要使用Qt + FFmpeg开发一个简单的【视频播放器】,支持【保存视频流裸流】功能,这里主要使用的是【软解码】,需要使用硬解码的可以看之前的文章;同时为了尽可能的简单,这里没有进行音频解码和播放,只是单独的进行视频解码播放;

irainsa的博客 1081

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

wireShark 的简单介绍(一)

(1) wireshark 的官方下载地址 https://www.wireshark.org/#download 或者直接第三方软件管理平台也行,比如腾讯管家软件中心,但是一般而言,官网版本要新一些, 比如目前,腾讯管家软件中心的版本是3.03,目前官网是3.04, 所以建议大家还是去官网下载安装的好软件下载平台(2) 软件的安装十分简单,大家可以直接不断下一步安装就行,但是有一点要注意,如果大家需要配合其他软件使用,比如和模拟器配合使用,此时,强烈建议直接在安装在默认路径,不然可能无法配合使用, 因为安

irainsa的博客 386

流媒体技术基础-摄像头接口与标准

PSIA (Physical Security Interoperability Alliance)物理实体安防互操作性联盟,是一个由65个以上的安防厂商和系统集成商组成的全球性联盟,致力推动整个安防生态系统及以后的IP功能的安全设备和系统的互操作性,成立于2008年8月。GB/T28181作为国标,却也存在多个缺陷,如协议复杂、过程繁琐,应用上也是颇不方便,而公安部为其开发的检验程序,更如天书般复杂,加上GB/T28181仅是大陆的标准,注定其难以与ONVIF相抗衡,全球化更是难上加难。

irainsa的博客 4493

如何使用FFmpeg将AVI转换为MP4(有损转换和无损转换)

你需要知道的最重要的事就是Formats和Codecs之间的区别。简单来说,编解码器(Codecs)获取原始音频和视频后进行压缩,压缩到一个合理的空间大小。这种压缩是在考虑音频和视频质量的前提下完成的。视频编码完全指南。音频和视频压缩过程的输出被打包进一个被称为容器(Formats)的格式中,而打开容器以及读取音频和视频的方式也有明确的规则和指南。容器有不同的格式,如 MP4、AVI、WebM、MKV等。

irainsa的博客 869

嫁给程序员老公,我后悔了

不知从什么时候开始,无论是公司聚餐,还是集体看电影、K歌,我右手边的位置,始终都是程真的。在我还没长开的时候,就常听人说,有两种男人不能嫁:一种是兵哥哥,另一种是程序员。程真说,他们程序员就像是块冰山,显露在外面的部分虽少,但可挖掘还有很多,留待我也留待你慢慢发现。嫁给程序员老公,我后悔了,后悔我爱他还不够,后悔我关心他还不足,后悔我欺负他还太多。人生最苦恼的事,不是长的矮,也不是减不瘦,而是被迫成为别人眼中的程序员女友。他们视力模糊,却对数字异常敏感,判断一个女生漂不漂亮,不看脸蛋,只论胸围。

irainsa的博客 1537
上一篇: 音视频面试题之rtmp-03拉流流程梳理
下一篇: 音视频面试题RTMP-05 时间戳核心知识全解
八月的雨季997
博客等级 码龄8年 932粉丝 173原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

八月的雨季997

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值