ffmpeg 添加 sps pps

ffmpeg 添加 sps pps,第1张

分离某些封装格式(例如MP4/FLV/MKV等)中的H.264的时候,需要首先写入SPS和PPS,否则会导致分离出来的数据没有SPS、PPS而无法播放。H.264码流的SPS和PPS信息存储在AVCodecContext结构体的extradata中。需要使用ffmpeg中名称为“h264_mp4toannexb”的bitstream filter处理。

原有的API已被弃用,新的API如下:

Query

Setup

Usage

Cleanup

ps: FFmpeg给出的例子中并未while循环调用av_bsf_receive_packet,也未对其flush。

https://blogs.gentoo.org/lu_zero/2016/03/21/bitstream-filtering/

Rtmp 分析参见: https://blog.csdn.net/fdsafwagdagadg6576/article/details/109462544

本文主要内容来自:FLV格式详解 https://blog.csdn.net/weixin_42462202/article/details/88661883

该文一层一层介绍了FLV格式. 本文对其内容增加了思维导图并补充了实例.

FLV是一种文件格式.类似的还有Mp4.

将H264,Aac裸流封装成文件格式.

为什么要对裸流做文件格式封装?即FLV文件和原始文件区别?

1 文件播放. 原始文件播放读一帧解析一帧. 没有整体时长,不能拖拽,倍速播放等音视频控制了.

FLV文件因为有FLV tag保存音视频信息。所以可以显示视频时长,播放进度,拖拽,倍速播放等.

2 是协议支持,rtmp协议要求,数据必须Flv格式. rtc协议数据才是裸流。

Flv由 “Flv header” 和 “Flv Body”组成。

Flv Body由一系列的Tag组成,每个Tag又有一个preTagSize字段,标记着前面一个Tag的大小

Header长度一般都是固定的9个字节:

Flv Body由一个一个Tag组成,每个Tag都有一个preTagSize字段,标记着前面一个Tag的大小。

Tag有三种类型, Audio Tag(音频Tag),Video Tag(视频Tag),script Tag(又称Metadata Tag) .

每个Tag由“Tag Header”和“Tag Data”组成.Tag=Tag Header+Tag Data.

对于不同类型的Tag,“Tag Header”的格式都是相同的,“Tag Body”的格式就不一样了.

图片说明:3种tag的tag header格式一样,只有Tag type 域的值不同,分别是08(音频),09(视频),12(script data).

Notes:注意Flv header和Flv tag header是不同的.

下面这张图归纳一下上面讲的内容,看完后对flv应该有个总体的了解了

一般一个flv文件由一个头部信息,一个script Tag,以及若干个video Tag和audio Tag组成。

图片说明:tag之间是previous tag size

2.2.2 每种类型的Tag Data详解

Flv有三种tag:“Audio Tag Data”、“Video Tag Data”、“Script Tag Data”

1)、Audio Tag Data

如果SoundFormat=10,那么 音频数据 就是AAC AUDIO DATA。

notes:音频参数只有一个字节

2)、Video Tag Data

a) 视频参数:

对于H.264数据来说,CodecID = 7。

当CodecID = 7时,视频数据就是 AVCVIDEOPACKET 格式。

b) 视频数据:

下面讲解一下 AVCVIDEOPACKET

以下是 AVCDecoderConfigurationRecord 的结构

notes: SPS/PPS 说明

notes: I,P,B帧.h264 没有start code 0x00 00 00 01

c) 实例分析:

i)Tag Header:

Type:09(Tag的类型,包括音频(0x08)、视频(0x09)、script data(0x12))

Datasize:00 00 2e(Tag Data 部分的大小)

Timestamp:00 00 00(时间戳)

Timestamp_ex:00(时间戳的扩展部分)

StreamID:00 00 00(总是0)

ii) Tag data:

因为CodecID=7,所以视频数据就是AVCVIDEOPACKET格式

因为ACVPaketType==0,所以Data=AVCDecoderConfigurationRecord

该类型Tag又通常被称为MetadataTag,会放一些关于FLV视频和音频的元数据信息如:duration、width、height等。通常该类型Tag会跟在FileHeader后面作为第一个Tag出现,而且只有一个。

notes:用amf语法实现metadata数据key-value存储.amf 数据的都是"类型+[长度]+值"的形式.

结构如下图所示

AMF包:第一个字节表示AMF包的类型

第一个AMF包:

第一个字节一般为0x02,表示字符串,第2-3个字节表示字符串的长度,一般为0x000A,后面跟的就是字符串,一般为"onMetaData"。

第二AMF包:

第一个字节为0x08,表示数组,第2-5个字节表示数组元素个数,后面跟着就是数组的元素,格式为:元素名长度(UI16) + 元素名(UI8[n]) + 元素的值(double),最后以“009”结尾。

常见的数组元素

