FFmpeg:将流的 moov 原子移到前面并将结果发送到标准输出

FFmpeg:将流的 moov 原子移到前面并将结果发送到标准输出

我正在尝试使用 FFmpeg 从输入流中提取缩略图并将结果发送到 stdout。我一直在使用这个命令:ffmpeg -i - -ss 00:00:01.000 -vframes 1 -c:v png -f image2pipe -。当输入有 MP4 容器时,这很有效,但对于 MOV 则不行。我收到“未指定像素格式”错误。

使用此命令将 moov 原子移动到文件前面:ffmpeg -i - -c copy -movflags faststart out.mov,然后将文件通过管道传输到上一个命令后,一切都按预期工作。但是,我想在不将新文件写入磁盘的情况下执行此操作。该命令ffmpeg -i - -c copy -movflags faststart -f mov -无法初始化输出流,因为 muxer 不支持不可搜索的输出。

有没有办法在不写入文件的情况下实现这一点,比如使用缓冲区?我对 FFmpeg 还很陌生,所以我的方法可能有些遗漏。请注意,我也尝试过分段输出:ffmpeg -i - -c copy -movflags frag_keyframe+empty_moov -f mov -但这样做时我得到了相同的“未指定像素格式”错误。

相关内容