Sam*_*ang 5 video ffmpeg raspberry-pi raspbian avconv
我想使用avconv在视频文件的指定时间获取单个图像.
我已经阅读了很多关于libav的内容,认为我知道自己在做什么,但实际上并不知道.
我试过了:
avconv -ss 00:00:01.786 -r 25 -i input_video.h264 -frames 1 output_image.jpg
Run Code Online (Sandbox Code Playgroud)
以及使用t来避免'frames'参数:
avconv -ss 00:00:01.786 -r 25 -i input_video.h264 -t 0.01 output_image.jpg
Run Code Online (Sandbox Code Playgroud)
并在几秒钟内传递而不是使用hh:mm:ss.xxx格式:
avconv -ss 1.786 -r 25 -i input_video.h264 -t 0.01 output_image.jpg
Run Code Online (Sandbox Code Playgroud)
我看到的是当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.
Run Code Online (Sandbox Code Playgroud)
但我切换回单个图像来调试这个问题.假设第一个问题得到解决,那么构造这个命令的最佳方法还是更好的方法呢?
Ham*_*y75 -1
就我而言,我想要前 3 分钟每 60 秒一张图像......
对于 {0..3} 中的 i ;执行 avconv -ss echo $i*60.0 | bc-i input_video.h264 -frames:v 1 -y out$i.jpg ;完毕
如果您在某些时候需要它,您可以稍微更改一下:9。