Windows环境下 VS2022 编译 OGG 源码

news2024/11/16 19:52:39

OGG

  1. OGG音频编码格式,全称为Ogg Vorbis,是一种开源且无专利限制的音频压缩格式。它被设计用来提供高质量的音频存储和传输,同时保持较小的文件大小。OGG Vorbis支持多声道音频,并且可以处理可变比特率,这意味着它可以根据音频内容的复杂性动态调整压缩率,以优化音质和文件大小。

  2. OGG格式的一个显著特点是它使用了一种称为Vorbis的编码技术,这种技术通过使用更先进的声学模型来减少数据损失,从而在相同的位速率下提供比MP3更好的音质。此外,OGG文件的设计允许它们在未来的任何播放器上播放,这意味着OGG格式具有很好的前瞻性和兼容性。

  3. OGG音频格式支持类似于MP3的ID3信息,包括一个灵活而又完整的注释栏,可以填写各种相关信息。它还支持流式播放,这使得OGG格式非常适合在线音乐存储和流媒体服务。OGG格式的文件结构允许每个页之间相互独立,包含所需信息,页的大小可变,通常为 4KB 至 8KB,最大不超过 65307 字节。

  4. 尽管OGG Vorbis在音质和压缩效率方面具有优势,但它在某些设备和软件上的兼容性可能不如MP3等更流行的格式。然而,随着技术的发展和开源社区的支持,OGG格式在音频爱好者和专业音频应用中的使用正在逐渐增加。

OGG 优点

OGG音频编码格式,特别是使用Vorbis编解码器时,在音质上具有以下优势:

  1. 更高的压缩效率:OGG Vorbis能够在较低的比特率下提供与MP3相同甚至更好的音质。这意味着在相同的文件大小下,OGG能够提供更清晰的音频。

  2. 支持更高的采样率:Vorbis编解码器支持更高的采样率和采样精度,这可以捕捉到更广泛的音频频率和动态范围,从而提供更丰富的音质细节。

  3. 多声道支持:OGG格式可以对所有声道进行编码,支持多声道模式,而不像MP3只能编码双声道。这对于欣赏电影和交响乐等多声道音频内容时,能够提供更加沉浸式的听觉体验。

  4. 可变比特率和平均比特率编码:OGG Vorbis支持VBR(可变比特率)和ABR(平均比特率)两种编码方式,这使得编码过程更加灵活,可以根据音频内容的复杂性动态调整压缩率,优化音质和文件大小。

  5. 开源和无专利限制:OGG Vorbis是完全开源的,没有专利限制,这意味着用户可以自由地使用它而无需支付任何许可费用,同时也鼓励了技术的创新和发展。

  6. 更好的错误容忍性:OGG文件即使在受损的情况下也能更好地恢复播放,这使得它在网络传输和流媒体应用中更加可靠。

  7. 支持元数据:OGG格式支持丰富的元数据,包括曲目标题、艺术家姓名、专辑信息等,这使得音频文件的管理更加方便。

OGG 缺点

OGG音频编码格式虽然在音质、压缩效率和开放性方面具有优势,但也存在一些缺点:

  1. 兼容性问题:OGG格式可能不如MP3等更流行的格式那样广泛兼容,尤其是在一些较旧或更受限制的设备和软件中。

  2. 普及度较低:与MP3相比,OGG格式在主流应用中的普及度较低,用户对它的熟悉度不高,这可能会影响其在某些场合的使用。

  3. 专业软件支持有限:一些专业的音频制作软件可能不支持OGG文件格式,这限制了它在专业音频处理领域的应用。

  4. 市场接受度:由于MP3等格式已经在市场上占据了主导地位,OGG格式要想获得更广泛的接受和使用可能会面临挑战。

  5. 播放设备支持:许多便携式播放器和移动设备可能不支持OGG格式,这限制了OGG文件在这些设备上的播放能力。

  6. 多声道系统的挑战:在多声道音频领域,OGG面临着DOLBY、DTS等已经建立的市场和技术标准的挑战。

  7. 高解析音频的兴起:随着高解析音频(HIRES)的流行,有损压缩格式如OGG可能会逐渐失去市场份额,因为用户对音质的要求越来越高。

