自定义文件格式和编解码器?

2024-03-27

我已经被编解码器问题弄乱了好几天了,但仍然看不到全局。这是我第一次处理音频/视频格式和编解码器。所以我真的需要一些帮助。 这是工作。

我正在编写几个负责编码和解码自定义 mpeg 文件的组件。在标准解/压缩过程(对于音频和视频)之上,我将实现一些自定义解/加密。为此编写编解码器和软件库。列出了我无法弄清楚的事情。

  • 对于WMP,编解码器定位策略是什么?
  • 例如,如何区分自定义文件格式和 mpeg-3 格式。这方面的标准和编程结构是什么? (真正让我搞砸的是容器格式、视频格式、fourcc代码等,快把我逼死了)
  • 对于 Windows 上的这项工作,您建议使用什么方法编写编解码器(DMO 或 Filter)

我希望在您的帮助下解决列出的问题。信息和一些有用的链接将不胜感激。除了 MSDN :) 因为我找不到我正在搜索的内容。


对于 WMP,编解码器位于什么位置 政策。

在 Windows Media Player 7.0 之前,它只是一个纯粹的 DirectShow 播放器。从 7.0 开始,Microsoft 开始以不同的方式处理不同的文件类型。 WMV 文件大多属于这种情况。 WMP 现在将在 Vista 和 7 中使用 MediaFoundation 媒体管道来处理某些文件类型。

如何区分我的自定义文件 例如 mpeg-3 格式。 标准和编程是什么 为此的结构。 (真正的部分是我 搞砸了就是这个。容器格式, 视频格式、fourcc 代码...等 快把我逼死)

You 可以做到这一点 http://msdn.microsoft.com/en-us/library/aa931399.aspx(哈哈,抱歉 MSDN 链接),如果您正在创建自己的自定义容器格式,但如果您想让自己的生活更轻松,我会选择现有的和/或开源容器,例如 AVI 或 MKV 。当您以这两种格式之一创建流时,您需要提供编解码器代码,例如用于视频的 fourcc 或用于音频的格式标记。由于您正在使用自己的自定义格式,因此您应该只创建自己的 fourcc 或格式标记值,但要小心不要选择人们已经使用的一种。

假设您使用的是 AVI。内置的 avi 解复用器将读取 AVI 标头并查看文件中每个流的元数据。它可能会找到带有 fourcc DX50 的视频流和带有 WAVE_FORMAT_PCM 格式标记的音频流。 DirectShow 将枚举已注册的过滤器并查询其引脚以查看它们是否支持拍摄 DX50 视频或 WAVE_FORMAT_PCM 音频。因此,如果 AVI 有一个 XXXX 的 fourcc,DirectShow 会枚举过滤器来查找采用 XXXX 的类型。然后,您将创建一个接受 fourcc XXXX 的转换过滤器。您的转换过滤器将对视频进行解码并输出未压缩的格式。也许是 RGB24。 DirectShow 将检测您的输出引脚输出该媒体类型,并可能将其直接连接到渲染器。音频的过程是相同的,除了我们处理格式标签而不是 fourccs(并且您处理 WAVEFORMATEX 和 VIDEOINFOHEADER)。

For this work on Windows what method do you suggest to write codec(DMO or Filter)

我个人从未写过 DMO,但我强烈建议您研究一下。我听说有更少的样板 COM 东西和 IIRC,MediaFoundation 有一个 DMO 包装器,所以你可以获得自动 MediaFoundation 支持。

