ffmpeg没有填写我提供的缓冲区

时间:2018-04-14 09:14:34

标签: go ffmpeg

我正在尝试将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参数)

非常感谢,感谢任何帮助。

0 个答案:

没有答案