Windows下VS2022编译 OGG 源码过程

  1. 官网地址:https://caniuse.com/ogg-vorbis,可以看到OGG支持较多浏览器应用。
    在这里插入图片描述

  2. 官网文档:https://www.xiph.org/vorbis/doc/Vorbis_I_spec.html

  3. wiki百科介绍:https://en.wikipedia.org/wiki/Vorbis

  4. 官网git地址:https://github.com/xiph/ogg

  5. 从ShiftMediaProject项目集中下载OGG源码项目进行编译,应该也是从官方源码fork过来的。
    在这里插入图片描述

  6. 打开下载下来的OGG源码中SMP文件夹,这就是利用VS编译的核心文件夹。
    在这里插入图片描述

  7. 点击SMP文件夹中,即可用VS2022打开。
    在这里插入图片描述

  8. 右键libogg,“生成”,一小段时间后,即可生成对应的lib库文件和相应的头文件以及版本信息文件。
    在这里插入图片描述

  9. 需要注意的是,指定的输出目录是msvc的相对路径目录,可以根据的需求在项目属性中配置输出目录路径。
    在这里插入图片描述

  10. 也可以将SMP直接拷贝到指定的OGG源码版本,或者自己优化调整过的OGG源码中,利用VS进行源码编译。

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

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

相关文章

分享从零开始学习网络设备配置--任务6.3 使用基本ACL限制网络访问

任务描述 某公司构建了互联互通的办公网,为保护公司内网用户数据的安全,该公司实施内网安全防范措施。公司分为经理部、财务部和销售部,分属3个不同的网段,3个部门之间用路由器进行信息传递。为了安全起见,公司领导要求…

npm 清除缓存

npm cache clean --forcenpm cache verify# 安装依赖 npm install# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题 npm install --registryhttps://registry.npmmirror.com npm彻底清理缓存_npm cache verify-CSD…

OpenCV仿射变换和透视变换函数(C++)

文章目录 引言图像仿射变换 warpAffine()图像的旋转仿射变换 透视变换 warpPerspective()透视变换例子参考文献 **仿射变换相关函数** cv::transform():对一组点进行仿射变换 cv::warpAffine():对整幅图像进行仿射变换 cv::getAffineTransform()&#xf…

[基于 Vue CLI 5 + Vue 3 + Ant Design Vue 4 搭建项目] 01 安装 nodejs 环境

文章目录 下载安装测试 这里让我们去看看如何安装一下 nodejs 的环境 下载 通过官网进行下载安装包 官网 https://nodejs.org/zh-cn点击 下载 Node.js (LTS) 开始下载 安装 下载完成之后,双击进行安装 开始进行安装了 这样,node.js 就安装好了 测试 …

Ubuntu下使用Cron定时任务

Ubuntu下使用Cron定时任务 文章目录 Ubuntu下使用Cron定时任务概述Cron 工作原理crontab的基本指令使用Cron 定时任务语法用户的crontab 文件系统的crontab 文件cron 任务设置环境变量1. 直接在 crontab 中声明变量2. 将变量声明为命令的一部分3. 从文件加载变量使用环境变量控…

网络基础入门指南(二)

一、什么是交换机 交换机,Switch 用于将多台计算机/交换机连接到一起,组建网络 交换机负责为其中任意两台计算机提供独享线路进行通信类型: 非网管(即插即用),便宜,不可管理 网管&#xff0…

CCF推荐C类会议和期刊总结:(计算机体系结构/并行与分布计算/存储系统领域)

中国计算机学会(CCF)在计算机体系结构、并行与分布计算、存储系统领域推荐了一系列C类会议和期刊。此汇总涵盖了各期刊和会议的全称、出版社、dblp文献网址及研究领域,为学者和研究人员提供了重要的学术交流资源。列表包括《ACM Journal on E…

Javase复习day21算法、arrays、Lamdba表达式

