我在LinkedIn视频测试版中,正在尝试通过应用编程接口上传视频。https://docs.microsoft.com/en-us/linkedin/marketing/integrations/community-management/shares/videos-api-beta?tabs=http#upload-the-video
由于文件超过4mb,我根据需要将其拆分,并根据我所能告诉我的视频的所有部分成功上传。我还记录了每个部分的etag,以便最终完成上传。
端点videos?action=finalizeUpload将返回带有消息网关超时的504。我在内部使用的客户端使用Guzzle,我试图增加超时,但我确信这不是问题所在。原因是,如果我加载带有urlencoded视频URN的视频,我将收到带有消息内部服务器错误的500状态。
$userUrn = 'urn:li:person:[urn]';
// register the upload, returns the upload urls
$registerResult = $client->post(
'videos?action=initializeUpload',
[
"initializeUploadRequest" => [
'owner' => $userUrn,
"purpose" => 'FEED_VIDEO',
"fileSizeBytes" => filesize($videoFile),
"uploadCaptions" => false,
"uploadThumbnail" => false
]
]
);
$videoUrn = $registerResult['value']['video'];
$uploadToken = $registerResult['value']['uploadToken'];
// split the video file into parts
exec('split -b 4194303 "' . $videoFile . '"');
$file = 'xaa';
$etags = [];
foreach($registerResult['value']['uploadInstructions'] as $i => $uploadInstructions)
{
$filePath = __DIR__ . '/' . $file;
// upload the part
$shellCmd = 'curl -v -H "Content-Type:application/octet-stream" --upload-file "' . $filePath . '" "' . $uploadInstructions['uploadUrl'] . '" 2>&1';
exec($shellCmd, $o);
$matches = [];
preg_match('/(etag:)(\s?)(.*)(\n)/', implode("\n", $o), $matches);
$etags[] = $matches[3]
$file++;
}
// in this prototype just remove all of these files
exec("rm xa*");
$videoStatus = $client->post(
"videos?action=finalizeUpload",
[
"finalizeUploadRequest" => [
"video" => $videoUrn,
"uploadToken" => $uploadToken,
"uploadedPartIds" => $etags
]
]
);我还手动验证了,在我的视频上使用split和cat确实会生成与原始视频完全相同的副本。(不过,我不能确定LinkedIn在做什么)
第一个请求initializeUpload将返回数据,其中包含视频urn、upload token (通常为空,但我一直在获取它)和upload指令。所以我知道客户端是有效的。此外,上传视频部分的curl命令似乎也起作用了。它返回etag,我将其放入一个数组中发送回来。
正如标题所示,这个特性目前是Beta版,但我没有被告知要在任何地方提供关于beta版的反馈,并且API帮助确实表明要发布问题。
发布于 2021-11-04 11:40:54
我看到LinkedIn文档引用了错误的(EI) URL here。你应该使用
https://api.linkedin.com/v2/videos?action=finalizeUpload而不是
https://api.linkedin-ei.com/v2/videos?action=finalizeUploadhttps://stackoverflow.com/questions/69819215
复制相似问题