Apache - потоковое видео HTML5 без создания веб-страницы для каждого видео

У меня есть веб-сервер Apache 2.2.22, работающий на Raspbian (RasPi Debian). У меня есть файлы .mp4 в папке, которые я могу без проблем передавать в свой веб-браузер локально или через Интернет.

Однако моя Playstation 4 не берет ссылку на файл и не транслирует его; Для потоковой передачи видео требуется HTML-плеер. Я не хочу создавать плеер для каждого видео. Я не могу сделать плеер, в котором вы вводите название видео и нажимаете кнопку воспроизведения, потому что названия слишком длинные и их слишком много.

Я не знаю, как это обойти без необходимости создавать HTML-страницу для каждого видео или, по крайней мере, HTML-страницу, включающую каждое видео.

РЕДАКТИРОВАТЬ:

Я заметил, что при просмотре исходного видео в Google Chrome появилось следующее:

<html>
<head>
<meta name="viewport" content="width=device-width">
<style type="text/css">
</style>
</head>
<body>
<video controls="" autoplay="" name="media">
<source src="http://10.0.0.21/media/blahblahblah.mp4" type="video/mp4">
</video>
</body>
</html>

Есть ли способ заставить Playstation (или любой браузер?) использовать это? Вместо того, чтобы браузер (google chrome) автоматически применял этот HTML к видео MP4?


person GShocked    schedule 17.08.2015    source источник
comment
Любой сценарий на стороне сервера (то есть на стороне PI) может создать страницу. Вы можете использовать PHP, чтобы генерировать его на лету, или простой сценарий bash, чтобы предварительно генерировать их по запросу.   -  person GolezTrol    schedule 17.08.2015
comment
Как бы я поступил с методом PHP?   -  person GShocked    schedule 17.08.2015


Ответы (1)


Playstation 4 будет воспроизводить видео HTML5, если оно в правильном формате, как вы заметили выше.

спецификации для MP4:

Video: H.264/MPEG-4 AVC High Profile Level4.2
Audio: AAC LC, AC-3 (Dolby Digital)

Кроме того, вам нужно убедиться, что moov atom находится в начале файла, чтобы иметь возможность немедленно начать воспроизведение.

С Apache вы можете делать перенаправления. Например. http://example.com/play/video_id можно перенаправить на страницу со сценарием, которая использует идентификатор видео для создания проигрывателя HTML5 на лету.

Если вы хотите избежать создания сценария (например, PHP), который динамически генерирует страницу HTML на основе файлов MP4 в каталоге, альтернативой является использование медиа-сервера с открытым исходным кодом.

Примером может служить Plex Media Server. У него есть версия для Linux, и есть статьи о том, как -local-network-to-your-ps4/" rel="nofollow">транслировать на PS4. Также есть RasPlex и OSMC и другие, если вам не удалось установить Plex на Raspberry Pi.

В качестве бонуса вы получаете приятный интерфейс.

person aergistal    schedule 26.08.2015
comment
Раньше я использовал Plex, однако мне нужно купить членство, если я хочу транслировать через Интернет. Именно поэтому я перестал его использовать. - person GShocked; 26.08.2015
comment
Когда я пытаюсь использовать прямую ссылку на видео в формате mp4 на своей PS4, он говорит, что данные не поддерживаются. Я знаю, что он может воспроизводить видео HTML5, если оно находится в форме на странице HTML, но я не уверен, что оно может принимать прямые ссылки, как вы говорите. - person GShocked; 26.08.2015
comment
Нет, прямых ссылок нет. Он работает только в HTML <video>, если файл закодирован в соответствии со спецификациями. Вы можете использовать один из других медиа-серверов или изучить веб-скрипты. - person aergistal; 26.08.2015
comment
Для кодирования и сжатия этих видео для потоковой передачи я использую Handbrake. Я установил Anamorphic на None; Частота кадров до постоянной; Постоянное качество до 23 RF; Аудио до 128 кбит/с Dolby Pro Logic II AAC (avcodec); Видео в H.264 (x264). - person GShocked; 26.08.2015
comment
Вот почему я хотел использовать PHP для загрузки формы <video> по каждой прямой ссылке, чтобы она воспроизводилась на моей PS4. Если PS4 автоматически не игнорирует файл, если это прямая ссылка, это должно работать. - person GShocked; 26.08.2015
comment
С Apache вы можете делать перенаправления. Например. http://example.com/play/video_id можно перенаправить на страницу PHP, которая использует идентификатор видео для создания проигрывателя HTML5. - person aergistal; 26.08.2015
comment
Я попробую это, но я не уверен, проигнорирует ли PS4 перенаправление и скажет «Данные не поддерживаются» или подтвердит перенаправление и продолжит работу. Я должен буду узнать. - person GShocked; 27.08.2015
comment
Как мне создать редирект? Я пытался выяснить, как, но я не могу понять, как это сделать. Я не хочу создавать еще один виртуальный хост, поэтому я обнаружил, что по умолчанию есть 000-default, расположенный в /etc/apache2/sites-enabled, но он не заканчивается на .conf, у него нет типа файла. Поэтому я добавил RedirectMatch (.*)\.mp4$ http://10.0.0.21/media/index.php?id=$1.mp4 к 000-default, но это не сработало. - person GShocked; 27.08.2015
comment
Я пытался добавить эту строку (и даже простую Redirect) в apache2.conf, 000-default, default и даже в созданный мной файл с именем default.conf, расположенный в папке sites-available. - person GShocked; 27.08.2015
comment
Вы должны перенаправлять только те URL-адреса, которые начинаются с определенного префикса, потому что вам все равно нужен доступ к прямой ссылке на видео в браузере. Если вы перенаправите все запросы mp4, то тег <video> также попытается загрузить файл PHP и потерпит неудачу. - person aergistal; 27.08.2015
comment
Где я должен разместить свою линию перенаправления в любом случае? apache2.conf? 000-по умолчанию? По умолчанию? default.conf? - person GShocked; 29.08.2015
comment
Я присудил вам награду за вашу поддержку. Оказалось, что мне это даже не нужно. Я обнаружил, что используя мой первый вопрос по stackoverflow сработал! Все, что мне нужно сделать, это ввести каталог (то есть /media) и нажать «Перейти». Затем я могу перейти к любому видео/аудио, которое я хочу, на своей PS4. Я думаю, что сделаю это еще проще, так что мне не нужно будет вводить /media или даже нажимать go, все, что мне нужно сделать, это заключить все в большой iFrame в качестве простого исправления! :) - person GShocked; 30.08.2015