常见算法 查找算法 基本查找 package search;public class BasicSearchDemo1 {public static void main(String[] args) {//基本算法(顺序查找)int[] arr {131,23,57,37,95,48,57,43};System.out.println(basicSearch(arr, 43));}public static boo…

基于PINN 进行混合流体中的热量与质量扩散预测

近年来,物理信息神经网络(PINN,Physics-Informed Neural Networks)成为解决复杂物理问题的一种强大工具。PINN 的核心在于结合物理定律和机器学习的能力,直接从偏微分方程(PDEs)出发&#xff0c…

LDtk to Unity 大致流程和一些注意点

因为自己也还在探索中,所以有点杂乱,后续有其他的东西还会继续更。 制作 先套用这个模板,确定基础的循环。再去丰富。 LDtk一小时完全入门教程_哔哩哔哩_bilibili To Unity 安装包 LDtk To Unity 输出 图集 在Run after saving运行 ../../Lib…

Arch - 架构安全性_凭证(Credentials)

文章目录 OverView凭证(Credentials)1. 传统认证授权方式:Cookie-Session 机制2. OAuth2 令牌概述什么是 JWTJWT 令牌 结构HeaderPayloadSignature JWT的优劣势无状态架构的挑战 3. JWT 与 Cookie-Session 的对比 OverView 即使只限定在“软…

rustDesk远程软件,强的可怕

背景 最近在做一个机房的远程运维,对面系统都是windows的,远程本来采用的向日葵,开两三个窗口就不能再多开了,没办法冲了年费瓜子会员,开通会员之后,确实好很多。 随后又增加了一个值班人员,我…

HarmonyOs 应用基础--ArkTS-核心-基础

目录 八. ArkTS-语句-类型进阶与渲染控制 1. 对象进阶 1.1. 定义对象数组 1.2. 使用对象数组 2. 渲染控制 - ForEach 2.1. ForEach语法 2.2. ForEach使用优化代码 2.3. 案例-学生档案 实现思路 3. Math对象 4. 综合案例 -- 抽奖卡案例 4.1. 初始页面布局(静…

手机到了外地ip地址就变了吗

手机到了外地IP地址就变了吗?随着智能手机的普及,人们越来越频繁地使用手机进行各种网络活动。然而,关于手机IP地址是否会随着地理位置的变化而改变,许多用户仍心存疑惑。本文将深入探讨这一问题,揭示IP地址变化的奥秘…

【C++ 09】继承

文章目录 🌈 一、继承的概念及定义⭐ 1. 继承的概念⭐ 2. 继承的定义🌙 2.1 定义格式🌙 2.2 继承方式和访问限定符🌙 2.3 继承父类成员访问方式的变化🌙 2.4 默认继承方式 🌈 二、父类和子类对象赋值转换⭐…

分布式通信:多计算平台的任务分配

目录 1. 分布式通信 1.1 树莓派配置流程​编辑 1.2 树莓派和laptop处于同一网络​编辑 1.3 laptop配置 1.4 通信测试 1.5 分组通信 ​编辑 1.6 分布式通信测试 ​编辑参考资料 1. 分布式通信 机器人体积较小,采用树莓派作为控制器,实现传感器处…

仿某皮影狸app官网源码 不错的APP下载官网单页源码 HTML源码

分享一款不错的APP下载官网单页源码,直接修改index.html即可 源码下载:https://download.csdn.net/download/m0_66047725/89731228 更多资源下载:关注我。

OFDM系统PAPR算法的MATLAB仿真,对比SLM,PTS以及CAF,对比不同傅里叶变换长度

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、选择映射(SLM) 4.2 相位截断星座图(PTS) 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 mat…

极狐GitLab 新一代容器镜像仓库正式上线啦!

从极狐GitLab 17.3 开始,私有化部署实例也可以使用新一代容器镜像仓库啦!新一代容器镜像仓库具有更高效的零宕机垃圾收集功能和其他优势。 从去年开始,极狐GitLab 就启动了重构容器镜像仓库的计划,用以构建具有更强功能的镜像仓库…

就服务器而言,ARM架构与X86架构有什么区别?各自的优势在哪里?

一、服务器架构概述 在数字化时代,服务器架构至关重要。服务器是网络核心节点,存储、处理和提供数据与服务,是企业和组织信息化、数字化的关键基础设施。ARM 和 x86 架构为服务器领域两大主要架构,x86 架构服务器在市场占主导&…