除了 DShow SDK 示例之外,您可能还想检查out this http://www.gdcl.co.uk/mpeg4/。可以帮助您入门。还这个网站 http://tmhare.mvps.org/downloads.htm也有很棒的样品,但可能不完全是您想要的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义文件格式和编解码器? 的相关文章

  • 我可以从带时间戳的图像创建 VFR 视频吗?

    首先 我对图像制作视频的经验几乎为零 我拥有的是一组带有 BMP 时间戳的图像 我想从中生成视频 由于时间戳的间隔不相等 我不能简单地使用从图像创建恒定帧速率视频的软件 一个可能的解决方案是在固定的时间间隔创建人造图像 但如果我无法制作 V
  • ffmpeg drawtext如何设置从右到左的方向

    i write arabic text to videos and it works fine but the issue is that the arabic language is written from right to left
  • MATLAB:让audioplayer()在函数结束后继续播放

    我正在使用使用以下子函数的代码 function playTone duration toneFreq Generate a tone samplesPerSecond 44100 the bit rate of the tone y si
  • Firefox:drawImage(视频)失败并显示 NS_ERROR_NOT_AVAILABLE:组件不可用

    尝试打电话drawImage with a video其来源是网络摄像头源似乎在 Firefox 中失败了NS ERROR NOT AVAILABLE Component is not available 我尝试等待视频标签触发的每个事件
  • 如何使用 opencv 从字节显示视频?

    我正在开展一个项目 其中我们使用无线电调制解调器将数据 视频和遥测 从无人机传输到地面站 我们需要做的是实时显示视频 并能够知道 C 中的每一块遥测数据对应哪一帧 数据被解封装为遥测和视频 mpeg4 字节 由于我对 OpenCV 有一些经
  • 如何获取 mp3 文件的封面?

    我有一个 mp3 文件 当我用 Windows Media Player 阅读它时 它有专辑的封面 所以我想知道是否有办法在 javascript 或 jQuery 中获取该封面 请访问以下网址了解更多内容 http www richard
  • 从头开始创建 mp3 文件 C#

    作为一些实验的一部分 我想到了一些事情 如何在 C 中从头开始创建一个 mp3 文件 这实际上听起来像什么 例如 创建一个播放音符的 mp3 文件 C 或 B 降调 我怎样才能实现这一点 它必须是 mp3 文件 而不是 wav 或其他任何文
  • C++/OpenCV - 用于视频稳定的卡尔曼滤波器

    我尝试使用卡尔曼滤波器稳定视频以进行平滑 但我有一些问题 每次 我都有两帧 一帧是当前帧 另一帧是当前帧 这是我的工作流程 计算 goodFeaturesToTrack 使用 calcOpticalFlowPyrLK 计算光流 只保留优点
  • 为什么我的音频不倒带?

    我在 Javascript 中倒带音频时遇到了一些问题 我基本上有一个倒计时 当倒计时接近结束时 每秒都会发出蜂鸣声 我尝试使用 var bip new Audio http www soundjay com button beep 7 w
  • 使用 jQuery 将播放/暂停/结束功能绑定到 HTML5 视频

    我正在尝试绑定play pause and ended使用 jQuery 的事件但有一个问题 当我右键单击视频并选择播放或暂停时 图标会正确更改 当我单击播放按钮时 它会更改为暂停 但如果我单击暂停按钮继续播放视频 它不会更改为再次播放 谁
  • 如何在 iOS 和 macOS 上的 Safari 中使用网络摄像头录制视频?

    我已经发布了几条路径 1 录制视频https caniuse com feat html media capture https caniuse com feat html media capture但它仅适用于 iOS 并且无法自定义 我
  • Clojure/Java:用于声音频谱分析的 Java 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以接受大量音频数据并返回给定频带内随时间变化的平均幅度的库 我已经在 comp dsp
  • 如何在 DirectShow 或 Media Foundation 中拍摄静态照片

    有没有办法使用 DirectShow 或 Media Foundation API 制作照片 静态图像 我的视频捕捉工作正常 我可以捕捉第一帧并收工 但这不是照片 通常相机具有不同的视频和照片模式 其中照片模式可提供更高的分辨率 例如 我有
  • 使用音频单元录制我的 iPhone 应用程序播放的声音

    我今天有很多有趣的事情iOS 和音频单元并发现了很多有用的资源 包括在内 首先 我对某些事情感到困惑 是否真的有必要创建一个音频图 with 混合器单元录制应用程序播放的声音 或者播放声音就足够了ObjectAL https github
  • HTML5 视频结束倒计时

    我可以对 HTML5 视频的结束进行倒计时吗
  • 如何使用python将下载的音频文件扩展名重命名为mp3

    目前 我正在尝试根据艺术家姓名和歌曲标题将 YouTube 音乐视频下载为音频文件 下载所有视频后 我尝试将所有音频文件从 webm 或 mp4 扩展名重命名为 mp3 但似乎我在将文件名和扩展名更改为 mp3 时遇到了一些错误 我的代码基
  • VideoView SeekTo 在不同设备上工作异常 - Android

    我在视频视图上使用此代码来寻求自定义位置 但它在三星设备上工作正常 但在索尼设备上 视频寻求开始位置 开始 我想让视频回到上次暂停的位置 创建视频视图 VideoView mVideoPlayer setVideoPath ViDpath
  • 使用 ffmpeg 将视频与其自身连接,但相反

    我能够逆转 ffmpeg i input mp4 vf reverse output reversed mp4 我可以连接 ffmpeg i input mp4 i input mp4 filter complex 0 0 0 1 1 0
  • 如何使用 AVFoundation 组合不同方向的视频剪辑

    我正在尝试使用 AVFoundation 将多个视频剪辑合并为一个 我可以使用下面的代码使用 AVMutableComposition 创建单个视频 AVMutableComposition composition AVMutableCom
  • 将 H264 视频转换为原始 YUV 格式

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

