我正在尝试使用Unity Facebook SDK和FB.API在Facebook上发布位于我计算机上的动画GIF文件。代码如下所示:
%matplotlib inline
import seaborn as sns
sns.set(color_codes=True)
tips = sns.load_dataset("tips")
g = sns.lmplot(x="total_bill", y="tip", data=tips, hue="smoker")
调用WWWForm formData = new WWWForm();
formData.AddField("description", "my description");
formData.AddBinaryData("file", gifContent, "gif_name");
FB.API("/me/videos", HttpMethod.POST, PostCallback, formData);
时,参数中的PostCallback
对象如下所示:
根据Facebook文档(https://developers.facebook.com/docs/graph-api/video-uploads),支持格式IGraphResult
,图像的宽高比应为9x16或16x9。
我的.gif
是我从gifContent
文件中读取的bytes array
,文件的分辨率为480x270。文件的大小可以在2-5MB之间变化到45-50MB(用于测试目的)。
我的Facebook SDK版本是7.9.0。
请注意,我尝试将其上传为视频的原因是因为我在某处读到了GIF意图作为视频上传,但为了记录,我尝试使用.gif
之前我尝试过与视频。
更新:
这是正确的文档链接,将GIF显示为有效格式(对错误道歉):https://developers.facebook.com/docs/graph-api/video-uploads
答案 0 :(得分:0)
我发布此信息以供将来参考。
事实证明,这个问题是由于我犯了一个非常愚蠢的错误造成的。我在Unity中收到“无效格式”错误的原因是因为我传递给FB.API
方法的文件名缺少.gif
扩展名(我没有意识到这一点)时间)。
之所以难以察觉,是因为虽然我的例子显示了硬编码字符串,但在我的实际代码中,我使用了一个变量作为文件名的函数参数。
所以不要这样:
formData.AddBinaryData("file", gifContent, gifNameVariable);
我这样做了:
formData.AddBinaryData("file", gifContent, gifNameVariable + ".gif");