我在javascript和php中实现视频有问题.
的index.php
session_start()
// do other stuff
include ‘video.php’
Run Code Online (Sandbox Code Playgroud)
video.php
<?php
If(!$_REQUEST[‘play’]){
// displaying video.html
}
else
{
// play video
$fp = @fopen($file, 'rb');
$size = filesize($file); // File size
$length = $size; // Content length
$start = 0; // Start byte
$end = $size - 1; // End byte
// Now that we've gotten so far without errors we send the accept range header
/* At the moment we only support single ranges.
* Multiple ranges requires some …Run Code Online (Sandbox Code Playgroud) 我有一个用go编写的网络服务器,我正在提供来自不同来源(本地,其他服务器,S3)的一些音频文件.我想为这些文件启用部分内容,以便HTML音频标签能够搜索和循环.
我怎么能得到这个?我知道http包ServeContent函数可以做到这一点,但我怎么能通过自己提供文件来实现呢?我需要在没有这个的情况下这样做,以便我可以使用相同的处理程序提供来自不同来源的文件.
我在尝试从特定时间戳的电影文件中提取缩略图时遇到了问题.一般来说,我对此没有任何问题,但是我遇到了一组电影文件,这些文件在请求的字节范围内出现错误(416请求范围不满足).
奇怪的是服务器正在返回部分内容请求中的内容长度,但是当它请求电影文件时,它请求超过该长度的长度.
这有点过头了,所以我不确定这里会发生什么.任何见解都会很棒.
命令:
/usr/bin/ffmpeg -y -ss 1400 -i 'https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4' -qscale:v 2 -f image2 -vframes 1 -filter:v 'scale=192:108' -loglevel debug /data/www/storage/test.jpg 2>&1
Run Code Online (Sandbox Code Playgroud)
错误:
[https @ 0x22e1e00] header='HTTP/1.1 416 Requested Range Not Satisfiable'
[https @ 0x22e1e00] http_code=416
[https @ 0x22e1e00] HTTP error 416 Requested Range Not Satisfiable
Run Code Online (Sandbox Code Playgroud)
源文件大小:
1776706045 bytes
Run Code Online (Sandbox Code Playgroud)
源内容持续时间:
2897.624271
Run Code Online (Sandbox Code Playgroud)
部分内容请求:
[https @ 0x22e1e00] header='HTTP/1.1 206 Partial Content'
[https @ 0x22e1e00] http_code=206
[https @ 0x22e1e00] header='x-amz-id-2: 4J1pgHExIUA0GxIxSBmGJjrRqliHbsIjXeuGzVfTlaaoVXbyZI5FQNma8fGaifcovkXfxJev5yU='
[https @ 0x22e1e00] header='x-amz-request-id: 78B3BDBB0356EF40'
[https @ 0x22e1e00] header='Date: Wed, 16 Dec …Run Code Online (Sandbox Code Playgroud) 我们是否有一些 C# 库或类可以分段下载大文件,并且在连接失败时恢复下载?
我尝试使用一些内置的 WebClient 类,但它不支持恢复下载。
WebClient webClient = new WebClient();
webClient.DownloadFile(link, @"C:\Test\1.zip");
Run Code Online (Sandbox Code Playgroud)
失败并出现异常:“从传输流接收到意外的 EOF 或 0 字节”。
如果用户传递Range标头,如何让 nginx 发送源服务器?
目前我尝试过这个,但没有工作:
server {
location / {
if ($http_range) {
set $var_arg_range $http_range;
}
if ($arg_range) {
set $var_arg_range "bytes=$arg_range";
}
proxy_set_header Range $var_arg_range;
proxy_pass https://content-na.drive.amazonaws.com;
proxy_set_header If-Range "";
proxy_set_header Host content-na.drive.amazonaws.com;
proxy_set_header Range $var_arg_range;
proxy_set_header Accept-Encoding "";
}
}
Run Code Online (Sandbox Code Playgroud)
我需要使 html5 视频可流式传输。
我的问题是我无法\xc2\xb4t上传大于4MB的文件,所以我根据createuploadsession使用了createuploadsession
\n\n我成功从 createuploadsession 响应中获取 uploadUrl 值。现在我尝试使用此代码发出 PUT 请求
\n\nvar file = \'C:\\\\files\\\\box.zip\'\n\nfs.readFile(file, function read(e, f) {\n request.put({\n url: \'https://api.onedrive.com/rup/545d583xxxxxxxxxxxxxxxxxxxxxxxxx\',\n headers: {\n \'Content-Type\': mime.lookup(file),\n \'Content-Length\': f.length,\n \'Content-Range\': \'bytes \' + f.length\n }\n }, function(er, re, bo) {\n console.log(\'#324324\', bo);\n }); \n}); \nRun Code Online (Sandbox Code Playgroud)\n\n但如果我尝试的话,我也会得到“无效的内容范围标头值”响应
\n\n\'Content-Range\': \'bytes 0-\' + f.length\n//or\n\'Content-Range\': \'bytes 0-\' + f.length + \'/\' + f.length\nRun Code Online (Sandbox Code Playgroud)\n\n我会得到同样的回应。
\n另外,我不想\xc2\xb4t 想要对我的文件进行分块,我只想在 1run 内上传完整的文件。有人有从 createuploadsession 响应将文件上传到 uploadUrl 的示例代码吗?另外,我是否真的需要先获取此 uploadurl,然后才能上传大于 4mb 的文件,还是有其他方法?