补充: Nginx-rtmp之 AMF0 的处理 https://www.cnblogs.com/jimodetiantang/p/8975945.html

这篇blog:有具体的抓包实例分析. 对script tag data论述更详细.

notes: amf0和amf3有什么区别?:通常都是amf0, amf3是它的特殊补充.

参见 https://blog.csdn.net/HandSome696/article/details/72518927

图片说明:此图没有对script tag,video tag,audio tag做区分和具体介绍.

其他参考: 多媒体文件格式之FLV: https://www.cnblogs.com/jimodetiantang/p/8992425.html

(有audio,video各个域的详细说明)

在PPT中插入视频的方法有很多,1.直接播放视频、2.插入控件播放视频、3.插入对象播放视频。以下是我为您带来的关于将Flv格式的视频加入到PPT演示文稿中,希望对您有所帮助。

将Flv格式的视频加入到PPT演示文稿中

插入对象播放视频

这种方法是将视频文件作为对象插入到幻灯片中的,与以上两种方法不同的是,它可以随心所欲地选择实际需要播放的视频片段,然后再播放。实现步骤为:

1. 打开需要插入视频文件的幻灯片,单击“插入/对象”命令,打开“插入对象”对话框。

2. 选中“新建”选项后,再在对应的“对象类型”设置栏处选中“视频剪辑”选项,单击[确定]按钮。

3. PowerPoint自动切换到视频属性设置状态,执行“插入剪辑/Windows视频”命令,将事先准备好的视频文件插入到幻灯片中。

4. 执行“编辑/选项”命令,打开选项设置框,在其中设置视频是否需要循环播放,或者是播放结束后是否要倒退等,单击[确定]返回到视频属性设置界面。

5. 点选工具栏中的视频[入点]按钮和[出点]按钮,重新设置视频文件的播放起始点和结束点,从而达到随心所欲地选择需要播放视频片段的目的。

6. 用鼠标左键单击设置界面的空白区域,就可以退出视频设置的界面,从而返回到幻灯片的编辑状态。还可以使用预览命令,检查视频的编辑效果。

在做PowerPoint演讲稿时,为了更加生动你是否有想过加入一些视频?如今网络上四处可见Flv格式的流媒体在线视频,其中有太多好玩的小短片和丰富的演示素材,遇到需要的,能不能把它加入到Powerpoint演示文稿里去呢?

答案是“肯定”的。只要你的电脑可以播放Flash,就可以在Powerpoint里播放Flv在线视频。因为Flv格式的视频是通过调用Adobe的Flash插件来播放的,通过一个“ActiveX控件”就可以轻松地将你喜欢的视频加到你的PowerPoint幻灯片文件里了。

插入控件播放视频

第一步:在PowerPoint文件里插入一个可以播放Flash的“ActiveX控件”

1.首先要确保你的电脑已经安装了Adobe(Macromedia) Flash Player。

如果没有,请点击下载:http://www.jb51.net/softs/74423.html

2.打开需要插入视频的Powerpoint幻灯片页,在菜单中选择“视图/工具栏/控件工具箱”,打开控件工具箱悬浮窗口。

3.点击工具右下角的“其他控件”按钮,会打开一个长长的控件清单,一直往下拖,选择“Shockwave Flash Object”,此时鼠标会变成十字形,如图一。

图一

4.回到页面,单机并拖动鼠标,会出现一个带叉的方格,调整它的大小,这个方格决定视频在在幻灯片中播放时的大小,如图二。

图二

第二步:获取网络视频的链接地址

下面列举一些比较流行广泛的视频网站的视频地址获取方法:

1.YouTube(全世界最大的视频分享网站)

①.找到你需要的YouTube视频,在播放框中点击右下角的“menu”按钮,然后再点击“url”,会出现写有URL的文本框。复制文本框中的所有文字,会得到如“http://www.youtube.com/watch?v=lFv5qxZ6jhc”这样的一个链接。

②.需要对链接地址做一些修改,将其中的“/watch?v=”一段换成“/v/”。得到类似这样的有效地址:http://www.youtube.com/v/=lFv5qxZ6jhc。

图三

2.土豆网

在土豆网找到需要的视频,在视频播放页面中,点击视频下方的“如何转贴土豆视频”,在d出的提示框中复制“2.把播放器显示到个人空间或Blog”一栏的地址即可。

图四

3.优酷网和我乐网

优酷网在播放页面视频右方,我乐网在播放页面视频的下方,可以看到写有视频地址的文本框,复制即可。

其他视频网站获取方法类似,关键就是找出带播放器的视频的原链接地址,在此我就不一一列举了。

猜你喜欢:

1. 如何在ppt中添加视频播放按钮

2. 如何在ppt中加入视频链接

3. 怎么在ppt中加入视频链接

4. 如何将视频文件插入到ppt中

5. wps演示如何保存为视频格式


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11723212.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存