【问题标题】:Encoding video stream by http protocol using ffmpeg library使用ffmpeg库通过http协议编码视频流
【发布时间】:2025-11-29 16:45:02
【问题描述】:

我正在尝试对用户上传到我的服务器上的视频文件进行编码。 我将文件解释为流,通过 http 协议传入我的服务器并使用 ffmpeg 进行实时文件编码,同时执行上传过程。

当源文件有.avi格式时,我有成功的编码结果,但是.mp4格式出现错误:

---------------------
[buffer @ 0000000000308380] Unable to parse option value "-1" as pixel format
Last message repeated 1 times
[buffer @ 0000000000308380] Error setting option pix_fmt to value -1.
---------------------

我认为这可能是因为 .mp4 在文件末尾包含 "moov atom" 数据。 我是这么认为的,因为当我在编码之前通过"-movflags faststart" 命令处理文件时,我也有成功的结果。

这是我现在使用的命令:

ffmpeg -i http://myhost.com/app/video/video2.mp4 -f mp4 -vcodec libx264 -b:v 800K -acodec libvo_aacenc -b:a 128K -ar 44100 -ac 2 -y c:/watch-and-get/video/video5.mp4

我能否解决此问题并将多种视频格式编码为流而无需任何额外步骤?

【问题讨论】:

标签: http video ffmpeg encode


【解决方案1】:

您正在运行旧版本的 ffmpeg。此问题已修复。

-pix_fmt 是像素格式,它的值应该是一个整数。(ffmpeg 不知何故将此值作为-1,我不知道为什么。因此你得到那个错误。但更新会解决这个问题)

额外信息:运行 ffmpeg -pix_fmts 以查看所有可用的像素格式。

下载最新版本。 我建议从二进制文件安装最新版本,因为它更简单。我回答的差不多here

【讨论】: