9

我有一个30分钟长的视频。我想制作一个(比如说)15 分钟长的加速版本。我可以通过删除每第二帧来做到这一点。我怎么能在Linux上做到这一点?

我正在玩 gstreamer,它看起来很酷。有没有办法用 gstreamer 做到这一点?执行此操作的gst-launch命令行是什么?

我的源视频是 Motion JPEG 格式,所以我确实需要丢帧。即使它使用关键帧,仍然应该有一种方法可以将电影“加倍速度”?

我想要一种命令行方式来做到这一点,因为我想自动化它。

4

5 回答 5

6

最近,我环顾四周寻找最好的方法。我尝试了 mencoder -speed 以及 libavfilter 的 setpts 选项。我发现最好的方法是输出单个帧,然后将这些帧重新编码为单个视频。此示例假设输入视频为 30fps 以获得最佳效果,并每隔一帧丢弃一次。

# Output the video at 15fps as jpegs
ffmpeg -i input.m4v -r 15 -f image2 /tmp/output-%06d.jpg
# Re-encode the frames at 30fps as h264
ffmpeg -r 30 -i "/tmp/output-%06d.jpg" -vcodec libx264 -threads 0 -an output.m4v
于 2011-10-14T04:42:46.447 回答
4

您可以将帧速率设置为两倍高。例如,如果输入真的是 30/1.001 FPS:

mencoder -fps 60/1.001 -oac copy -ovc copy -o output.avi input.avi

http://www.mplayerhq.hu/DOCS/HTML/en/index.html

mencoder -sstep 0.1 在每帧后向前跳过 0.1 秒丢帧。

mplayer -nosound -channels 2 -vf decimate=-2:16384:16384:1 mvi_3524.avi也可以,但它可能很慢,如果不解压缩/重新压缩每一帧,你可能无法做到这一点。

mjpegtools 有一个yuvfps用于在 y4m 视频中混合/丢弃帧的功能。请参阅http://linux.die.net/man/1/mjpegtools

我没有太多运气找到一个知道如何在不解压缩/重新压缩的情况下从 mjpeg 视频中丢帧的工具。所以你可能需要将mjpeg转换为.jpg文件的目录,删除奇数的,然后重新组合成相同帧率的mjpeg视频。这不会降低图像质量。

于 2009-12-09T22:23:21.263 回答
4

我有一个最初是 16 分 06 秒长的视频,帧速率为 29.97,但我想加快它(通过丢帧),使其以正常速度的 16 倍左右播放。这是我使用的命令:

ffmpeg -r:v "480/1" -i input.avi -an -r:v "12/1" output.avi
于 2013-09-02T04:29:39.950 回答
1

avidemux可以改变电影的帧率并提供命令行控制

于 2009-08-26T14:20:17.400 回答
0

如果您有一个使用 mjpeg 编码的视频,您可以避免重新编码您的视频并拥有相同的帧——只有更少。我使用 ffmpeg 和 awk 的组合来完成此任务:

#!/bin/bash
INMOVIE=${1}
INRATE=${2}
OUTMOVIE="${INMOVIE%.avi}-25fps.avi"

ffmpeg -i ${INMOVIE} -c:v copy .frame_%08d.jpg
rm $(ls .frame_*.jpg |  awk " BEGIN { c=0.0; fd=1./${INRATE}; fr=25.; last=-1 } { current=int(NR * fr * fd); if (current > last) {last = current;} else { print \$0;} }" )
ffmpeg -pattern_type glob -i '.frame_*.jpg' -c:v copy ${OUTMOVIE}
rm -- .frame_*.jpg

解释:

  • 第一个ffmpeg命令从视频中提取帧
  • 以下行删除了在以 25fpsawk的帧速率编码视频时不需要的那些帧INRATE
  • 最后ffmpeg一行将剩余的帧重新组合在一起

您可以检查帧是否与 framemd5 过滤器相同:

ffmpeg -i in.avi -f framemd5 in.md5
ffmpeg -i in-25fps.avi -f framemd5 in-25fps.md5

并发现框架确实是相同的。

于 2014-07-03T08:49:13.003 回答