FLV封装H265

news2024/11/16 19:43:40

        针对FLV格式,目前许多开源项目和常见的视频处理工具和流媒体服务器,仍主要支持H.264视频编码格式,尚未完全兼容H.265。ffmpeg和vlc都不支持H265编码格式的FLV,不知道后续版本会不会支持。RTMP也是用FLV格式传输音视频,这也导致很多RTMP流媒体服务器也不支持H265。本文将介绍FLV如何封装H265。

        FLV由FLV Header、PreviousTagSize、Tag组成。如下图所示,为FLV文件结构:

        Tag由Tag Header和Tag Data组成,RTMP传输音视频就是传输的Tag Data。Tag有三种类型,Audio Tag(音频Tag),Video Tag(视频Tag),script Tag(又称Metadata Tag),结构如下图所示:

        接下来重点看一下视频的Tag Data,如下图所示:

        如果CodecId=7则表示视频是H264编码,就是AVCVIDEOPACKET格式,如下图所示:

        如果 AVCPacketType = 0,那么Data就是AVCDecoderConfigurationRecord格式。如果AVCPacketType = 1,那么Data就是H264的NALU(4字节的NALU size+去掉起始码的NALU)。

        FLV封装H265和H264的流程是一样的,区别如下:

        1、H265的CodecId=12

        2、数据格式为HEVCVIDEOPACKET,和AVCVIDEOPACKET结构一样,就是名字不同而已

        3、如果 AVCPacketType = 0,那么Data就是HEVCDecoderConfigurationRecord格式,如果AVCPacketType = 1,Data和H264完全一样

        关于AVCDecoderConfigurationRecord和HEVCDecoderConfigurationRecord参考我的另外一篇文章:H264/H265的两种格式Annex B、AVCC(H264)/HVCC(H265)_265h,cc-CSDN博客

        我实现了一个FLV封装、解封装库,纯C语言实现,支持H264/H265、AAC,支持跨平台,也可以用于RTMP音视频Tag Data的生成和解析,地址:https://github.com/BreakingY/libflv

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2104502.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CPP继承(下)

目录 继承与友元 继承与静态成员 复杂的菱形继承及菱形虚拟继承 单继承 多继承 菱形继承 菱形继承的问题 虚继承 虚拟继承解决数据冗余和二义性的原理 继承的总结和反思 笔试面试题 继承与友元 友元关系不能继承,也就是说基类友元不能访问子类私有和保护…

淘宝扭蛋机小程序开发,吸引更多的消费者

随着互联网科技的快速发展,小程序已经成为了一个必不可少的发展趋势。小程序具有门槛低、曝光度高、方便的优势,能够满足消费者的需求,还可以为企业商家带来更多的影响力,因此,扭蛋机小程序也成为了市场发展的重要力量…

Linux网络编程:守护进程

目录 1.会话 2.守护进程的特点 3.如何将一个进程变成守护进程 1.会话 在Linux下一个会话就是 终端文件 bash,会话就是人类和计算机沟通的窗口和解释器。 可以在xshell中新建立一个会话验证一下。 复制会话 使用 ls /dev/pts 命令,查看有几个终端文…

(Lane Deteciton-1)PersFormer

介绍 在自动驾驶中,下游模块如规划和控制通常需要将车道位置表示为正交的鸟瞰图(BEV)而不是前视图表示。使用BEV表示有助于更好地与环境中的交互式代理(如车辆、道路标志、交通灯等)对齐任务,并且与其他传…

tomato靶场通关

1、使用nmap扫描C段查找网址 2、使用dirb扫描目录 3、打开网站查看目录 4、发现一个info.php文件查看 5、查看源代码,发现文件包含漏洞 6、查看etc/passwd ,查看日志 7、写入一句话木马 8、使用蚁剑进行连接查看,可以使用终端

Vue 3 组合式 API

相比较 Vue.js 2.x 版本传统的方法组织形式, Vue.js 3.x 提出了组合式 API 的格式。本 章带领读者系统学习 Vue.js 3.x 新增的有关组合式 API 的知识。 本章主要涉及到如下知识。 组合式 API 与选项式 API 的语法区别。 在组合式 API 中使用生命周期…

从监控到智能:EasyCVR视频汇聚平台助力加油站安全监管升级转型

随着科技的不断进步,视频监控技术在各个行业的应用日益广泛,尤其在加油站这一关键领域,视频智能监管系统的应用显得尤为重要。TSINGSEE青犀视频EasyCVR视频汇聚平台作为一款基于“云-边-端”一体化架构的视频融合与AI智能分析平台&#xff0c…

guava中对Map的扩展数据结构

