【发布时间】:2021-11-28 05:07:31
【问题描述】:
我正在实现一个 API,它允许用户发送视频流并生成缩略图。我正在使用 asp.net core 和 Azure Blob 存储。 API接口是这样的:
[HttpPost]
[Route("test_upload")]
public IActionResult TestUpload( IFormFile mediaFile ) {
//->store mediaFile
//->generate thumbnail
//->save thumbnail
return Ok();
}
我需要做两件主要的事情:
- 生成缩略图
- 获取时长等视频信息
我尝试使用 Nuget 中的库,但所有这些都需要文件路径,而我没有文件路径,只有视频流或保存后 Blob 存储中的 Blob。那么,我的问题是,如何使用 FFmpeg 或其他工具直接从流中管理视频?
我知道 Azure 媒体服务提供了很多工具来管理视频和音频等媒体文件,但对于只有 2Mb 和 30 秒长的视频来说太慢了。而且我不需要对视频进行编码、创建流或其他类似的东西。我只需要从 Stream 中获取视频信息并将视频存储在 Storage 中。
有什么想法吗?谢谢!
更新 1: 我通过为临时视频创建一个文件夹编写了一个解决方法,我只是将视频保存在此文件夹中,创建缩略图并删除临时文件。但我不知道这种做法是否有一些不好的副作用。
【问题讨论】:
-
我认为不可能直接来自流或 blob 存储。但是您可以先将流存储在“正常”(临时)存储中并在那里进行处理。另请参阅此答案:stackoverflow.com/questions/43681552/…
-
好的,谢谢,这个方法有效。但是,允许服务器将临时文件保存在文件夹中是一个好习惯吗?会不会有什么副作用?
标签: azure asp.net-core video ffmpeg