由于Azure媒体服务将于明年退役,我想尝试不同的方法将视频编码为MP4,这种方法包括Azure函数。
1.通过在BlobClient
上调用blobClient.openInputStream()
来获取BlobInputStream
。
1.从BlobInputStream
获取byte[]
。
1.使用一些库来执行编码,如JAVE2或FFMPEG
。(这是我的困惑是如何做到这一点)。
1.上面的Hopig会导致byte[]
,从byte[]创建InputStream
。
1.通过在BlobClinet
上调用upload(InputStream data)
将编码视频写入存储帐户容器。
理论上听起来很简单,但我在这里遇到的问题是Java2和其他类似的库接受java.io.File
对象作为输入和输出,但azure-storage-blob
库没有公开任何API来获取File
对象。现在剩下的选项是打开inputstream以获取byte[],但如何编码字节数组。
更新:输入文件大小不超过100MB。
3条答案
按热度按时间oyjwcjzk1#
Blob存储不是用于文件,而是对象。您可以使用流来传递数据,而不是使用BlobClient的任何文件。
需要从blob存储中本地下载对象(不确定函数有什么本地存储)
另一个选项是将Azure共享作为文件系统挂载到函数运行时https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations
然而,尽管如此,无服务器功能的目的是在有限的处理时间内快速处理,而视频编码不是。因此,您可能会超时,并且成本比仅运行一些计算(例如容器)或使用Azure Batch与spot节点高得多。
avkwfej42#
可以,可以使用Azure函数将AVI视频编码为MP4。您可以创建一个Azure函数,该函数在新AVI视频上传到存储帐户时触发,然后使用该函数中的视频处理库或工具(如FFmpeg)执行AVI到MP4的转换。
f8rj6qna3#
我使用Java azure函数和JAVE2库完成了这一点。我获得了源文件的SAS URL,然后将其提供给
MultimediaObject
示例代码:
字符串