如何用 SPS 和 PPS 数据填充 AVCodecContext 的“extradata”字段?

2023-11-29

问题是这样的:当解码 H264 流时ffmpeg,我可以获得SPS和PPS的原始数据,但我不知道如何将它们填充到extradata现场AVCodecContext。没有extradata,我无法正确解码帧。每次我打电话avcodec_decodec_video2,返回值为正,但got_picture旗帜永远是zero.

我正在处理的流看起来像这样:

[0x67]...[0x68]...[0x61]...[0x61]...  .......  [0x61]...[0x67]...[0x68]...  ......

您提到的数据是保存 SPS 和 PPS 的 NAL 单元的字节流。extradata反过来,需要一个指向 AVC 解码器配置记录的指针,这是经过额外格式化的数据。

有关详细信息,请参阅 MPEG-4 第 15 部分“高级视频编码 (AVC) 文件格式”第 5.2.4.1 节。

5.2.4.1.1 Syntax 

aligned(8) class AVCDecoderConfigurationRecord { 
   unsigned int(8) configurationVersion = 1; 
   unsigned int(8) AVCProfileIndication; 
   unsigned int(8) profile_compatibility; 
   unsigned int(8) AVCLevelIndication;  
   bit(6) reserved = ‘111111’b;
   unsigned int(2) lengthSizeMinusOne;  
   bit(3) reserved = ‘111’b;
   unsigned int(5) numOfSequenceParameterSets; 
   for (i=0; i< numOfSequenceParameterSets;  i++) { 
      unsigned int(16) sequenceParameterSetLength ; 
  bit(8*sequenceParameterSetLength) sequenceParameterSetNALUnit; 
 } 
   unsigned int(8) numOfPictureParameterSets; 
   for (i=0; i< numOfPictureParameterSets;  i++) { 
  unsigned int(16) pictureParameterSetLength; 
  bit(8*pictureParameterSetLength) pictureParameterSetNALUnit; 
 } 
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用 SPS 和 PPS 数据填充 AVCodecContext 的“extradata”字段? 的相关文章

  • Android 上的 GStreamer

    谁能给我一些关于让 GStreamer 在 Android 上工作的提示 我以前从未使用过它 我想将它与 FFmpeg 一起使用 我已经编译了 FFmpeg 并且在 Android 上运行良好 我只是想使用 GStreamer 来帮助完成一
  • 是否可以使用 S3 进行 Flash 伪流?

    我一直在使用 S3 来存储和提供 FLV 和 MP4 视频 它效果很好 但内容是渐进下载的 我想知道是否有可能让所谓的 伪流 与 S3 一起使用 伪流允许观看者在下载完整视频之前在视频中向前搜索 并仅将必要的位发送到 Flash 播放器 我
  • 将 H264 视频转换为原始 YUV 格式

    是否可以使用 ffmpeg 从 H264 编码视频创建原始 YUV 视频 我想用 matlab 打开视频并逐帧访问 Luma Cb 和 Cr 分量 是的 您可以 您只需指定像素格式即可 要获取格式的完整列表 ffmpeg pix fmts
  • 将 CIFilter 与 AVFoundation 结合使用 (iOS)

    我正在尝试将滤镜应用于在 iOS 上使用 AVFoundation 创建的视频合成 滤镜可以是模糊 像素化 棕褐色等 我需要实时应用效果并能够将复合视频渲染到磁盘 但我很高兴从其中之一开始 不幸的是 我似乎无法弄清楚这一点 这是我能做的 我
  • 使用 libx264 为 Raspberry pi 编译 Xuggler 时的问题 #2

    我正在尝试编译Xuggler http www xuggle com xuggler 对于 Raspberry Pi 在 Debian 操作系统上运行 又名 Raspbian 我遵循了可用的 基本构建说明 here http www xug
  • C# - 捕获 RTP 流并发送到语音识别

    我正在努力实现的目标 在 C 中捕获 RTP 流 将该流转发到 System Speech SpeechRecognitionEngine 我正在创建一个基于 Linux 的机器人 它将接受麦克风输入 将其发送给 Windows 机器 Wi
  • Android VideoView 中纵向视频方向错误

    我在 Android 设备上以肖像方向拍摄新视频 如下所示 Intent intent new Intent android provider MediaStore ACTION VIDEO CAPTURE startActivityFor
  • 如何使用Java将h.264直播流编码为RTP数据包

    我正在为 Android 操作系统开发一个应用程序 我需要来自摄像机的实时解码视频流 该视频流使用 h 264 编解码器进行编码 将帧数据转换为 RTP 数据包并将数据包发送到服务器 首先 可以尝试在 PC 上实现从 HDD 中预先录制的视
  • Android - 如何合并两个视频

    基本上 我正在寻找一种将两个 mp4 视频文件 在 SD 卡上 组合在一起的方法 更像是在第一个视频的末尾附加第二个视频 我进行了很多搜索 但找不到合适的解决方案 好吧 我根本找不到任何解决方案 所以我的问题是 是否有一个库可以组合 并可能
  • 如何在 Jekyll 博客中包含视频标签/mp4 视频

    I am not寻找一种方法链接到 YouTube https stackoverflow com questions 10529859 how to include video in jekyll markdown blog 122738
  • 适用于 iPhone 和 HTTP 直播的实时视频聊天

    所以一般来说 我想为 iPhone 制作一个具有视频聊天功能的应用程序 但经过多次搜索 我仍然找不到任何成功的结果 是否有任何公共或私有 API 可用于在 iPhone 上执行此操作 如果您的答案是 是 请帮助我 基本上 我想要的是读取连接
  • Python 子进程(ffmpeg)仅在我按 Ctrl-C 程序时启动?

    我正在尝试使用 Cygwin 和 Python 2 7 并行运行一些 ffmpeg 命令 这大概是我所拥有的 import subprocess processes set commands ffmpeg i input mp4 outpu
  • 需要使用 iFrame API 隐藏 YouTube 品牌

    我正在使用 YouTube iFrame API 在我的自定义播放器 javascript 播放器 中加载视频 我需要隐藏 Youtube 品牌 但是在 iOS 设备上 它显示带有以下参数的徽标 playerVars fs 1 autopl
  • 在 Chrome 中为

    我已经看到这个问题多次出现 但没有任何明确的解决方案 我正在加载一个简单的视频
  • 如何使用 ffmpeg 将两个视频/音频流混合为一个

    我有两个视频 v1 flv 和 v2 flv 想要创建 v3 flv 其中包含来自 v1 flv 的视频流以及来自 v1 flv 和 v2 flv 的 混合 音频流 使用 ffmpeg 命令可以实现类似的操作吗 谢谢 我认为使用 ffmpe
  • 在 MacOS 终端上运行 ffmpeg [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我对 MacOS 相当陌生 我发现使用终端来获取信息并不容易ffmpeg和我在 Window 上一样正常运行 我有 ffmpeg 二进制文件ffmpe
  • 了解 JavaScript - 资源

    使用 StackOverflow 的微型 Digit Blog 功能进行描述here https stackoverflow com about 我想发布以下我刚刚看到的 我觉得很有趣的谷歌技术谈话视频 我一直在理解 javascript
  • 在 macOS 上为 MoviePy 安装 ffmpeg 失败并出现 SSL 错误

    我正在尝试编写一个 Python 程序 在 Mac OS 10 11 16 上使用 MoviePy 将 MP4 文件转换为 GIF 我用 import moviepy editor as mp 我收到一条错误消息 说我需要打电话imagei
  • 来自相机的 MediaCodec 视频流方向和颜色错误

    我正在尝试流式传输视频捕获直接从相机适用于 Android 设备 到目前为止 我已经能够从 Android 相机捕获每一帧预览帧 byte data Camera camera 函数 对数据进行编码 然后成功解码数据并显示到表面 我用的是安
  • Python:如何下载 blob url 视频?

    我想使用 Python 脚本从网站下载视频 但是该视频由如下 Blob URL 提供

随机推荐

  • 如何在自定义下拉功能区控件上设置所选项目

    我正在使用自定义 UI 编辑器为 Excel 创建一个自定义选项卡 其中有两个 DropDown 控件 我们将它们称为 DropDown1 和 DropDown2 我的目标是 每当我更改 DropDown1 选择时 它都会自动更改 Drop
  • 系统找不到启动 Ruby 和 Rails 命令提示符时指定的路径

    我一周前刚开始学习 Rails 直到今天一切正常 现在 当我启动 Ruby 命令提示符时 它会显示 The system cannot find the path specified Under Rails Environment Conf
  • 适用于所有浏览器的弹出框

    我目前正在使用 window open url blur window focus 但这只能在 Chrome 中正常工作 在 IE 中 窗口在加载完成后会重新出现 在 Firefox 中 窗口根本不会下降 别担心 这个弹出窗口不会令人厌烦
  • 来自非托管代码的 System.AccessViolationException?

    我正在编写这个库 它通过将由托管代码使用的媒体基础框架在 C CLI 中实现一些基本的音频播放器功能 我可以很好地播放音频 停止 暂停等 对于任何不熟悉 Media Foundation 的人 媒体会话都会发布您可以处理通知的事件 这是通过
  • 9 补丁可绘制行为糟糕,奇怪的人工制品 - 这里出了什么问题?

    所以我正在尝试 9 补丁图像 我从一个 PNG 文件开始 其中有一个带圆角的半透明正方形 然后 我创建了 9 patch 如下所示 注意顶部和左侧的小点 我认为这足以处理这个问题 但是当将这个 9 补丁添加到 Eclipse 时 我得到了奇
  • Objective C - 分配、复制、保留

    我是 Objective C 的新手 我有 C 的基础知识 包括指针的概念 我有两个基本问题 有人可以用一些类比来解释分配 复制和保留之间的区别吗 如何处理返回指针变量的函数 以及如何通过返回指针执行消息传递 更改文档的更新答案 这些信息现
  • windows下如何获取cpu的实际核心数? [复制]

    这个问题在这里已经有答案了 我知道 std thread hardware concurrency 的存在 但它返回虚拟核心的数量 当其针对物理核心数量时 该算法的工作效果最佳 提高 5 10 我怎样才能在 Windows 上用 C 获得这
  • Out-Host 是否正在缓冲?

    我有一个函数 我在其中调用一个应用程序 操作员 该应用程序生成几行命令行输出 下载一些文件 并返回一个字符串 app exe Out Host var return var 看来 控制台上出现了由app exe仅在那之后app exe终止
  • 如何快速检查字符串中是否有正确的英文单词? - Python

    我在 pandas 数据框中有一列 其中每个单元格都包含一串相当长的单词 这些字符串来自 SQL 数据库 包含非英语的单词和字母数字 ID 短语的混合 并以空格分隔 这些字符串最多可达 SQL 的最大字符数 这也不是一个小数据框 我有几百万
  • 从 firebase 中删除项目而不会使应用程序崩溃

    我是 android 新手 我一直在玩this来自 firebase 的示例应用程序 我想添加一个删除按钮发布详细活动它通过将 DatabaseReference mPostReference 设置为 null 来从数据库中删除当前正在查看
  • 无法使用 cordova-plugin-statusbar 设置状态栏的颜色

    我正在尝试更改离子应用程序中本机状态栏的颜色 但无法使其工作 我已经安装了 cordova plugin statusbar 并且安装得很好 下面的代码可以完美运行 if StatusBar StatusBar hide 但尝试使用任何其他
  • IE8后退按钮和动态内容

    我有一个页面 它提取外部 JavaScript 文件 然后该文件动态生成一些内容到该页面中 基本上插入一些 DIV 和 Flash 对象 当用户离开此页面然后按 后退 按钮时 Safari 和 Firefox 会显示生成的内容 但 IE 8
  • javaFX Tableview 数据不可见

    我尝试了所有方法来用数据填充 TableView 下一个代码在表中插入新行 但数据未出现在表中 我试图为此找到一个解释 但没有成功 请帮忙 我不知道出了什么问题 在控制器 java中 FXML private TableView
  • 如何使 llvm jit 在 MSVC++ 中工作

    看来 LLVM 中的 Kaleidoscopy 示例已经被破坏了 至少在 MSVC x64 中已经被破坏了一段时间 也许几个月 出于同样的原因 它在 MCJIT 和新的 Orc JIT 框架中不起作用 Get the address of
  • 根据关联模型的总和对玩家进行排序

    我有一个6500的数据库players每个玩家平均有15场比赛results Use case 我想生成一个玩家列表 按以下顺序排序sum他们的prize金钱 结果表中的一个字段 我更喜欢它在某种范围内 所以我还可以过滤玩家所在国家 地区的
  • 链接 PHP PDO 查询

    我不确定 链接 是否是正确的术语 但我要问的是是否可以进行类似于此 MySQLi 查询的 PDO 查询 sql mysqli fetch object db gt query SELECT username FROM member WHER
  • 由于 JavaScript 中不保证对象中的属性顺序,JSON.stringify() 的实际行为如何?

    Since JavaScript 中不保证对象中的属性顺序 如何JSON stringify 实际上表现如何 以下内容总是正确的 同一对象 吗 const o a 1 b 2 console log JSON stringify o JSO
  • ESRI:无法解析源映射

    我在 Google Chrome 开发者控制台中收到此错误 无法解析 SourceMap http localhost 15132 Scripts External igniteui css themes infragistics infr
  • https url 中的用户名和密码

    考虑一下网址 https foo 电子邮件受保护 上例中的用户名 密码部分是否符合 URL 参数 的条件 如中所定义这个问题 当您将用户名和密码放在主机前面时 该数据不会以这种方式发送到服务器 相反 它会根据所使用的身份验证模式转换为请求标
  • 如何用 SPS 和 PPS 数据填充 AVCodecContext 的“extradata”字段?

    问题是这样的 当解码 H264 流时ffmpeg 我可以获得SPS和PPS的原始数据 但我不知道如何将它们填充到extradata现场AVCodecContext 没有extradata 我无法正确解码帧 每次我打电话avcodec dec