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

emeijp43  于 2024-01-05  发布在  Java
关注(0)|答案(3)|浏览(190)

由于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
示例代码:

  1. private File encoded = null;
  2. MultimediaObject multimediaObject = new MultimediaObject(new URL(blobSasUrl));
  3. VideoAttributes video = new VideoAttributes();
  4. video.setCodec(LIBX264_CODEC);
  5. video.setFrameRate(FRAME_RATE);
  6. EncodingAttributes attrs = new EncodingAttributes();
  7. attrs.setOutputFormat(ENCODE_FORMAT);
  8. attrs.setVideoAttributes(video);
  9. Encoder encoder = new Encoder();
  10. encoder.encode(multimediaObject, encoded, attrs);

字符串

展开查看全部

相关问题