上传时从视频中抓取缩略图。 (Azure Blob存储)

时间:2014-04-22 23:22:08

标签: c# video azure azure-storage-blobs

我目前有一个系统可以将视频上传到Azure blob存储并且工作正常。我想实现一个功能,在上传时抓取视频中的缩略图并将其推送到Azure。

我按照建议使用了这个:

new FFMpegConverter().GetVideoThumbnail(file, outputJPEG);

问题是我不确定要使用什么作为outputJPEG,因为我没有写入的文件,而是想将该文件写入Azure的blob存储。

任何人都可以帮我解决这个问题,或者建议另一种方法吗?

我试过了:

  • 创建一个新的空HttpPostedFileBase作为outputJPEG文件,但这是不可能的,因为它只接受用户上传的文件。

  • 使用文件流但这似乎不起作用,因为它需要写入文件的位置,而不是让我只是推送到blob存储。 (via:blob.UploadFromStream(file.InputStream);)

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

看起来有一个带有流的覆盖,所以你可以将它写入内存流然后获取内存流并在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);

答案 1 :(得分:0)

请注意,即使使用了接受Stream的重载,GetVideoThumbnail方法也始终为输出jpeg文件创建临时文件。

如果你的目标是避免创建临时文件,你可以使用FFMpegConverter.ConvertLiveMedia重载,它接受来自文件的inputSource并将结果写入输出流(提取视频缩略图相当于仅转换为只有1帧的MJPEG流)。