上传时从video中抓取缩略图。 (Azure Blob存储)
我目前有一个系统可以将video上传到Azure blob存储并且工作正常。 我想实现一个function,在上传时抓取video中的缩略图,并将其推送到Azure。
我按照建议尝试使用它:
new FFMpegConverter().GetVideoThumbnail(file, outputJPEG);
问题是我不知道什么用作outputJPEG,因为我没有写入的文件,而是想将该文件写入Azure的blob存储。
任何人都可以帮我解决这个问题,或者建议另一种方法吗?
我试过了:
-
创建一个新的空HttpPostedFileBase作为outputJPEG文件,但这是不可能的,因为它只接受用户上传的文件。
-
使用文件流,但这似乎不起作用,因为它需要写入的文件的位置,而不是让我只是推送到blob存储。 (来自:blob.UploadFromStream(file.InputStream);)
在此先感谢您的帮助!
请注意,即使使用接受Stream的重载,GetVideoThumbnail方法也始终为输出jpeg文件创建临时文件。
如果你的目标是避免创建临时文件,你可以使用从文件接受inputSource的FFMpegConverter.ConvertLiveMedia重载并将结果写入输出流(提取video缩略图相当于只转换为1帧的MJPEG流)。
看起来有一个覆盖采用流,所以你可以将它写入内存流,然后获取内存流并在blob存储中创建一个新文件:
MemoryStream ms = new MemoryStream(); var converter = new FFMpegConverter(); converter.GetVideoThumbnail(file, ms); ms.Position = 0; // Write ms to a blob object here blockblob.UploadFromStream(ms);