使用ffmpeg转码并生成缩略图

时间:2012-07-08 09:41:56

标签: ffmpeg

使用ffmpeg并假设它是可行的,我如何将输入视频从一种格式转换为另一种格式(例如MPEG-2到MPEG-4)并同时每隔 n 秒生成缩略图?

此致 马特

2 个答案:

答案 0 :(得分:1)

此命令将接受.flv并转码为.webm和.mp4,同时生成单个缩略图。

ffmpeg -y -threads '1' -i 'in.flv' \
  -map '0:v' -map '0:a' -c:v 'libx264' -c:a 'libvo_aacenc' out.mp4 \
  -map '0:v' -map '0:a' -c:v 'libvpx' -c:a 'libvorbis' out.webm \
  -map '0:v' -r '1' -t '1' 'out.png'

要每n秒生成一个缩略图,请将-r(帧速率)更改为n的倒数并删除-t(以便缩略图直到视频结束)。例如,要每4秒生成一个缩略图,您需要一个1/4的帧速率。

ffmpeg -y -threads '1' -i 'in.flv' \
  -map '0:v' -map '0:a' -c:v 'libx264' -c:a 'libvo_aacenc' out.mp4 \
  -map '0:v' -map '0:a' -c:v 'libvpx' -c:a 'libvorbis' out.webm \
  -map '0:v' -r '1/4' 'out-%d.png'

答案 1 :(得分:-1)

看一下gstreamer,你可以在管道的每个阶段访问数据。所以要将MPEG-4转换为MPEG-2,你可以

filesrc | decodebin | tee | jpegencode | filesink(thumbnail) tee | mpeg2enocde | filesink(mpeg2 file)

请查找gstreamer管道的确切元素。