You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过管道将数据库中的SVG文件传入FFmpeg生成视频时的报错问题及解决方案咨询

通过管道将数据库中的SVG文件传入FFmpeg生成视频时的报错问题及解决方案咨询

我现在需要实现从数据库存储的SVG图形生成视频的功能,计划的操作步骤如下:

  • 连接数据库
  • 创建以管道作为输入的FFmpeg命令
  • 启动FFmpeg子进程
  • 等待进程输出结果
  • 启动另一个线程,循环处理所有SVG文件:
    • 从数据库下载SVG文件到字节缓冲区
    • 将字节缓冲区内容写入FFmpeg子进程的标准输入

但在运行代码时,通过管道传递SVG文件给FFmpeg的过程中遇到了问题。我最初使用的命令是:

ffmpeg -f image2pipe -c:v svg -i - -c:v libx264 -y Downloads/out.mp4

执行后FFmpeg返回了如下错误:

[image2pipe @ 0x562ebd74c300] Could not find codec parameters for stream 0 (Video: svg (librsvg), none): unspecified size
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options

我后来了解到FFmpeg支持svg_pipe格式,于是尝试改用这个格式,但还是出现了完全相同的错误。

另外,我试过先把所有SVG文件下载到临时目录,再使用不依赖管道的命令生成视频,这个方法是有效的,命令示例如下:

ffmpeg -i *.svg -c:v libx264 out.mp4

不过在我的场景里,我希望能避免这种先落地文件的方式,直接用管道处理。

我现在有两个疑问:

  1. 为什么不使用管道的命令能正常工作,而类似cat sample.svg | ffmpeg -f svg_pipe -i - -c:v libx264 out.mp4的管道命令就会失败?
  2. 在我的需求场景下,该如何正确使用管道来实现从数据库SVG生成视频的功能?

当前临时解决方案

目前我找到了一个可行的办法:使用-f rawvideo参数将图形数据传给FFmpeg,但这需要先把SVG格式转换为原始RGB格式才能实现。

备注:内容来源于stack exchange,提问作者Max Chr.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 07:22:59