随机推荐

  • 根据值将逗号分隔的数字列拆分为多列

    我有一个专栏f在我的数据框中 我想根据该列中的值扩展到多个列 例如 df lt structure list f c NA 18 17 10 12 8 17 11 6 18 12 12 NA 17 11 12 Names f row nam
  • 使用特定的 url 地址从 java 代码关闭浏览器

    1 我想使用我的java代码中的url地址关闭特定的浏览器选项卡 因为它是一个客户端服务器应用程序 我想使用客户端应用程序中的 url 地址关闭浏览器选项卡 服务器端将有一个 jar 它将与客户端请求进行通信 并从客户端获取 url 并根据
  • JSON.NET序列化没有属性名称的字典[重复]

    这个问题在这里已经有答案了 大家 我有字典属性名称的 json 序列化问题 这是我的代码 public class MyClass public string A get set public string B get set public
  • 用于调试的 YII 日志记录

    在很多情况下 Xdebug不适合调试 因为它涉及点击运行到特定的代码行 我想使用类似的东西cakePHP调试功能 供开发人员将类的特定属性的值输出到浏览器 我在用Yii framework这是我的配置yii log in the main
  • 如何实例化对象的静态向量?

    我有一个 A 类 它有一个静态对象向量 对象属于 B 类 class A public static void InstantiateVector private static vector b vector of B 在函数 Instan
  • 修改现有的 Android ROM 以控制用户操作

    我正在为客户创建一个 Android 应用程序 该应用程序将预安装并与手机一起分发 现在客户要求我锁定 ROM 以防止未来的用户使用除此应用程序之外的任何其他应用程序 IE 没有浏览 没有电子邮件 没有任何可能产生任何费用的东西等 现在 经
  • 在 CMD 批处理脚本中调用标签时如何利用超过 9 个参数?

    我想知道如何在调用标签时在批处理脚本中调用超过 9 个参数 例如 下面显示我分配了 12 个参数 并尝试回显所有这些参数 CALL LABEL one two three four five six seven eight nine ten
  • Kafka消费者默认组ID

    我正在使用 Apache Kafka 及其 Java 客户端 我发现消息在属于同一组的不同 Kafka Consumer 之间进行负载平衡 即共享相同的组 id 在我的应用程序中 我需要所有消费者阅读所有消息 所以我有几个问题 如果我没有在
  • 在 IntelliJ IDEA 中编写并运行 pyspark

    我正在尝试在 IntelliJ 中使用 Pyspark 但我不知道如何正确安装它 设置项目 我可以在 IntelliJ 中使用 Python 并且可以使用 pyspark shell 但我无法告诉 IntelliJ 如何查找 Spark 文
  • 如何在Python中导入其他项目的函数?

    我在一个项目中有一些代码 我想在另一个项目中重用它们 我需要做什么 在两个文件夹中 才能执行此操作 目录结构类似于 Foo Project1 file1 py file2 py Bar Project2 fileX py fileY py
  • 在单个查询中获取分页行和总计数

    核心要求 查找 a 的最新条目person id by submission date对于指定的过滤条件type plan status 可能有更多这样的过滤器 但无论如何 按提交日期返回最新的逻辑是相同的 有两个主要用途 一是在 UI 中
  • Android setContentView 还是 Intents?

    我有一个非常简单的 2 屏幕 Android 应用程序 简单地通过 setContentView 切换布局有什么缺点吗 或者我应该使用意图吗 如果出现问题 我不想打扰我的应用程序 另一件需要考虑的事情是 活动形成了stack http de
  • 从重叠的日期范围中获取不同的连续日期范围

    我需要从重叠日期列表中获取彼此不重叠的日期范围列表 并获取重叠期间的硬币总和 我尝试过用谷歌搜索一个例子 但到目前为止还没有运气 我可能没有使用正确的关键词 我有一个重叠日期的列表 1 1 2018 31 1 2018 80 7 1 201
  • 有没有一种方法可以使用 JavaScript 在网页中漂亮地打印 JSON?

    在我看来 漂亮打印 JSON 是一个足够简单的任务 JavaScript 应该能够处理它 有没有人编写过 或运行过 JavaScript 函数来执行此操作 执行此操作的一个简单方法是执行 JSON stringify data null w
  • 导入 go 包时出现问题

    这是我的代码结构 addition summing sum prg go addition go go mod go mod 的内容 module addition go 1 14 sum prg go 的内容 package summin
  • 如何在 Haskell 中查找运行时的核心数量

    Haskell 是否有一种方法可以确定运行时机器上存在的 CPU 核心数量 是的 有这样的方法 来自 现实世界 Haskell 的代码 http book realworldhaskell org read concurrent and m
  • 如何在eclipse中导入Jdeveloper java项目?

    我在 Jdeveloper 中有一个 java 项目 但我想将该项目迁移到 eclipse java 项目 你知道该怎么做吗 或者我必须手动导入它吗 提前致谢 通常 如果项目是基于 Web 的项目或 java 项目 则它有其结构 您应该能够
  • 无法在 VS2015 Enterprise 中使用 Microsoft Fakes - 缺少 COR_PROFILER

    我正在尝试在 VS 2015 Enterprise 中使用 Microsoft Fakes 我什至无法运行任何测试 我没有 testsettings 或 runsettings 文件 简单的测试项目参考 Microsoft QualityT
  • 与 Objective C 相比,Swift SHA256 加密返回不同的加密字符串

    我正在将一些代码从 Objective C 迁移到 Swift 我想在 swift 中使用 SHA 256 算法用密钥加密字符串 但与 Objective C 实现的 swift 代码相比 返回不同的加密字符串 两个代码看起来相同 只是语法
  • 自定义文件格式和编解码器?

    我已经被编解码器问题弄乱了好几天了 但仍然看不到全局 这是我第一次处理音频 视频格式和编解码器 所以我真的需要一些帮助 这是工作 我正在编写几个负责编码和解码自定义 mpeg 文件的组件 在标准解 压缩过程 对于音频和视频 之上 我将实现一