是否可以使用管道发送 ffmpeg 图像?

2023-11-26

我想将图像作为输入发送到 ffmpeg,并且希望 ffmpeg 将视频输出到流(webRtc 格式)。

我找到了一些信息,根据我的理解,这表明这是可能的。 - 我相信 ffmpeg 可以从管道接收图像,有谁知道这是如何做到的?


“我想要发送图像作为输入到 FFmpeg...我相信 FFmpeg 可以接收图像从管道,有人知道如何做到这一点吗?”

是的,可以使用管道发送 FFmpeg 图像。使用standardInput发送帧。帧数据必须是保存足够字节的字节数组中的未压缩像素值(例如:24位RGB格式)(widthxheightx3)来写一个完整的框架。

通常(在命令或终端窗口中)您将输入和输出设置为:

ffmpeg -i inputvid.mp4 outputvid.mp4.

但对于管道你必须first指定传入输入的宽度/高度和帧速率等。然后将传入输入文件名添加为-i -(其中使用空白-这意味着 FFmpeg 会监视standardInput连接传入的原始像素数据。

您必须将帧数据放入某个位图对象中,并将位图值作为字节数组发送。每次发送都会被编码为一个新的视频帧。伪代码示例:

public function makeVideoFrame ( frame_BMP:Bitmap ) : void
{
    //# Encodes the byte array of a Bitmap object as FFmpeg video frame
    if ( myProcess.running == true )
    {
        Frame_Bytes = frame_BMP.getBytes(); //# read pixel values to a byte array
        myProcess.standardInput.writeBytes(Frame_Bytes); //# Send data to FFmpeg for new frame encode

        Frame_Bytes.clear(); //# empty byte array for re-use with next frame

    }
}

每当您使用新的像素信息更新位图时,您都可以通过将该位图发送为新帧来将其写入输入参数对于上面的函数,例如makeVideoFrame (my_new_frame_BMP);.

您的管道的进程必须以以下参数开始:

-y -f rawvideo -pix_fmt argb -s 800x600 -r 25 -i - ....etc

Where...

  • -f rawvideo -pix_fmt argb意味着接受未压缩的RGB 数据。

  • -s 800x600 and -r 25是示例输入width & height, r sets 帧率这意味着 FFmpeg 必须对每秒钟编码这么多图像output video.

完整的设置如下所示:

-y -f rawvideo -pix_fmt argb -s 800x600 -r 25 -i - -c:v libx264 -profile:v baseline -level:v 3 -b:v 2500 -an out_vid.h264

如果您的视频输出出现块状,请尝试设置two输出文件...

-y -f rawvideo -pix_fmt argb -s 800x600 -r 25 -i - -c:v libx264 -profile:v baseline -level:v 3 -b:v 2500 -an out_tempData.h264 out_vid.h264

这将输出一个测试h264视频文件,您稍后可以将其放入 MP4 容器中。
音轨-i someTrack.mp3是可选的。

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

是否可以使用管道发送 ffmpeg 图像? 的相关文章

  • 如何使用 ffmpeg 将两个视频/音频流混合为一个

    我有两个视频 v1 flv 和 v2 flv 想要创建 v3 flv 其中包含来自 v1 flv 的视频流以及来自 v1 flv 和 v2 flv 的 混合 音频流 使用 ffmpeg 命令可以实现类似的操作吗 谢谢 我认为使用 ffmpe
  • FFmpeg - 来自 NodeJS 的 RTMP 流,流比实时更快

    我的目标是在 Node 中渲染画布 并将该画布流式传输到 RTMP 服务器 最终是 Twitch 但现在我正在在本地 RTMP 服务器上测试 流式传输到 RTMP 的标准方式似乎是ffmpeg 所以我使用它 从 NodeJS 中作为子进程生
  • Windows 上的 ffmpeg-android ndk

    我正在尝试编译 bash 文件 带有 android ndk 的 ffmpeg 我收到如下错误 arm linux androideabi gcc 无法创建可执行文件 C 编译器测试失败 Makefile 2 config mak 没有这样
  • 如何在Mac上使用AVFoundation将图片编码为H264,而不是使用x264

    我正在尝试制作一个 Mac 广播客户端 使用 FFmpeg 但不使用 x264 库编码为 H264 所以基本上 我可以从 AVFoundation 中获取原始帧CMSampleBufferRef or AVPicture 那么有没有一种方法
  • 两个图像之间的视频变形,FFMPEG/Minterpolate

    我正在尝试在 Ubuntu Linux 上的 bash 脚本中使用两个帧 png 图像 和 ffmpeg 的 minterpolate 过滤器制作一个快速且简单的变形视频 目的是稍后使用变形作为不同视频编辑器中相似视频之间的过渡 它适用于
  • Chromium 中的 MP4 编解码器支持

    我们已将 Chromium 嵌入式框架集成到我们的 Windows 游戏中 以允许我们从应用程序内渲染网页 并且一切正常 除了 MP4 视频 据我所知 由于许可问题 Chromium 不包含此编解码器 但任何人都可以提供有关我们如何添加支持
  • Node.js - 将数据缓冲到 Ffmpeg

    我使用 Node js 和 Ffmpeg 来创建动画 因为我试图避免第三方 avi mp4 解析器 所以我决定将动画输出为原始 rgb24 数据文件 然后使用一些程序将其转换为 mp4 文件 我发现 Ffmpeg 是免费且开源的 它完全可以
  • 如何使用 ffmpeg 设置默认流

    我有一些 m4v 文件 我想用 ffmpeg 添加字幕 我知道我需要映射流以将它们放入输出文件中 但如何确保此字幕流将是默认流 字幕是 srt 人们似乎说它们与 mp4 容器不兼容 我需要先将字幕转换为什么 另外 各种流的顺序重要吗 视频流
  • FFMPEG:将 YUV 数据转储到 AVFrame 结构中

    我正在尝试转储YUV420数据进入AVFrameFFMPEG 的结构 从下面的链接 http ffmpeg org doxygen trunk structAVFrame html http ffmpeg org doxygen trunk
  • 为 Android 编译时显示 FFMPEG 错误

    我正在尝试将 ffmpeg 添加到我的 android 项目中 我使用的是 ubuntu 14 04 操作系统 我正在关注此链接 Link https software intel com en us android blogs 2013
  • PowerShell 脚本 ffmpeg

    作为一名优秀的 Windows 系统管理员 我终于开始学习 PowerShell 话虽这么说 我不知道我在做什么 惊讶 惊讶 我认为远离生产环境 在家里使用 PowerShell 对我来说将是一次很好的学习经历 最近 我开始使用 FFMPE
  • 以 Gif 形式在 Android 上以编程方式共享 WhatsApp 视频

    我如何将 mp4 视频文件转换为 WhatsApp gif 文件 在应用程序 UI 中简单显示为 gif 但内部是特定的 mp4 格式 以在 android 共享意图中使用 并被 Whatsapp 聊天应用程序识别为此类媒体 我搜索了很多
  • 如何在不指定像素格式的情况下从 AVFrame.data[] 和 AVFrame.linesize[] 获取原始帧数据?

    我的总体想法是frame data 根据视频的像素格式 RGB 或 YUV 进行解释 但是有没有通用的方法可以从帧中获取所有像素数据 我只想计算帧数据的哈希值 而不解释它来显示图像 根据 AVFrame h uint8 t AVFrame
  • 视频文件转换/转码 Google App Engine

    我想启动一个云计算项目 其简单任务是 接收上传的视频文件 对它们进行一些转码 转换 允许用户下载 流式传输生成的文件 我刚在想ffmpeg作为集成在的外部命令行工具Java Google App engine Application 由于很
  • 使用 ffmpeg 库以可变帧率模式将一系列图像(cv::Mat)保存到 mp4 文件,如何设置 pts?

    在C 代码中 我可以正确保存一系列图像 opencv的cv Mat 到 mp4 文件 使用ffmpeg图书馆 请参阅此处的问题和答案 当我尝试将多个 RGB 数据保存到 output mp4 文件时 avformat write heade
  • C#中图像制作视频的工作方式

    有人有已知的可靠方法来从一系列图像文件创建视频吗 在你因为我在发布问题之前没有寻找答案而对我进行批评之前 以及在你发出诸如 使用 FFMPEG 之类的简单消息之前 请阅读此消息的其余部分 我正在尝试从一系列图像 jpg bmp 等 创建视频
  • 输入文件列表以与 Node.js 模块 Fluent-ffmpeg 连接

    版本信息 流利的 ffmpeg 版本 2 1 2 ffmpeg版本 3 4 2 操作系统 Windows 10 要重现的代码 ffmpeg C path to list txt mergeToFile C path to out mp4 C
  • 将yuv420p原始数据转换为opencv图像

    我有来自 rtmp 服务器的原始数据 像素格式为 yuv420p 我使用管道来读取数据 但我不知道如何将原始数据解码为图像 command ffmpeg command extend loglevel fatal i rtmp localh
  • 使用 libavcodec 提取音频样本

    我对如何从 AVFrame 中的数据提取双值感到困惑 我正在尝试提取帧 我尝试检查用 CPython 编写的 av 模块背后的源代码 尤其是 AudioFrame 来尝试了解它从何处解码样本 https github com PyAV Or
  • 推荐用于视频编码的最佳质量/性能 H264 编码器?

    我正在寻找一种速度快 需要较少 CPU 功率并生成质量非常好的 mp4 视频的视频编码器 输入视频可以是任何格式并由用户上传 我唯一知道的是 FFMPEG 库 还有其他更好的吗 该程序必须有一个我感兴趣的批处理实用程序 exe 如果您愿意分

随机推荐

  • 使用 GDT 保护模式下的汇编器跳转

    我目前正在使用 x86 Assembler 以提高我的低级编程技能 目前 我在 32 位保护模式下的寻址方案遇到了一个小问题 情况如下 我在 0x7e0 加载了一个程序 它将 CPU 切换到保护模式并跳转到代码中的相应标签 code to
  • 如何在 JavaScript 中获取输入文本值

    如何在 JavaScript 中获取输入文本值
  • Lucene 和特殊字符

    我正在使用 Lucene Net 2 0 来索引数据库表中的某些字段 其中一个字段是允许使用特殊字符的 名称 字段 当我执行搜索时 它没有找到包含特殊字符术语的文档 我这样索引我的字段 Directory DALDirectory FSDi
  • 角材料步进器在每次点击时动态添加新的步骤项目

    我在我的项目中使用有角度的材料 我想在每次点击时添加额外的步进器项目 mat step addItem button 我在这里创建了一个笨蛋 https stackblitz com edit angular enmq1z file app
  • 不重复 N 个元素的组合,不使用 for..to..do

    我想在列表中加载 N 个数字的组合而不重复 从而输入元素和组 例如 对于 4 个元素 1 2 3 4 我有 Group 1 1 2 3 4 Group 2 1 2 1 3 1 4 2 3 2 4 3 4 Group 3 1 2 3 1 2
  • mysql 查询 - 插入数据 unix_timestamp ( now ( ) ) 问题

    我有一个 INT 11 列 用于存储当前时间戳 以秒为单位 查询如下所示 INSERT INTO abc id timestamp VALUES UNIX TIMESTAMP NOW 不知道为什么 日期没有改变 当我发送查询时 列值没有改变
  • 在 Prometheus/PromQL 中合并/连接两个指标

    我有两个不同的 但相关的指标 metric 1 id abc id2 def metric 2 id abc id2 def 我的最终目标是在 Grafana 中实现以下功能 我计划使用 即时 值和 Grafana 的表格可视化小部件来显示
  • 土耳其语字符编码

    我尝试从不同的列表项创建新句子 当我用 unicode 打印它时 它给出错误 我可以正常打印 没有unicode 当我尝试将其发布到网站时 它出现了同样的错误 我认为如果我可以用 unicode 修复它 那么当我将其发布到网站时它就会起作用
  • 在 64 位计算机上使用 C# 和“BUILD x86”访问注册表

    我有一个应用程序 用 C 编写 在 Windows Server 2008 64 位 上运行 在此应用程序中 我必须检查一些有关 IIS 的注册表项 除其他外 我想访问密钥HKEY LOCAL MACHINE Software Micros
  • UnknownEntityTypeException:无法找到持久化器

    我想在 Wildfly 上使用 JPA 和 Spring 我尝试了这个配置 应用程序属性 spring jmx enabled false spring datasource jndi name java global production
  • 如何从 shell 检测 Mac OS X 中的当前区域设置

    我需要从命令行检测 OS X 中的当前区域设置 在 Linux Unix 上 我可以依赖 LANG 但并不总是设置它 http henrik nyh se 2007 10 displaying utf 8 Correctly in leop
  • 这两个查询是否相同 - GROUP BY 与 DISTINCT?

    这两个查询似乎返回相同的结果 这是巧合还是它们真的是一样的 1 SELECT t ItemNumber SELECT TOP 1 ItemDescription FROM Transactions WHERE ItemNumber t It
  • Android 自定义键盘 - 预览视图受限于父布局

    我创建了一个自定义键盘 它工作正常 除了顶部两行按键的预览视图显示得不够高 它们的垂直位置受到父布局的限制 这些屏幕截图说明了问题 0 和 8 的预览位置很好 但对于 5 和 2 则不然 键 0 的预览显示在按钮上方 键 8 的预览也显示在
  • 设备管理接收器在某些版本中无法工作

    我正在开发一款安全应用程序 可以保护设备免受陌生人的侵害 在我的应用程序中 如果用户尝试使用错误的 PIN 图案 密码解锁设备 我有一个功能应该从前置摄像头捕获图像 我有一个类似这样的代码 public class MyAdminRecei
  • 在 cython 中生成高斯随机数的最有效和可移植的方法是什么?

    我正在编写一个 cython 应用程序 我需要在紧密的嵌套循环中动态生成高斯随机变量 我希望在不引入任何额外依赖项 例如 GSL 的情况下执行此操作 对于我目前能够做到这一点的最小版本均匀随机即时数字 from libc stdlib ci
  • 带连接的 Codeigniter 活动记录更新语句

    这是我试图通过活动记录实现的查询 UPDATE Customer donations cd join Invoices i on i cd id cd cd id set cd amount 4 cd amount verified 1 W
  • Redis 和查询值

    Redis 在概念上与我使用的传统 SQL 数据库不同 我试图弄清楚它是否适合我的项目 我一直在四处寻找 但似乎找不到我的问题的答案 我需要存储一组用户 每个用户都有一个唯一的 ID 和多个与其关联的值 例如他们的姓名 看来我可以简单地将它
  • linq中如何处理空值?

    recordsList ListOfRecords new StudentRecordsBAL GetStudentsList Select q gt new StudentRecords RollNumber q RollNumber C
  • 如何为具有单个可为空成员的案例类编写 Play JSON 写入转换器

    在 Play 2 3 中 我有一个带有单个可选双成员的案例类 case class SomeClass foo Option Double 我需要一个 JSON 写入转换器来将成员处理为可为空 implicit val someClassW
  • 是否可以使用管道发送 ffmpeg 图像?

    我想将图像作为输入发送到 ffmpeg 并且希望 ffmpeg 将视频输出到流 webRtc 格式 我找到了一些信息 根据我的理解 这表明这是可能的 我相信 ffmpeg 可以从管道接收图像 有谁知道这是如何做到的 我想要发送图像作为输入到