【发布时间】:2014-08-14 12:56:20
【问题描述】:
我想使用 avconv 在指定时间从视频文件中获取单个图像。
我对 libav 的了解足以认为我知道自己在做什么,但还不足以真正知道。
我试过了:
avconv -ss 00:00:01.786 -r 25 -i input_video.h264 -frames 1 output_image.jpg
以及使用 t 来避免 'frames' 参数:
avconv -ss 00:00:01.786 -r 25 -i input_video.h264 -t 0.01 output_image.jpg
并在几秒钟内传递而不是使用 hh:mm:ss.xxx 格式:
avconv -ss 1.786 -r 25 -i input_video.h264 -t 0.01 output_image.jpg
我看到的是当 ss 设置为 0(即“0”、“00:00:00.000”、“0.0”等)时,output_image 只是视频的第一帧。正如预期的那样。
ss 的任何其他值 - 甚至 0.0001 - 都会给我视频的最后一帧。
我正在使用来自 Raspbian wheezy repo 的最新 avconv。这种行为对我来说就像一个错误,但我不太了解视频流的其他复杂性,无法确定。
有人知道我做错了什么吗?
额外问题:我实际上想从同一个视频中获得一大堆这些图像。将命令串在一起似乎以前可以工作,即:
avconv -ss 1.786 -r 25 -i input_video.h264 -t 0.01 output_image1.jpg
-ss 3.454 -r 25 -i input_video.h264 -t 0.01 output_image2.jpg
-ss 5.823 -r 25 -i input_video.h264 -t 0.01 output_image3.jpg
-ss etc,etc.
但我切换回单个图像来调试这个问题。假设第一个问题得到解决,这是构建此命令的最佳方式还是有更好的方式?
【问题讨论】:
-
好的,我搬到笔记本电脑上,并使用全长电影作为输入运行相同的命令。我看到了一种效果,当我逐秒增加搜索点时,输出图像不会像您期望的那样跨镜头前进。相反,输出在几秒钟内保持不变,然后跳转到完全不同的画面。就好像 -ss seek 缺乏跳到精确点的能力,而是必须在关键帧之间跳转。
-
可能你已经成为“快速”与“精确”寻求trac.ffmpeg.org/wiki/Seeking%20with%20FFmpeg的牺牲品
-
可能,但我已经阅读了该页面并且我知道快速搜索(-ss before -i)现在是框架准确的(我理解这一点是因为我在该页面以及其他几个页面上阅读过它) - 虽然如果它不是真的那肯定会解释这种行为。
-
也许这是 FFmpeg 中的修复,但不是 avconv?
标签: video ffmpeg raspberry-pi raspbian avconv