是否可以使用指向 php 代码而不是视频片段的 URL 修改 mpd?
Is it possible modify the mpd with URLs which points php code instead of video segments?
这是我的 mpd 的一部分:
<SegmentList>
<Initialization sourceURL="bbbh_init.mp4"/>
</SegmentList>
<Representation id="3" mimeType="video/mp4" codecs="avc1.4d401f" width="1280" height="720" frameRate="24" sar="1:1" startWithSAP="1" bandwidth="973441" accessTech="unicast">
<SegmentList timescale="1000" duration="2000">
<!-- <SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_1.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_2.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_3.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_4.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_5.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_6.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_7.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_8.m4s"/> -->
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=1"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=2"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=3"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=4"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=5"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=6"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=7"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=8"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=9"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=10"/>
如果我使用注释行,在那里我得到视频片段向服务器请求它们,它工作正常。
<!-- <SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_1.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_2.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_3.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_4.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_5.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_6.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_7.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_8.m4s"/> -->
我正在尝试读取通过 php 代码获取视频片段的 segmentURL,但它不起作用,我的 mpd 代码行:
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=1"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=2"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=3"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=4"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=5"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=6"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=7"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=8"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=9"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=10"/>
有什么方法可以按照我想要的方式获取视频片段吗?
通过 php?我有 php 代码,它工作正常,因为当我从浏览器发出请求时,它会执行我想要的操作,但是当破折号读取 mpd 并且客户端请求 php 代码时,客户端没有响应。
我认为问题是我没有正确使用 SegmentURL 标记,因为我没有以直接方式传递视频,我传递的是 php 代码,当我执行它。
非常感谢!!
这是 php 代码。如果我在浏览器中执行此代码,它会下载文件,但不会从 mpd 下载文件。当浏览器下载文件时,它给出了一个 http 代码 204,这意味着没有内容。我该如何解决?
变量 $segment 只是一个段的数字。
$file = '/bbbhewma/dash_bbbh1000k_' . $segment . '.m4s';
if (file_exists('/usr/local/apache2/www/dash/CUSUM-dashjs13' . $file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Type: video/mp4');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('accept-ranges: bytes');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
从客户的角度来看,这绝对有效。客户端不知道服务器 return 是直接还是通过脚本发送段。这就是为什么我认为问题出在 PHP 脚本或服务器配置中。
很难说无法访问脚本 and/or 流,但问题的原因之一可能是脚本没有 return 正确的 HTTP 状态代码(即 200)。另一个原因可能是 returned 段的 MIME 类型没有相应设置(例如 "video/mp4")。也许 returned 段的内容被 PHP 脚本破坏了。没有更多信息,只能猜测。
这是我的 mpd 的一部分:
<SegmentList>
<Initialization sourceURL="bbbh_init.mp4"/>
</SegmentList>
<Representation id="3" mimeType="video/mp4" codecs="avc1.4d401f" width="1280" height="720" frameRate="24" sar="1:1" startWithSAP="1" bandwidth="973441" accessTech="unicast">
<SegmentList timescale="1000" duration="2000">
<!-- <SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_1.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_2.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_3.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_4.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_5.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_6.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_7.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_8.m4s"/> -->
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=1"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=2"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=3"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=4"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=5"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=6"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=7"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=8"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=9"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=10"/>
如果我使用注释行,在那里我得到视频片段向服务器请求它们,它工作正常。
<!-- <SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_1.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_2.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_3.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_4.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_5.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_6.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_7.m4s"/>
<SegmentURL media="https://www.dash.com/bbbhewma/dash_bbbh1000k_8.m4s"/> -->
我正在尝试读取通过 php 代码获取视频片段的 segmentURL,但它不起作用,我的 mpd 代码行:
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=1"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=2"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=3"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=4"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=5"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=6"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=7"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=8"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=9"/>
<SegmentURL media="https://www.dash.com/cgi.php/?pflag=0&segment=10"/>
有什么方法可以按照我想要的方式获取视频片段吗? 通过 php?我有 php 代码,它工作正常,因为当我从浏览器发出请求时,它会执行我想要的操作,但是当破折号读取 mpd 并且客户端请求 php 代码时,客户端没有响应。
我认为问题是我没有正确使用 SegmentURL 标记,因为我没有以直接方式传递视频,我传递的是 php 代码,当我执行它。
非常感谢!!
这是 php 代码。如果我在浏览器中执行此代码,它会下载文件,但不会从 mpd 下载文件。当浏览器下载文件时,它给出了一个 http 代码 204,这意味着没有内容。我该如何解决? 变量 $segment 只是一个段的数字。
$file = '/bbbhewma/dash_bbbh1000k_' . $segment . '.m4s';
if (file_exists('/usr/local/apache2/www/dash/CUSUM-dashjs13' . $file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Type: video/mp4');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('accept-ranges: bytes');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
从客户的角度来看,这绝对有效。客户端不知道服务器 return 是直接还是通过脚本发送段。这就是为什么我认为问题出在 PHP 脚本或服务器配置中。
很难说无法访问脚本 and/or 流,但问题的原因之一可能是脚本没有 return 正确的 HTTP 状态代码(即 200)。另一个原因可能是 returned 段的 MIME 类型没有相应设置(例如 "video/mp4")。也许 returned 段的内容被 PHP 脚本破坏了。没有更多信息,只能猜测。