从视频中提取音频为 wav

2024-01-06

我知道有一个与我类似的问题:从视频文件中提取 wav 文件 https://stackoverflow.com/questions/1010937/extract-wav-file-from-video-file

我是 C++ 新手,了解 COM 库 + 视频和音频需要 directX。我一直在寻找教程和示例代码,但收效甚微。

我的问题是如何对应用程序进行编码以获取视频文件(任何类型)并将提取的音频保存为应用程序中的 .wav,而不是使用其他应用程序(例如 graphedit 或 virtualdub)?


我将附议仅使用 ffmpeg 构建来执行音频提取的动议。它可以通过一个简单的命令来完成,而不是很可能使用数百行代码(如果您要检查处理不同视频格式和编解码器时可能发生的所有可能问题)。

ffmpeg -i video.avi -vn soundfile.wav

你可以使用 libavformat 和 libavformat(ffmpeg 后面的库)来做同样的事情,但是除非你需要在输出到 wav 之前对原始音频进行一些处理,否则除了知识之外什么也得不到。

ffmpeg 很好,因为可执行文件包含您可能需要的所有音频和视频解码器,因此该解决方案具有高度可移植性。你没有安装编解码器或任何东西。输入视频文件可以是 ffmpeg 支持的任何格式或编解码器,您不必费心在代码中对它们进行不同的处理。

在 C++ 中,您可以通过在代码中构建命令行字符串并从代码中启动该过程来调用 ffmpeg(作为 C++ 新手,您可能需要研究如何执行此操作,但这非常简单)。

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

