gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 04:50:50 24 4
gpt4 key购买 nike

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

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

最佳答案

"I want to send images as input to FFmpeg... I believe that FFmpeg could receive image from a pipe, does anyone know how this can be done?"



是的,可以使用管道发送 FFmpeg 图像。使用 standardInput发送帧。帧数据必须是字节数组中未压缩的像素值(例如:24 位 RGB 格式),该数组包含足够的字节( width x height x 3 )以写入完整帧。

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

ffmpeg -i inputvid.mp4 outputvid.mp4 .

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

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

在哪里...
  • -f rawvideo -pix_fmt argb表示接受未压缩的 RGB 数据。
  • -s 800x600-r 25是示例输入宽度和高度,r设置帧速率意味着 FFmpeg 必须在 的每一秒内编码此数量的图像输出 视频。

  • 完整的设置如下所示:
    -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

    如果您得到 block 状视频输出,请尝试设置 两个 输出文件...
    -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

    关于ffmpeg - 是否可以使用管道发送 ffmpeg 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51903888/

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