Facebook上传视频广告:错误代码:1363030.“您的视频上传超时,无法完成”


Facebook upload video ad: Error Code : 1363030. "Your video upload timed out before it could be completed"

当我试图上传视频广告时,我得到以下错误:Error Code : 1363030 .

您的视频上传在完成之前超时。这可能是因为网络连接速度慢,或者因为你要上传的视频太大。请再试一次

连接很好,视频不是太大。块(1 mb)。

你知道是什么问题吗?

我代码:

$transfer = array();
$transfer["access_token"]      = "G4535PZXXX";
$transfer["upload_phase"]      = "transfer";
$transfer["upload_session_id"] = $upload_session_id";
$transfer["start_offset"]      = $start_offset";
$transfer["video_file_chunk"]  = @$filepath;
print_r($transfer);
//traverse array and prepare data for posting (key1=value1)
foreach ($transfer as $key => $value) {
    $post_items[] = $key . '=' . $value;
}
//create the final string to be posted using implode()
$post_string = implode('&', $post_items);
//create cURL connection
$curl_connection = curl_init('https://graph-video.facebook.com/v2.3/act_XXX/advideos');
//set options
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
//set data to be posted
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
//perform our request
$transfer_response = curl_exec($curl_connection);
//show information regarding the request
print_r(curl_getinfo($curl_connection));
echo curl_errno($curl_connection) . '-' .                   curl_error($curl_connection);
//close the connection
curl_close($curl_connection);
编辑:


为了创建块,我使用了以下命令

shell_exec('split --bytes='. $fb_response["end_offset"] . ' --suffix-length=1 --numeric-suffixes '. $this->filepath .' $chunkfilepath' );

从PHP 5.5.0开始,@前缀已被弃用,文件可以使用CURLFile发送。参见CURLOPT_POSTFIELDS @ http://php.net/manual/en/function.curl-setopt.php

$video_file_chunk = new CURLFile($filepath,'video/mp4');
$transfer = array();
$transfer["access_token"]      = "G4535PZXXX";
$transfer["upload_phase"]      = "transfer";
$transfer["upload_session_id"] = $upload_session_id";
$transfer["start_offset"]      = $start_offset";
$transfer["video_file_chunk"]  = $video_file_chunk;
//create cURL connection
$curl_connection = curl_init('https://graph-video.facebook.com/v2.3/act_XXX/advideos');
//set options
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
//set data to be posted
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $transfer);
//perform our request
$transfer_response = curl_exec($curl_connection);
//show information regarding the request
print_r(curl_getinfo($curl_connection));
echo curl_errno($curl_connection) . '-' .                   curl_error($curl_connection);
//close the connection
curl_close($curl_connection);

对于后来发现这个的人来说,如果您没有指定附加文件的内容类型和文件名(即,如果您将其作为内联字段值传递,而不是作为附加文件传递),则会发生此Facebook错误。

我不经常使用PHP,所以不能真正给出正确的curl命令,但是上面的代码似乎有一个bug,因为它使用@操作符("抑制错误")而不是将@前缀的文件名传递给curl。对应的行应该是:

$transfer["video_file_chunk"] = '@' . $filepath;

不确定这是否足以解决PHP中的整体问题