【问题标题】:No data written to stdin or stderr from ffmpeg没有数据从 ffmpeg 写入标准输入或标准错误
【发布时间】:2018-05-27 04:18:28
【问题描述】:

我有一个虚拟客户端,它应该模拟一个录像机,在这个客户端上我想模拟一个视频流;到目前为止,我已经可以从我在代码中创建的位图图像创建视频。

虚拟客户端是一个 nodejs 应用程序,运行在具有最新版本 raspian lite 的 Raspberry Pi 3 上。

为了使用我创建的视频,我需要让 ffmpeg 将视频转储到 pipe:1。问题是我需要-f rawvideo 作为输入参数,否则ffmpeg 无法理解我的视频,但是当我设置该参数时,ffmpeg 拒绝向stdio 写入任何内容

ffmpeg 正在使用这些参数运行

ffmpeg -r 15 -f rawvideo -s 3840x2160 -pixel_format rgba -i pipe:0 -r 15 -vcodec h264 pipe:1

谁能帮忙解决我的问题?

--编辑

也许我应该多解释一下。 我正在创建的系统将以某种方式设置,而不是我的流服务器向录像机询问视频流,而是由录像机告诉服务器有一个流。

【问题讨论】:

  • 你还没有设置输出格式! ffmpeg 中的 stdout 会消耗什么,它理解哪些格式?
  • 对不起;我复制了错误的 ffmpeg 命令,我也将强制 mp4 (-f mp4) 作为输出参数。我把它取下来看看是不是我的 tcp 客户端没有正确读取,但甚至没有来自 ffmpeg 的错误消息。
  • 我在 TCP Socket 另一端的 Stream 服务器理解 mp4/h264 和 MJPEG
  • 通常 ffmpeg 不会将 mp4 写入管道,因为它不可搜索。但这是可以克服的。分享完整的日志。
  • @Mulvya 正如我在消息中所说,ffmpeg 不会写任何东西。这适用于日志、错误消息或任何其他信息。即使我将 loglevel 设置为调试也没有,所以很遗憾我不能给你一个日志。我知道我可以将 mp4 写入管道:1 如果我使用文件输入它就可以工作,所以这不是我的问题。我的问题是力量 rawvideo 以某种方式阻止标准输出和标准错误

标签: node.js ffmpeg video-streaming


【解决方案1】:

我已经自己减缓了我的问题。 (-:

我现在有 2 个解决方案。

  1. 是将我的 -f rawvideo 更改为 -f data 无论如何都对我有用。
  2. 我可以在代码中将我的位图编码为 jpeg 并将我的 jpeg 图像通过管道传输到标准输入。这也需要我将 ffmpeg 参数更改为-r 4 -f mjpeg -i pipe:0 -r 4 -vcodec copy -f mjpeg pipe:1,这是迄今为止我做过的最慢的事情。我不能使用 4k 输入

感谢@Mulvya 提供帮助。

@eFox 感谢您编辑我愚蠢的拼写和语法错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    相关资源
    最近更新 更多