ffmpeg - 如何使用 FFMPEG 提取无损图像序列并将它们传送到 mozjpeg 的 cjpeg?

标签 ffmpeg pipe mozjpeg

我知道 imagemagick 可能会失败但是 mozjpeg 产生的图像要小得多,这是可取的。

我希望通过 mozjpeg 提取视频的所有帧并将其转换为 JPEG。

我试过的:

$ ind = 1
$ ffmpeg -hide_banner -ss 00:00:10 -i IN.webm -t 00:00:02 -r 24 -c:v bmp -f image2pipe pipe:1 | \
    cjpeg - workDir/$((ind++)).jpeg

错误信息:
av_interleaved_write_frame(): Broken pipe time=00:00:00.00 bitrate=N/A speed=   0x    

Error writing trailer of pipe:1: Broken pipe

frame=    1 fps=0.0 q=-0.0 Lsize=    6075kB time=00:00:00.04 bitrate=1194394.4kbits/s speed=0.0765x    

video:6075kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%

Conversion failed!

最佳答案

cjpeg接受标准输入管道输入,但似乎一次只接受一个输入。

输出图像,然后循环 cjpeg :

ffmpeg -ss 00:00:10 -i IN.webm -t 00:00:02 %04d.bmp
for f in *.bmp; do cjpeg -quality 75 -outfile "workDir/${f%.bmp}.jpg" "$f"; done

不需要-r 24 :如果您强制使用与输入不匹配的任意帧速率,使用它可能会导致丢帧或重复帧。省略 -rffmpeg将输出所有帧。

关于ffmpeg - 如何使用 FFMPEG 提取无损图像序列并将它们传送到 mozjpeg 的 cjpeg?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58748355/

相关文章:

R - 通过管道连接脚本

c - 尝试在 Ubuntu 中实现无名管道程序

linux - Perl - 管道命令到另一个

java - mozjpeg安装问题

ffmpeg:用于过滤器比较的滑动覆盖

windows - 在对 FFPROBE 的调用中相当于 linux wc -l 命令的 CMD?

android - 在androidNDK中使用FFmpeg库播放视频

c++ - 使用 C++ 在 ffmpeg 中解码为特定像素格式