【发布时间】:2011-10-21 18:55:01
【问题描述】:
我正在尝试使用 ffmpeg 裁剪视频帧,并且我想自动缩放裁剪后的图像。 我在 av filter 看到了一个选项:http://ffmpeg.org/libavfilter.html#SEC41
./ffmpeg -i video.mp4 -vf "crop=640:480,scale=ow:oh" -f mpegts udp://127.0.0.1:1234
我收到一个错误:计算表达式'oh'时出错
【问题讨论】:
我正在尝试使用 ffmpeg 裁剪视频帧,并且我想自动缩放裁剪后的图像。 我在 av filter 看到了一个选项:http://ffmpeg.org/libavfilter.html#SEC41
./ffmpeg -i video.mp4 -vf "crop=640:480,scale=ow:oh" -f mpegts udp://127.0.0.1:1234
我收到一个错误:计算表达式'oh'时出错
【问题讨论】:
您实际上需要将ow 和oh 替换为数字,分别代表视频缩放到的宽度和高度。
【讨论】:
ow 和oh 的位置输入数字。
我假设你得到:
Error when evaluating the expression 'oh'.
Maybe the expression for out_w:'ow' or for out_h:'oh' is self-referencing.
因为您尝试将输出 w/h 设置为输出 w/h?!你想做的是
ffmpeg -i video.mp4 -vf "crop=640:480,scale=iw:ih" -f mpegts udp://127.0.0.1:1234
也就是说,将输出 w/h 设置为输入宽度 (iw) 和输入高度 (ih)。
请注意,如果源视频小于您尝试裁剪为 (640:480) 的视频,您将收到错误消息。您可以使用 ffmpeg 的表达式语法首先检查是否需要裁剪/缩放以避免此错误。
【讨论】:
试试这个:
./ffmpeg -i video.mp4 -vf "scale=640:ih*640/iw, crop=640:480" -f mpegts udp://127.0.0.1:1234
上面的代码会先将视频缩放到640,并保持纵横比高度,
然后裁剪为640x480.
【讨论】:
640x480?
(in_w-out_w)/2”,详细说明here。