我正在尝试将mp4视频传输到ffmpeg以生成缩略图。不幸的是,即使整个命令执行成功,ffmpeg也不会填充我提供的缓冲区。
我正在从http请求正文中读取视频:
videoData, err := ioutil.ReadAll(r.Body)
这就是我把它推到ffmpeg的方式:
log.Print("Creating thumbnail..")
width := 640
height := 360
log.Print("Size of the video: ", len(videoData))
cmd := exec.Command("ffmpeg", "-i", "pipe:0", "-vframes", "1", "-s", fmt.Sprintf("%dx%d", width, height), "-f", "singlejpeg", "-frame_size", fmt.Sprintf("%d", totalVideoBytes), "-")
cmd.Stdin = bytes.NewReader(videoData)
var imageBuffer bytes.Buffer
cmd.Stdout = &imageBuffer
err := cmd.Run()
if err != nil {
log.Panic("ERROR")
}
imageBytes := imageBuffer.Bytes()
这是错误输出:
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7ff05d002600] stream 0,offset 0x5ded:partial file
pipe:0:处理输入时找到无效数据
在没有写入任何数据的情况下完成流0:0。
frame = 0 fps = 0.0 q = 0.0 Lsize = 0kB时间= -577014:32:22.77比特率= -0.0kbits / s速度= N / A 视频:0kB音频:0kB字幕:0kB其他流:0kB全局标题:0kB muxing开销:未知
输出文件为空,没有编码(如果使用,请检查-ss / -t / -frames参数)
非常感谢,感谢任何帮助。