gpt4 book ai didi

file - FFMPEG:Windows 中的 STDOUT 与 FILE

转载 作者:行者123 更新时间:2023-12-04 22:46:45 30 4
gpt4 key购买 nike

我有一个使用 ffmpeg 库生成 mpeg4 帧的应用程序 ( app1.exe ),我想将这些帧转储到另一个从标准输入读取的应用程序。

连接它们的最简单方法是通过文件,这可行,但现在我想使用管道。

所以在 app1.exe我有

fwrite(pkt.data, 1, pkt.size, (FILE*) f ); // for each frame

它创建了一个 test.m4v 文件,可以正常工作,但是当我将其更改为
fwrite(pkt.data, 1, pkt.size, stdout ); // for each frame

然后将其转储到文件 app1.exe > test.m4v文件生成正确,但内容已损坏:

使用文件生成:

generated using FILE

使用 STDOUT 生成:

generated using STDOUT

我的第一个想法是检查应用程序是否生成了除帧之外的任何标准输出,但它没有,使用 FILE 版本检查并通过 app1.exe>text.txt 转储标准输出,但文件为空。唯一的“输出”是标准错误,但它们仅在应用程序退出时发生。

使用 notepad++ 打开两个版本的结果 test.m4v 会显示非常相似的数据,我什至会说两者都一样。

所以我的问题是,写入文件和将标准输出转储到文件有什么区别?

最佳答案

因为你提到 .exe,我猜这是在 Windows 上。确保与 fwrite() 对应的 fopen() 使用二进制模式,因此换行符不会被破坏。例如,fopen() 的第二个参数应该是“wb”,而不是“w”。

what's the differences between r and rb in fopen

关于file - FFMPEG:Windows 中的 STDOUT 与 FILE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22639407/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com