node.js - 使用 fluent-ffmpeg 时出现间歇性像素格式错误
问题描述
我正在使用(非常棒!)node-fluent-ffmpeg库作为视频处理管道的第一步。根据我提供给 node-fluent-ffmpeg 的源视频(视频来自同一提供商,这使得这种行为令人惊讶,但我离题了),有时在管道中将输出传送到下一个 ffmpeg 处理器时会看到以下错误:
无法将选项值“-1”解析为像素格式
根据这个问题,我尝试设置inputFormat('mp4')
,videoCodec('libx264')
和.inputOption('-pix_fmt yuv420p')
. 前两个似乎没有任何效果,第三个导致以下错误:“错误:ffmpeg exited with code 1: Option pixel_format not found.” (为了使事情复杂化,我在谷歌云函数中运行这个过程,所以我不清楚如何查询哪些 pix_fmts可用。)
有谁知道我可以如何解决这个问题?
这是我最新的完整尝试:
const process = ffmpeg({source: stream})
.inputFormat('mp4')
.inputOption('-pix_fmt yuv420p')
.setFfmpegPath(ffmpeg_static.path)
.videoBitrate(1024)
.videoCodec('libx264')
.aspect('1:1')
.format('mp4')
.noAudio()
.seekInput(start)
.duration(duration)
.save(destination);
我能够查询 ffmpeg 以获取可用的像素格式,虽然 yuv420p 不可用,但其他一些格式是可用的。最接近的(文本)匹配是 yuv4mpegpipe,但这会导致相同的错误。
解决方案
yuv4mpegpipe
不是像素格式,它是输入/输出格式。您的代码不起作用的原因-pix_fmt yuv420p
是outputOption
不是inputOption
. 最好都不设置inputFormat
,让ffmpeg自动决定。
推荐阅读
- ios - 如何构建ffmpeg以获得最小的静态库?我只想将 3gp 转换为 mp4
- c# - 如何在 C# 中调用 Multipart 消息请求
- android - 启动时的 Android 自定义 shell 脚本
- react-select - react-select 可创建:按 Enter 键时覆盖默认行为
- azure - 是否可以使用 ADF 托管标识从 Azure Databricks 访问 ADLS?
- python - Pytube 在尝试获取流时返回错误
- ios - 我们可以将图像添加到静态“框架”中吗?
- azure - 是什么导致 Azure Web 应用程序上的 Kudu cpu 高?
- mysql - 连接两个具有相同键但不同字段的表
- php - Laravel - 删除具有相同签名日期时间的几个模型