Можно ли изменить MPD с URL-адресами, которые указывают 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"/> -->

Я пытаюсь прочитать сегмент UR, получающий сегмент видео через код php, но он не работает, с этими строками моего кода 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, что означает отсутствие содержимого. Как я мог решить это?
Переменная $ сегмент — это просто номер сегмента.

$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;

0

Решение

С точки зрения клиента это должно определенно работать. Клиент не знает, возвращает ли сервер сегмент напрямую или через скрипт. Вот почему я думаю, что проблема в сценарии PHP или конфигурации сервера.

Трудно сказать без доступа к сценарию и / или потоку, но одной из причин проблемы может быть то, что сценарий не возвращает правильный код состояния HTTP (например, 200). Другая причина может заключаться в том, что тип MIME возвращаемого сегмента не устанавливается соответствующим образом (например, «video / mp4»). Возможно, содержимое возвращаемого сегмента будет повреждено скриптом PHP. Без дополнительной информации можно только догадываться.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]