从视频中提取音频为 wav 的相关文章

  • 在 LINQ 查询中进行转换

    是否可以在 LINQ 查询中进行强制转换 为了编译器的缘故 下面的代码并不糟糕 但最好将其放入一个查询中 Content content dataStore RootControl as Controls Content List
  • 未找到 DEADLINE 调度策略

    我想在 C 中实现 DEADLINE 调度策略 我知道该功能已实现Linux 3 14 10我正在使用 Ubuntu 14 04Linux 3 17 0 031700 lowlatency 201410060605 SMP PREEMPT这
  • 使用管道在父级和子级之间传递整数值

    我对如何正确使用 pipeline 在两个进程之间传递整数值有点困惑 在我的程序中 我首先创建一个管道 然后分叉它 我假设我有 两个 管道 据我了解 这是我的任务 我的父母通过 for 循环检查某个操作的整数值 i 增加计数变量 并将值保存
  • 来自 double 的 static_cast 可以优化分配给 double 吗?

    我偶然发现了一个我认为不必要的功能 并且通常让我感到害怕 float coerceToFloat double x volatile float y static cast
  • 如何使用T4从一个模板同时生成两个文件?

    我遇到的情况是 我需要生成两个 CSharp 代码文件 它们的代码几乎相同 但方法的输入和输出类型的命名空间不同 事实上 每个文件都针对特定国家 地区 并且类型来自特定国家 地区的 WSDL 我正在围绕服务编写一些包装器 逻辑完全相同 但从
  • 维护 VS Test Project 中单元测试方法之间的上下文

    我想按顺序运行以下单元测试 使用随机数字的名称 密码等创建新客户 检索刚刚创建的客户并断言其属性包含相同的随机数 对同一用户调用 ForgotPassword 函数 并使用相同的随机数作为用户名 清楚地看到 我需要生成一次随机数 并在 3
  • 重载算术运算符

    赋值运算符可以声明为 T 运算符 const t 在类中 但不能以这种方式定义算术运算符 它必须是友元函数 我不明白为什么 你能解释一下吗 算术运算符不必须是友元 那么你可以这样定义 MyClass MyClass operator con
  • 如何在 C 中链接目标文件?失败并显示“架构 x86_64 的未定义符号”

    因此 我尝试在我的文件 file2 c 中使用另一个 C file1 c 文件中定义的函数 为了做到这一点 我包含了 file1 file1 h 的标头 但是 每当我尝试使用 gcc 编译文件时 我都会收到以下错误 Undefined sy
  • X 轴和 Z 轴上的 Quaternion.Slerp,无 Y 轴

    I am trying to rotate the Player about X Y and Z axis The Y axis should not move from last angle Example if I rotate 45
  • DateTime.ParseExact - 为什么 yy 变成 2015 而不是 1915

    为什么 NET 假定以下年份是 2015 年 而不是 1915 年 var d DateTime ParseExact 20 11 15 dd MM yy new CultureInfo en GB 我想 它会尝试接近 但其背后是否有合理的
  • 更改私有模块片段是否会导致模块重新编译?

    On 此页面有关 C 20 模块功能 https www modernescpp com index php c 20 modules private module fragment and header units 我发现了这样的说法 借
  • main.cpp 是必需的吗?

    我试图编译一个程序cmake 我最终删除了我的main cpp文件 我刚刚将其复合到另一个包含我的项目名称的文件中 即 我刚刚将主函数剪切并粘贴到该文件中 问题是我有一个main cpp未发现错误 不确定是否在C 一个名为main cpp是
  • fgets溢出后如何清除输入缓冲区?

    当输入字符串超出其预定义限制时 我遇到了 fgets 的小问题 以下面的例子为例 for index 0 index lt max index printf Enter the d string index 1 if fgets input
  • 为什么这个位图图像在加载后会改变大小?

    快速提问 我有这个1000 1000位图图像 我使用这个例程来加载它 private BitmapSource initialBitmap new BitmapImage new Uri C Users Desktop Original b
  • MPI - 发送和接收列

    我需要从一个进程发送矩阵列并从另一个进程接收它 我尝试运行以下程序 但得到了一个奇怪的结果 至少我这么认为 仅复制矩阵的第一个元素 某些矩阵元素会发生意外变化 include
  • C++网络序列化[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一种将 C 数据包序列化为网络流的解决方案 我在这里看到很多帖子提到人们 ACE 谷歌协议缓
  • Clang 5.0 上的 vsprintf 和 vsnprintf [-Wformat-nonliteral] 警告

    我有这段代码 static void err doit int errnoflag int level const char fmt va list ap int errno save unsigned long n char buf MA
  • 在 Visual Studio 2012 Express 中设置 C++ 调试环境

    我需要调试的应用程序需要设置环境变量 这在 Visual Studio 2012 中似乎非常复杂 我想做类似的事情 set path c foo c bar c windows c program files application set
  • 为什么我可以在另一个函数中定义一个函数?

    请参阅下面的代码 我在另一个函数中定义了一个函数 void test1 void void test2 void printf test2 n printf test1 n int main void test1 return 0 这个用法
  • 使用通用存储库模式和流畅的 nHibernate

    我目前正在开发一个中型应用程序 它将访问不同站点上的 2 个或更多 SQL 数据库等 我正在考虑使用类似的东西 http mikehadlow blogspot com 2008 03 using irepository pattern w

随机推荐

  • 如果我想建立一个自定义数据库,我该怎么做? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我构建了一个以前的程序 它获取客户信息并将其存储在 txt 文件的文件夹中 不太切实际 但现在我想升级该程序以提高效率 并将信息放入某
  • 如何更改 Joomla 管理 URL

    默认情况下 Joomla 管理 URL 是您的站点名称 管理员 我如何为 Joomla 1 5 更改此设置 以便它不会影响我的模块和组件或后端的任何其他内容 我认为这不是一个好主意 因为模块 组件中指向 administrator 的一些链
  • 无法从 Gstreamer 找到 get-launch-1.0

    我在 OSX Mac 上运行 我已经在此处找到的 GStreamer 1 5 1 中安装了各种软件包 http gstreamer freedesktop org data pkg osx http gstreamer freedeskto
  • 为什么这个 rust HashMap 宏不再起作用?

    我以前用过 macro export macro rules map T ident key expr gt value expr gt let mut m T new m insert key value m 要创建对象 如下所示 let
  • 将 EoS 发送到文件接收器,同时从 tee 中删除分支

    我写了一个v4l2src同时显示和记录的代码 我的管道看起来像 queue videosink v4l2src tee queue filesink 目前我可以一起显示 记录 还可以随意动态启动和停止记录分支 使用 ctrl c sigin
  • Linux 内核:设置通过 create_device() 创建的 /dev 文件的权限

    我正在制作一个小型 Linux 模块 它是 char 设备的驱动程序 在我的代码中 我创建了设备类 而不是设备本身 因此 dev 文件是 在我的系统中创建 问题是 dev文件只有root权限 而用户 对该文件既没有读 写也没有执行权限 我想
  • 在 Vagrant 配置期间更新 .bashrc 和环境变量

    我正在使用 Vagrant 设置一个包含 python pip virtualenv virtualenvwrapper 和一些要求的盒子 配置 shell 脚本添加了virtualenvwrapper 所需的行 http virtuale
  • 将 string[][] 与 npgsql 一起使用

    不支持吗 尝试插入命令参数设置为的数据时出现异常 var parameter IDbDataParameter cmd Parameters index var list string value parameter Value list
  • 如何在 Android API 17 之前的 Android 中检测外部显示器

    我正在使用具有受版权保护的视频的应用程序 该视频只能在 Android 设备中运行 而不能在通过 HDMI 或无线连接的外部显示器中运行 我发现了很棒的 AP I推介会 http developer android com referenc
  • 为什么变量“i”和“j”用于计数器?

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我知道这似乎是一个绝对愚蠢的问题 但我很好奇 不能不问 为什么 i 和 j 成为大多数控制结构
  • 如何在Android中没有SQL数据库的情况下显示在线数据以供离线使用?

    我想要节目3fragments in my Activity并从中加载数据json in any fragments 我将网站数据显示到Recyclerview with OkHTTP v3图书馆 我想离线显示此数据 我的意思是如果用户关闭
  • 上下文切换线程等待

    我已经寻找这个问题的答案一天了 但找不到直接的答案 我正在阅读上下文切换等待队列之类的内容 确实很好地掌握了所有内容 在阅读一篇文章时 写到当发生车队情况时 将会有大量的上下文切换 那么让我直接说一下 假设一个线程处于等待互斥体解锁的队列中
  • 类型错误:引导日期选择器中未定义日期

    我正在使用引导日期选择器http www eyecon ro bootstrap datepicker http www eyecon ro bootstrap datepicker 但 firebug 显示 bootstrap datep
  • 在 SQLPLUS 中正确格式化表

    在这被投票为重复问题之前 我在 S O 上花了相当多的时间 试图解决这个问题 正如您在下面的屏幕截图中看到的 我的表格看起来很乱 对于第一个和第二个表 您可以看到每个表有 2 组列标题 那么 例如 我怎样才能将所有 5 条客户记录包含在一张
  • 如何将任何 mp3 文件转换为 .wav 16khz 单声道 16 位

    请帮助选择将任何 mp3 文件转换为特殊 wav 的解决方案 我是 Linux 命令行工具的新手 所以现在对我来说很难 我需要从任何 mp3 文件中获取具有 16khz 单声道 16 位声音属性的 wav 我正在尝试 ffmpeg i 11
  • 将转换后的 DataFrame 保存/导出回 JDBC / MySQL

    我正在尝试弄清楚如何使用新的DataFrameWriter将数据写回 JDBC 数据库 我似乎找不到任何相关文档 尽管查看源代码似乎应该是可能的 我正在尝试的一个简单示例如下所示 sqlContext read format jdbc op
  • 引用 dplyr across() 内的列名称

    是否可以参考专栏names在 lambda 函数里面across df lt tibble age c 12 45 sex c f f allowed values lt list age 18 100 sex c f m df gt mu
  • 在C中获取文件大小的正确方法

    我正在做一个套接字编程作业 其中我必须在 sparc 和 Linux 机器之间发送一个文件 在以字符流发送文件之前 我必须获取文件大小并告诉客户端 以下是我尝试获取尺寸的一些方法 但我不确定哪一种是合适的 出于测试目的 我创建了一个内容为
  • Glassfish 上的领域身份验证后重定向

    我目前正在 Glassfish 上运行 JPA EJB JSF 应用程序 并使用安全 JDBC 领域进行身份验证 该领域运行得很好 满足了要求 直到客户要求对导航进行小的更改 如今 如果您尝试访问受保护的页面 身份验证机制会将您重定向到 w
  • 从视频中提取音频为 wav

    我知道有一个与我类似的问题 从视频文件中提取 wav 文件 https stackoverflow com questions 1010937 extract wav file from video file 我是 C 新手 了解 COM