Multimap - 多值Map guava中的Multimap提供了将一个键映射到多个值的形式&#xff0c;使用起来无需定义复杂的内层集合&#xff0c;可以像使用普通的Map一样使用它&#xff0c;定义及放入数据如下&#xff1a; Multimap<String, Integer> multimap ArrayListMultimap.…

小琳Python课堂:Python高并发实现的基本原理(高阶版)

大家好&#xff0c;这里是小琳Python课堂&#xff01; 今天&#xff0c;我们将从高阶视角深入探讨Python高并发实现的基本原理&#xff0c;特别是线程安全性、线程同步和原子性这三个核心概念。这些概念对于构建复杂、高效的多线程应用程序至关重要。 线程安全性 首先&#x…

飞机制造5G智能工厂数字孪生工业物联平台,推进制造业数字化转型

飞机制造行业作为高端制造业的典范&#xff0c;正积极探索数字化转型的新路径。飞机制造5G智能工厂数字孪生工业物联平台&#xff08;以下简称“平台”&#xff09;的兴起&#xff0c;不仅为飞机制造业注入了强劲动力&#xff0c;更为整个制造业的数字化转型树立了新的标杆。 …

Java学习第七天

成员方法分类&#xff1a; 静态成员方法&#xff08;有static修饰 属于类&#xff09;建议用类名访问&#xff0c;也可以用对象访问 实例成员方法&#xff08;无static修饰 属于对象&#xff09;只能用对象出发访问 使用static来定义一些工具类 工具类直接使用类名.方法调用即…

Java并发线程 共享模型之管程 5

1. 生产者消费者 package cn.itcast.testcopy;import cn.itcast.n2copy.util.Sleeper; import lombok.extern.slf4j.Slf4j;import java.util.LinkedList;/*** ClassName: Test21* Package: cn.itcast.testcopy* Description: 生产者消费者** Author: 1043* Create: 2024/9/4 - …

Hadoop vs Spark

Hadoop 和 Spark 都是apache基金会下、在大数据架构中广泛使用的开源框架&#xff0c;两个框架都各自有各自的开源技术生态系统&#xff0c;用于准备、处理、管理和分析大数据集。 Hadoop 生态系统由四个主要模块组成: HDFS): Hadoop的数据存储系统&#xff0c;用于管理运行在普…

vue3中如何拿到element plus中el-tree多选的值?

在vue3中使用了element plus的el-tree组件 并将其设置为可选择的情况下如何拿到所选择的值&#xff1f; 首先我们要为el-tree设置show-checkbox&#xff08;它的作用是&#xff1a;节点是否可被选择&#xff09;&#xff0c;然后为el-tree绑定ref vue3中的ref跟vue2中的ref获取…

未来十年美业发展方向:健康与美容的结合|美业SaaS系统收银系统源码

随着人们对健康和美容的重视不断增加&#xff0c;美业正在经历一场革命性的变革。未来&#xff0c;美业的发展将更加注重健康与美容的结合&#xff0c;这一趋势将在多个领域产生深远影响。 下面博弈美业为大家阐释「为什么未来美业的发展方向是健康和美容的结合」&#xff1a;…

Java web开发常见中间件多版本下载备用

备注&#xff1a;每次换电脑都要重新构建一下环境&#xff0c;下载找资源很麻烦&#xff0c;官网英文网页找个历史版本看不懂&#xff0c;还要慢慢去搜&#xff0c;所以直接整理一波&#xff0c;需要的自行收藏。 1.nodejs自选版本下载&#xff1a; 地址&#xff1a;https://…

Facebook广告投放如何在节日季脱颖而出

众所周知&#xff0c;节日季是销售的旺季&#xff0c;根据统计基本都集中在年末。所以如果你想在今年的节日季大赚一笔&#xff0c;你需要从现在开始做准备工作&#xff0c;以便敲定你的节日季的营销策略。如果你感兴趣的话就继续看下去吧~ 1、设置转化API 在 Facebook 广告中…

leetcode回文链表

leetcode 回文链表 题目 题解 两种方式进行题解 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, Li…

[rk3399 android11]关闭声卡

使用以下命令查看声卡&#xff0c;可以看到目前有三个声卡 cat /proc/asound/cards 修改设备树 diff --git a/kernel/arch/arm64/boot/dts/rockchip/rk3399-jw-d039.dts b/kernel/arch/arm64/boot/dts/rockchip/rk3399-jw-d039.dtsindex 515334c127..5b592a852f 100755--- a/…

Unity Xcode方式接入sdk

入口 创建 GameAppController 类 继承 UnityAppController 并且在类的实现之前 需要 加 IMPL_APP_CONTROLLER_SUBCLASS(GameAppController)&#xff0c;表明这个是程序的入口。UnityAppController 实现了 UIApplicationDelegate。 可以简单看下 UIApplicationDelegate 的生命周…