我的视频数据是动态的,它可以使用任何扩展名,但当我使用 mp4 扩展名时会出现错误。
我的功能:
func (s *service) convertVideo(videoData []byte) ([]byte, error) {
var buffer bytes.Buffer
cmd := exec.Command("ffmpeg",
"-i", "pipe:0",
"-c:v", "libvpx-vp9",
"-b:v", "0",
"-f", "webm",
"-t", "8",
"-preset", "ultrafast",
"pipe:1")
cmd.Stdin = bytes.NewReader(videoData)
cmd.Stdout = &buffer
err := cmd.Run()
if err != nil {
return nil, err
}
return buffer.Bytes(), nil
}
并出现错误:
stream 1, offset 0x30: partial file
Could not find codec parameters for stream 0 (Video: h264 (avc1 / 0x31637661), none, 720x1280, 773 kb/s): unspecified pixel format
是因为我使用了流管道吗?因为如果我使用临时文件它会成功,但效果并不那么有效。
新
如果我先将我的 mp4 转换为 mp4,那么它就成功了。所以问题的原因是我的mp4,但仍然没有在代码中找到解决方案。
你能解决这个问题吗? 我无法使用缓冲区或流视频...