Linkedin API - 分割文件分块不起作用

问题描述 投票:0回答:2

我正在使用 LinkedIn 的视频 API 上传视频 - 但我的文件分块方法一定有问题,因为我收到错误:

data: {
  owner: 'urn:li:person:a1b2c3d4e5',
  processingFailureReason: 'CORRUPTED_ENTITY',
  id: 'urn:li:video:V5910dQH83nkpw91Dww',
  status: 'PROCESSING_FAILED'
}

我的 MP4 视频文件大小为

20301174
,显然字节块大小为
4194303
,根据 Linkedin API 文档 - 这意味着以下代码应该有效:

const splitVideo = async (filepath) => {
  
    var blobsArray = []

    const buffer = fs.readFileSync(filepath, {encoding:'utf8', flag:'r'})

    const blobParent = new Blob([buffer], {type: 'video/mp4'})

    const blobChild1 = blobParent.slice(0, 4194303, 'video/mp4') // 4194303 bytes
    const blobChild2 = blobParent.slice(4194304, 8388607, 'video/mp4') // 4194303 bytes
    const blobChild3 = blobParent.slice(8388608, 12582911, 'video/mp4') // 4194303 bytes
    const blobChild4 = blobParent.slice(12582912, 16777215, 'video/mp4') // 4194303 bytes
    const blobChild5 = blobParent.slice(16777216, 20301174, 'video/mp4') // 3523957 bytes

    const blobsArray = [blobChild1, blobChild2, blobChild3, blobChild4, blobChild5]

    return blobsArray
}

任何提示或指导都会有帮助。

javascript node.js video linkedin-api
2个回答
1
投票

好吧,我上面的代码有太多问题,但我现在有一个工作示例在这里

文件分块需要通过 bash

split -b 4194303
我尝试了很多 JavaScript 方法来分割文件,但没有一个被 LinkedIn 的 API 接受。

上传的文件也需要通过

readFileSync
发送,这是同步而不是异步。


0
投票

您的代码的问题是您没有在每个块中包含最后一个字节。 根据linkedin文档,

firstByte
lastByte
包含

这意味着您需要将文件拆分为

4194304 bytes
NOT
4194303 bytes

如果您想使用

uploadInstructions
,您可以使用此代码。

注意:您必须在不同位置添加

+ 1
,因为第一个和最后一个字节都包含在内。

byte = instructions.lastByte - instructions.firstByte + 1;
© www.soinside.com 2019 - 2024. All rights reserved.