FFmpeg 阻塞管道直到完成?

2024-01-08

我目前正在开发一个 C++ 程序(在 Linux 上运行),该程序应该运行 FFmpeg 作为外部实用程序,以使用以下命令将视频文件的音频流编码为 AC3popen()并通过管道捕获输出。

这是我如何尝试实现此目标的示例代码:

int bufferSize = 2048;
char buffer[bufferSize];

FILE *handle = popen("ffmpeg  -i filename.mkv -map 0 -codec:v copy -codec:s copy -codec:a ac3 -f matroska -", "r");
int d = fileno(handle);

while(read(d, buffer, bufferSize) > 0)
{
    // Process Data here
}

实际上这有效,但并不像我预期的那样。这里发生以下情况:FFmpeg 启动,对整个文件进行编码,并且我的程序继续挂起read()。 FFmpeg 完成后,我的程序将继续并从管道读取数据。

但我真正想要的是读取 FFmpeg 的输出while它正在对文件进行编码。现在我想知道如何让它这样工作? FFmpeg 是否阻塞了管道,在完成之前不会向其中写入任何内容,或者我的代码在写入管道时无法读取?或者我需要传递给 FFmpeg 任何参数吗?


也许 bufferSize 在 read(...) 中发生变化? 将其声明为 const 是一个很好的策略。

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

FFmpeg 阻塞管道直到完成? 的相关文章

  • IIS应用程序池回收+quartz调度

    我正在 IIS 7 5 上运行一个 Web 应用程序 它需要偶尔回收 否则内存使用情况会失控 这是我正在研究的问题 当它回收时 它实际上不会运行 直到另一个请求到来 而quartz不会运行 有没有办法让IIS在回收应用程序池后立即自动启动1
  • 使用 CLion 进行 OpenCV Windows 设置

    我想在 Windows 上为 CLion IDE 设置 OpenCV 我尝试使用 OpenCV 3 1 和 2 4 得到相同的结果 我有 Windows 10 64 位 CLion 使用 cygwin 环境 到目前为止我做了什么 1 从Op
  • 将 new 与 decltype 一起使用

    T t T is an implementation detail t new T want to avoid naming T to allow for flexibility t new decltype t error cannot
  • 在 OnModelCreating 期间设置列名称

    Issue 我目前正在尝试通过设置的属性为我的表及其列添加前缀 我正在使用实体框架核心 我已经正确地为表名添加了前缀 但我似乎无法弄清楚列的前缀 我有一种感觉 我需要使用反射 我已经留下了我的 可能很糟糕的 反思尝试 有人有办法在实体中设置
  • 有没有办法在 xcode 上使用 c++0x ?我想使用 gcc 4.4 或更高版本

    我想使用 gcc 4 4 或更高版本进行 iphone 开发 有人知道怎么做吗 不 你不知道 相信我 你不会 Apple 仍保留 gcc 4 2 1 因为 4 2 2 及更高版本使用 GPLv3 这意味着他们必须放弃对其平台的控制 对于 i
  • 检测wlan是否关闭

    任何人都可以给我一个提示 如何在 Windows Phone 上以编程方式检测 C 8 1 应用程序 不是 8 0 是否启用 禁用 WLAN 我不想更改这些设置 只是需要知道 该解决方案是一个 Windows 8 1 通用应用程序 Wind
  • CSharpRepl emacs 集成?

    我碰巧知道莫诺CSharpRepl http www mono project com CsharpRepl 是否有 emacs csharp 模式使用它在一个窗口中运行 REPL 并像 python 模式一样在另一个窗口中编译 运行 C
  • std::call_once 可重入且线程安全吗?

    std call once http en cppreference com w cpp thread call once是线程安全的 但它也是可重入的吗 我使用 VS2012 调试和发布 进行的测试表明 调用std call once从单
  • 在开关中使用“goto”?

    我看到了一个建议的编码标准 内容如下Never use goto unless in a switch statement fall through 我不跟 这个 例外 案例到底是什么样的 这证明了goto 此构造在 C 中是非法的 swi
  • 计算另一个表达式中的 C# 表达式

    我想在另一个表达式中使用一个表达式 Expression
  • C# 开源 NMEA 解析器 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 C 开源 NMEA 解析器 嗯 我自己也不熟悉 但是一些快速搜索显示了一个代码项目 htt
  • 使用 LINQ 更新 IEnumerable 对象的简单方法

    假设我有一个这样的业务对象 class Employee public string name public int id public string desgination public int grade List
  • MFC:如何设置CEdit框的焦点?

    我正在开发我的第一个简单的 MFC 项目 但我正在努力解决一个问题 想要设置所有的焦点CEdit其中一个对话框中的框 我的想法是 当打开对话框时 焦点位于第一个编辑框上 然后使用 选项卡 在它们之间交换 我看到了方法SetFocus 但我无
  • C#6 中的长字符串插值行

    我发现 虽然字符串插值在应用于现有代码库的字符串 Format 调用时非常好 但考虑到通常首选的列限制 字符串对于单行来说很快就会变得太长 特别是当被插值的表达式很复杂时 使用格式字符串 您将获得一个可以拆分为多行的变量列表 var str
  • 在 asp.net MVC 中使用活动目录进行身份验证

    我想使用活动目录对我的 asp net mvc 项目中的用户进行身份验证 在网上冲浪了几个小时后 我没有找到任何对我有用的东西 我已经看到了所有结果 但什么也没有 我尝试按照许多帖子的建议编辑我的 web config 如果有人可以帮助我提
  • 如何使用 NPOI 按地址(A1、A2)获取 Excel 单元格值

    我有一个 Excel 单元格地址 例如 A1 A2 如何使用 C 中的 NPOI 框架以编程方式访问此单元格 我找到的一些 Java POI 示例代码 CellReference cr new CellReference A1 row my
  • LINQ 中的“from..where”或“FirstOrDefault”

    传统上 当我尝试从数据库中获取用户的数据时 我使用了以下方法 在某种程度上 DbUsers curUser context DbUsers FirstOrDefault x gt x u LoginName id string name c
  • 如何得知客户端从服务器的下载速度?

    根据客户的下载速度 我想以低质量或高质量显示视频 任何 Javascript 或 C 解决方案都是可以接受的 Thanks 没有任何办法可以确定 您只能测量向客户端发送数据的速度 如果没有来自客户端的任何类型的输入来表明其获取信息的速度 您
  • DataContractSerializer 事件/委托字段问题

    在我的 WPF 应用程序中 我正在使用DataContractSerializer序列化对象 我发现它无法序列化具有事件或委托声明的类型 考虑以下失败的代码 Serializable public abstract class BaseCl
  • 使用未分配的局部变量

    我遇到了一个错误 尽管声明了变量 failturetext 和 userName 错误仍然出现 谁能帮帮我吗 Use of Unassigned local variable FailureText Use of Unassigned lo

