java 可以使用Azure功能将AVI视频编码为MP4吗?

emeijp43  于 5个月前  发布在  Java
关注(0)|答案(3)|浏览(56)

由于Azure媒体服务将于明年退役,我想尝试不同的方法将视频编码为MP4,这种方法包括Azure函数。
1.通过在BlobClient上调用blobClient.openInputStream()来获取BlobInputStream
1.从BlobInputStream获取byte[]
1.使用一些库来执行编码,如JAVE2FFMPEG。(这是我的困惑是如何做到这一点)。
1.上面的Hopig会导致byte[],从byte[]创建InputStream
1.通过在BlobClinet上调用upload(InputStream data)将编码视频写入存储帐户容器。
理论上听起来很简单,但我在这里遇到的问题是Java2和其他类似的库接受java.io.File对象作为输入和输出,但azure-storage-blob库没有公开任何API来获取File对象。现在剩下的选项是打开inputstream以获取byte[],但如何编码字节数组。

更新:输入文件大小不超过100MB。

oyjwcjzk

oyjwcjzk1#

Blob存储不是用于文件,而是对象。您可以使用流来传递数据,而不是使用BlobClient的任何文件。
需要从blob存储中本地下载对象(不确定函数有什么本地存储)
另一个选项是将Azure共享作为文件系统挂载到函数运行时https://learn.microsoft.com/en-us/azure/azure-functions/storage-considerations
然而,尽管如此,无服务器功能的目的是在有限的处理时间内快速处理,而视频编码不是。因此,您可能会超时,并且成本比仅运行一些计算(例如容器)或使用Azure Batch与spot节点高得多。

avkwfej4

avkwfej42#

可以,可以使用Azure函数将AVI视频编码为MP4。您可以创建一个Azure函数,该函数在新AVI视频上传到存储帐户时触发,然后使用该函数中的视频处理库或工具(如FFmpeg)执行AVI到MP4的转换。

f8rj6qna

f8rj6qna3#

我使用Java azure函数和JAVE2库完成了这一点。我获得了源文件的SAS URL,然后将其提供给MultimediaObject
示例代码:

private File encoded = null;

MultimediaObject multimediaObject = new MultimediaObject(new URL(blobSasUrl));

VideoAttributes video = new VideoAttributes();
video.setCodec(LIBX264_CODEC);
video.setFrameRate(FRAME_RATE);

EncodingAttributes attrs = new EncodingAttributes();
attrs.setOutputFormat(ENCODE_FORMAT);
attrs.setVideoAttributes(video);

Encoder encoder = new Encoder();
encoder.encode(multimediaObject, encoded, attrs);

字符串

相关问题