随机推荐

  • Swift 3 声音播放

    好吧 我已经研究过这个问题 并尝试了许多不同的方法来在单击按钮时播放声音 在 swift 3 中单击按钮时如何播放声音 我的声音位于名为 Sounds 的文件夹中 名称为 ClickSound mp3 该功能下的用户 MARK PLAY S
  • 在php中的目录中查找特定的文件类型,并在转换后将其发送到不同的目录

    我有一个目录 其中有一个mp4 file 也包括其他文件 我想转换成mp3然后将其发送到不同的目录 我用过以下命令行命令转换成mp3 它工作得很好 ffmpeg i 36031P mp4 map 0 2 ac 1 floor english
  • ICS 不更新组织者日历

    我正在编写一个应用程序 它将发送主要由 Outlook 解释的 ics 文件 当我的应用程序发送更新时 它将成功更新除组织者日历之外的每个人的日历 我使用相同的 UID 并且每次都会递增 SEQUENCE 我的 ICS 文件中是否还缺少其他
  • Oracle + JPA - 使用 INTERVAL 进行查询

    我的数据库表中有一个时间戳列 LASTUPDATED 我通过轮询来决定是否应更新某行 如果记录在过去 10 分钟内没有更新 我会更新它 我想将日期处理委托给数据库 但以下方法均无效 这个说 意外的标记 靠近 Query query enti
  • 如何在选择选项中使用复选框

    客户给了我一个设计 其中有一个选择选项菜单 其中包含一个复选框以及作为列表中单独项目的项目名称 是否可以在 选择选项 菜单中添加一个复选框 注意 开发人员需要添加自己的 id 才能使菜单生效 如果可能的话 我只需要 HTML CSS 代码
  • 为特定密码启用 TLS 1.2

    我们有一个 NET 应用程序调用仅允许 TLS 版本 1 2 的 API 服务器 2008 SP2 我们在服务器上运行以下脚本 Copyright 2016 Alexander Hass http www hass de content s
  • Google PHP 客户端不会验证代码,invalid_request

    我正在使用 Google PHP 客户端 4ae272683e18888362e1f935b813e345b99e23b8 该客户端于 8 月 9 日从 github 中提取 我觉得我的代码太简单了 不会出错 require once Go
  • Set 如何检查重复项? Java哈希集

    对于下面的代码 它输出 1 第二个代码输出 2 我不明白为什么会发生这种情况 是因为我添加了相同的对象吗 我应该如何实现所需的输出2 import java util public class maptest public static v
  • 自定义检查器将值恢复为 Unity 中 Play 上之前的值

    所以在我的游戏中我有一个需要平滑移动的对象Vector3 fromPosition to Vector3 toPosition高速float speed 然后返回到开始的地方 一切都非常简单 但是为了在设置关卡时尝试让生活变得更轻松 我决定
  • 如何使用 Python 3.6 发送电子邮件附件

    你介意帮我一下吗 我使用此页面中的所有代码如何使用Python发送电子邮件附件 https stackoverflow com questions 3362600 how to send email attachments with pyt
  • 如何使用http header发送http请求

    提前致谢 我使用此代码在 http 请求中设置 http 标头来验证 url 但我认为缺少一些东西 这就是为什么我无法得到回复 回应仍然是 需要授权 httpParameters new BasicHttpParams String aut
  • 为 iFrameExtractor 编译 ffmpeg 时出现问题

    我正在尝试使用 make 和 build 文件来编译 ffmpegiFrameExtractor 示例 https github com lajos iFrameExtractor 首先我尝试遵循 github 上的自述文件 该文件只说运行
  • 识别并描述 Scala 的泛型类型约束

    我见过 lt gt
  • 从 Dropbox 目录中提取图像并在网站库中显示

    我正在与一位摄影师客户合作创建一个简单的网站 我希望建立一个从 Dropbox 文件夹中提取的照片库 因此每当她想要更新图库中的图像时 她只需将照片从 Dropbox 文件夹中交换出来 很简单 对吧 有没有办法使用 jQuery 或 PHP
  • 如何将控制台应用程序转换为 .dll?

    我正在尝试将用 C 编写的应用程序转换为 DLL 控制台应用程序接收用户的输入 并通过调用我在项目中导入的服务的方法来重置密码 如何将控制台应用程序转换为 DLL 以便每当用户希望更改密码时就调用我的 DLL 右键单击项目 gt 属性 gt
  • Azure 是否为“cloudapp.net”提供 https?

    使用的一大优点Azure Websites是我无需执行任何操作即可获得安全的 HTTP HTTPS 我只需键入https xyz azurewebsites net它有效 我不必担心证书 因为我使用 Azure 提供的子域 在示例中它将是x
  • 在更新中使用通配符?

    我想浏览一个表 并将 notify4 N 的所有实例更改为 notify5 N 其中 N 是 1 9 之间的数字 有没有办法在 SQL 中做到这一点 在 Perl 中这会很容易 但我不确定客户的服务器上是否有 Perl 您可能正在寻找REG
  • 控制选择框中所选值的外观:有没有办法单独渲染所选项目?

    我正在与antd 选择框 https ant design components select 我尝试自定义里面的内容Option其中包含常规的text与一些 JSX 它看起来如下 这也是我在沙箱上准备的小演示 由于我已经自定义了里面的内容
  • TeamCity 构建步骤 - MSBuild 中失败

    该解决方案在我的计算机上成功构建 但在构建服务器上失败 有项目的解决方案 解决方案中的项目 https i stack imgur com mEaCH png 这是 MSBuild 输出 13 42 17 Step 2 5 MSBuild
  • FFmpeg 阻塞管道直到完成?

    我目前正在开发一个 C 程序 在 Linux 上运行 该程序应该运行 FFmpeg 作为外部实用程序 以使用以下命令将视频文件的音频流编码为 AC3popen 并通过管道捕获输出 这是我如何尝试实现此目标的示例代码 int bufferSi