Перейти к содержанию

Приложение "Videos" - организовать страницу с плейлистом в виде Json


Рекомендуемые сообщения

Имеется приложение "Videos".

Перетягнул себе весь jwplayer  8.13.7, так как мне не по карману ихние тарифы.

Хоочу - организовать страницу с плейлистом в виде Json.

К примеру, имеется плеер:

https://www.jwplayer.com/developers/web-player-demos/custom-css-demo/

который тянет плейлист отсюда:

https://cdn.jwplayer.com/v2/media/jumBvHdL

Приложение Видео версии 3.2.1 имеет ссылку на страницу видео такого вида:

Система:  app=videos&module=videos&controller=view

ЧПУ:        videos/v/view/{#id}

Хотелось бы ссылку на Json-плейлист иметь вида app=videos&module=videos&controller=pls и videos/v/pls/{#id} соответственно.

Данные, которые там должны быть, это Заголовок, описание, ссылка на видео и на изображение.

Плеером могу поделиться, если актуально...

Изменено пользователем Ruskat
Ссылка на комментарий
Поделиться на другие сайты

Добавить необходимый ЧПУ в videos/data/furl.json. Создать файл pls.php в videos/modules/front/videos/ и взять содержимое с файла view.php. Удалить все ненужные методы, оставив только manage() и его очистить. Заменить в файле все упоминания контроллера view на pls. Ну и уже после этого формировать и выводить json в методе manage().

Ссылка на комментарий
Поделиться на другие сайты

WaNted Cпасибо. Получилось вот так: pls.php

<?php
/**
 * @package		Videos
 * @author		<a href='http://www.devfuse.com'>DevFuse</a>
 * @copyright	(c) 2015 DevFuse
 */
namespace IPS\videos\modules\front\videos;
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
	exit;
}
/*** view*/
class _pls extends \IPS\Content\Controller
{
	/**
	 * [Content\Controller]	Class
	 */
	protected static $contentModel = 'IPS\videos\Video';       
	/**
	 * View Video Page	http://site/v/pls/53
	 *
	 * @return	void
	 */
	protected function manage()
	{
		$document = \IPS\Xml\Rss::newDocument( \IPS\Http\Url::internal( 'app=videos&module=videos&controller=pls', 'front', 'videos' ), \IPS\Member::loggedIn()->language()->get('latest_videos_main'), \IPS\Member::loggedIn()->language()->get('latest_videos_main') );
		$video = \IPS\videos\Video::loadAndCheckPerms( \IPS\Request::i()->id ); 
		//$document->addItem( $video->title, $video->url, $video->description, \IPS\DateTime::ts( $video->date ), $video->tid );
		$description = $video->description;
		$date = $video->date;
		//$description = strip_tags($description); //	Чистимо опис від тегів
		$description = str_replace(array("\r\n", "\r", "\n"), '',  strip_tags($description));
		
		$document = "{\"title\":\"".$video->title."\",\"description\":\"".$description."\",\"playlist\":[{\"title\":\"".$video->title."\",\"mediaid\":\"".$video->tid."\",\"link\":\"".$video->url()."\",\"image\":\"//bsemd.in.ua/ups/video/preview/".$video->thumbnail."\",\"pubdate\":1492541625,\"description\":\"".$description."\",\"sources\":[{\"file\":\"//bsemd.in.ua/ups/video/files/".$video->video_data."\",\"type\":\"video/webm\",\"mediaTypes\":[\"video/webm; codecs=\"vp9\"]]]}}}";
		
		//$document = strip_tags($document);
		//$document = " ".$video->title." + ".$description." + ".$video->video_data." + ".$video->thumbnail." + ".$video->tid." + ".$date." + ".$video->url()." - ";
		\IPS\Output::i()->sendOutput( $document, 200, 'text/json' ); 
	} 
}

player.php

<!DOCTYPE html>
<html lang="ua">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Media player</title>
</head>
<body>
<?php
$mode = array("embed", "img"); /*Вказуємо режив для вставки*/
	if (isset($_GET['s'])){$media_lnk = $_GET['s'];
	$img_default = "https://cdn.eventplanner.tv/imgs/[email protected]";
	if (isset($_GET['i'])){$img = $_GET['i'];}else{$img = $img_default;}	//Обкладинка відео
	if (isset($_GET['as'])){if($_GET['as'] == 1){$as = 'true';}else{$as ="false";}}else{$as ="false";}
?>
	<?php	if (preg_match_all("/.*mode=embed.*?/i", $_SERVER['QUERY_STRING'], $nll)){	?>
	<style>
			body {
			margin: 0;
			padding: 0;
			overflow: hidden;
			}
		</style>
		<div id="player"></div>
	<?php	}else{	?>
		<section class="container jwux-demo">
			<div id="player"></div>
		</section>
	<?php	}	?>
<script src="https://cdn.jwplayer.com/players/URu9uq2z-hDZaZjnc.js"></script>
	<script>
		const playerInstance = jwplayer('player').setup({
	<?php	$info = new SplFileInfo($media_lnk);
			$video_ext = array("mp4", "webm", "m4v", "mov", "mpd", "m3u8");
			//include 'mimes.php';
				//var_dump($info->getExtension());
			if (in_array($info->getExtension(), $video_ext)) {
	?>
		    playlist: [{ //	Вставка відео
				file: '<?php echo $media_lnk; ?>',
				//title: 'Caminandes VR',
				//description: 'Якийсь там опис...',
				image: '<?php echo $img; ?>'
				}],
	<?php
			}else{
	?>
				playlist: '<?php echo $media_lnk; ?>',
	<?php
			}
	?>
			autostart: '<?php echo $as; ?>',
				floating: true,
		});
		playerInstance.on('ready', function() {
		  // Move the timeslider in-line with other controls
		  const playerContainer = playerInstance.getContainer();
		  const buttonContainer = playerContainer.querySelector('.jw-button-container');
		  const spacer = buttonContainer.querySelector('.jw-spacer');
		  const timeSlider = playerContainer.querySelector('.jw-slider-time');
		  buttonContainer.replaceChild(timeSlider, spacer);
		});
	</script>
	<?php 
	if (preg_match_all("/.*mode=embed.*?/i", $_SERVER['QUERY_STRING'], $nll)){
		//echo "mode emmmmbedd!";	  Не показуати інший зміст окрім відео плеєра!
	}else{	?>
	<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque dui ex, suscipit eu ultrices et, congue nec quam. Sed ultricies bibendum quam at sollicitudin. Mauris ut dapibus sapien. Sed turpis mauris, cursus in enim ut, sodales tempus tortor. Donec varius aliquam massa. Donec fermentum pellentesque molestie. Integer varius porta vehicula. Etiam volutpat nibh et nisl malesuada, vel auctor tellus commodo. Aliquam quis pharetra diam. Aliquam efficitur molestie viverra. Curabitur eu vulputate odio. Praesent sollicitudin tincidunt rhoncus. Phasellus nunc metus, blandit quis arcu at, feugiat viverra lorem. Phasellus sollicitudin augue at tincidunt ullamcorper. Quisque non ipsum augue.</p>
	<p>Donec eget urna sit amet tellus varius efficitur ac sodales lorem. Nullam id elit eros. Etiam finibus nunc vel ante condimentum, eu ullamcorper lorem commodo. Maecenas pretium, nulla id iaculis convallis, lectus dui feugiat arcu, sit amet placerat augue turpis quis ante. Sed sit amet ornare dui. Ut maximus suscipit dictum. Fusce vitae justo tortor. Cras ac vestibulum augue, sed tristique felis. Nam tincidunt sapien velit, dignissim tempus justo laoreet in.</p>
	<p>Vivamus eleifend congue lectus, quis ullamcorper tortor accumsan non. Duis vitae mattis tortor. Nulla vitae odio enim. Praesent eu orci at elit venenatis luctus. Praesent at luctus mauris. Maecenas accumsan posuere varius. Suspendisse id vehicula mauris. Vestibulum id neque vitae dui lobortis eleifend non sed erat. Nunc posuere augue nec turpis ornare facilisis. Vivamus lectus justo, commodo sed molestie consequat, dictum sed est. Maecenas semper velit placerat ex finibus rhoncus. Duis nisi justo, pharetra ac ipsum ac, gravida venenatis risus. Praesent eu est ultrices, lobortis felis quis, volutpat augue. Mauris non varius lacus. Etiam pulvinar ornare lectus et tristique.</p>
	
		<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque dui ex, suscipit eu ultrices et, congue nec quam. Sed ultricies bibendum quam at sollicitudin. Mauris ut dapibus sapien. Sed turpis mauris, cursus in enim ut, sodales tempus tortor. Donec varius aliquam massa. Donec fermentum pellentesque molestie. Integer varius porta vehicula. Etiam volutpat nibh et nisl malesuada, vel auctor tellus commodo. Aliquam quis pharetra diam. Aliquam efficitur molestie viverra. Curabitur eu vulputate odio. Praesent sollicitudin tincidunt rhoncus. Phasellus nunc metus, blandit quis arcu at, feugiat viverra lorem. Phasellus sollicitudin augue at tincidunt ullamcorper. Quisque non ipsum augue.</p>
	<p>Donec eget urna sit amet tellus varius efficitur ac sodales lorem. Nullam id elit eros. Etiam finibus nunc vel ante condimentum, eu ullamcorper lorem commodo. Maecenas pretium, nulla id iaculis convallis, lectus dui feugiat arcu, sit amet placerat augue turpis quis ante. Sed sit amet ornare dui. Ut maximus suscipit dictum. Fusce vitae justo tortor. Cras ac vestibulum augue, sed tristique felis. Nam tincidunt sapien velit, dignissim tempus justo laoreet in.</p>
	<p>Vivamus eleifend congue lectus, quis ullamcorper tortor accumsan non. Duis vitae mattis tortor. Nulla vitae odio enim. Praesent eu orci at elit venenatis luctus. Praesent at luctus mauris. Maecenas accumsan posuere varius. Suspendisse id vehicula mauris. Vestibulum id neque vitae dui lobortis eleifend non sed erat. Nunc posuere augue nec turpis ornare facilisis. Vivamus lectus justo, commodo sed molestie consequat, dictum sed est. Maecenas semper velit placerat ex finibus rhoncus. Duis nisi justo, pharetra ac ipsum ac, gravida venenatis risus. Praesent eu est ultrices, lobortis felis quis, volutpat augue. Mauris non varius lacus. Etiam pulvinar ornare lectus et tristique.</p>
	
		<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque dui ex, suscipit eu ultrices et, congue nec quam. Sed ultricies bibendum quam at sollicitudin. Mauris ut dapibus sapien. Sed turpis mauris, cursus in enim ut, sodales tempus tortor. Donec varius aliquam massa. Donec fermentum pellentesque molestie. Integer varius porta vehicula. Etiam volutpat nibh et nisl malesuada, vel auctor tellus commodo. Aliquam quis pharetra diam. Aliquam efficitur molestie viverra. Curabitur eu vulputate odio. Praesent sollicitudin tincidunt rhoncus. Phasellus nunc metus, blandit quis arcu at, feugiat viverra lorem. Phasellus sollicitudin augue at tincidunt ullamcorper. Quisque non ipsum augue.</p>
	<p>Donec eget urna sit amet tellus varius efficitur ac sodales lorem. Nullam id elit eros. Etiam finibus nunc vel ante condimentum, eu ullamcorper lorem commodo. Maecenas pretium, nulla id iaculis convallis, lectus dui feugiat arcu, sit amet placerat augue turpis quis ante. Sed sit amet ornare dui. Ut maximus suscipit dictum. Fusce vitae justo tortor. Cras ac vestibulum augue, sed tristique felis. Nam tincidunt sapien velit, dignissim tempus justo laoreet in.</p>
	<p>Vivamus eleifend congue lectus, quis ullamcorper tortor accumsan non. Duis vitae mattis tortor. Nulla vitae odio enim. Praesent eu orci at elit venenatis luctus. Praesent at luctus mauris. Maecenas accumsan posuere varius. Suspendisse id vehicula mauris. Vestibulum id neque vitae dui lobortis eleifend non sed erat. Nunc posuere augue nec turpis ornare facilisis. Vivamus lectus justo, commodo sed molestie consequat, dictum sed est. Maecenas semper velit placerat ex finibus rhoncus. Duis nisi justo, pharetra ac ipsum ac, gravida venenatis risus. Praesent eu est ultrices, lobortis felis quis, volutpat augue. Mauris non varius lacus. Etiam pulvinar ornare lectus et tristique.</p>
	
		<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque dui ex, suscipit eu ultrices et, congue nec quam. Sed ultricies bibendum quam at sollicitudin. Mauris ut dapibus sapien. Sed turpis mauris, cursus in enim ut, sodales tempus tortor. Donec varius aliquam massa. Donec fermentum pellentesque molestie. Integer varius porta vehicula. Etiam volutpat nibh et nisl malesuada, vel auctor tellus commodo. Aliquam quis pharetra diam. Aliquam efficitur molestie viverra. Curabitur eu vulputate odio. Praesent sollicitudin tincidunt rhoncus. Phasellus nunc metus, blandit quis arcu at, feugiat viverra lorem. Phasellus sollicitudin augue at tincidunt ullamcorper. Quisque non ipsum augue.</p>
	<p>Donec eget urna sit amet tellus varius efficitur ac sodales lorem. Nullam id elit eros. Etiam finibus nunc vel ante condimentum, eu ullamcorper lorem commodo. Maecenas pretium, nulla id iaculis convallis, lectus dui feugiat arcu, sit amet placerat augue turpis quis ante. Sed sit amet ornare dui. Ut maximus suscipit dictum. Fusce vitae justo tortor. Cras ac vestibulum augue, sed tristique felis. Nam tincidunt sapien velit, dignissim tempus justo laoreet in.</p>
	<p>Vivamus eleifend congue lectus, quis ullamcorper tortor accumsan non. Duis vitae mattis tortor. Nulla vitae odio enim. Praesent eu orci at elit venenatis luctus. Praesent at luctus mauris. Maecenas accumsan posuere varius. Suspendisse id vehicula mauris. Vestibulum id neque vitae dui lobortis eleifend non sed erat. Nunc posuere augue nec turpis ornare facilisis. Vivamus lectus justo, commodo sed molestie consequat, dictum sed est. Maecenas semper velit placerat ex finibus rhoncus. Duis nisi justo, pharetra ac ipsum ac, gravida venenatis risus. Praesent eu est ultrices, lobortis felis quis, volutpat augue. Mauris non varius lacus. Etiam pulvinar ornare lectus et tristique.</p>
<!--<script src="https://www.jwplayer.com/developers/web-player-demos/custom-css-demo/demo.js"></script></body>-->
<?php	}
	}else{
		echo "Посилання на медіа відсутнє!";
	}
	?>
</body></html>

Сделал безграмотно, но как мог...

Не получается только результат - плейлист вида .../v/pls/53 адаптировать, чтобы плеер мой плейлист воспринимал.

Ссылка на комментарий
Поделиться на другие сайты

ЧПУ работает? Просто внесение данных в файл на работающем сайте скорее всего не даст результата.

Ссылка на комментарий
Поделиться на другие сайты

Пример Воспроизведения видео:

player.php?mode=embed&s=https://cdn.jwplayer.com/videos/jumBvHdL-8yQ1cYbs.mp4&i=https://assets-jpcust.jwpsrv.com/thumbnails/akbigj5b-720.jpg

Ссылка на комментарий
Поделиться на другие сайты

WaNted Да. По ссылке выводит голую страницу  с тем, что я указал, как и нужно. Только нужно правильно плейлист сформировать. Да и автоопределение при создании статьи реализовать: вставил ссылку на сайт/v/view/54, а она чтобы стала видейкой, как с ютьюб. И всё.

ЧПУ организовал такие:

  •  v/pls/{#id} - это та же ccылка на сформированный плейлист: /v/pls/54, которую должен "схавать" плеер, если это не "что-то" из переменной $video_ext = array("mp4", "webm", "m4v", "mov", "mpd", "m3u8");
  • app=videos&module=videos&controller=pls - системная прописка адреса, согласно тому, в который должны выдуваться данные: $document = \IPS\Xml\Rss::newDocument( \IPS\Http\Url::internal( 'app=videos&module=videos&controller=pls'...., что в файле pls.php в строке №28.
Ссылка на комментарий
Поделиться на другие сайты

\IPS\Output::i()->json( array() );

Заполните массив значениями. У Вас невалидный json.

Ссылка на комментарий
Поделиться на другие сайты

26 минут назад, WaNted сказал:

\IPS\Output::i()->json( array() );

Заполните массив значениями. У Вас невалидный json.

Сделал по вашему примеру: \IPS\Output::i()->json( array($document) ); - окантовалось квдратными скобками. Вот тут уже я не знаю, как правильно организовать по подобию оригинального плейлиста, но под свои нужды.

Ссылка на комментарий
Поделиться на другие сайты

А, так Вы просто используйте \IPS\Output::i()->json( $document ); без array().

Ссылка на комментарий
Поделиться на другие сайты

В общем, файл pls.php оставил при таком мнениии:

<?php
/**
 * @package		Videos
 * @author		<a href='http://www.devfuse.com'>DevFuse</a>
 * @copyright	(c) 2015 DevFuse
 */
namespace IPS\videos\modules\front\videos;
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
	exit;
}
/*** view*/
class _pls extends \IPS\Content\Controller
{
	/**
	 * [Content\Controller]	Class
	 */
	protected static $contentModel = 'IPS\videos\Video';       
	/**
	 * View Video Page	http://.../v/pls/53
	 *
	 * @return	void
	 */
	protected function manage()
	{
		$document = \IPS\Xml\Rss::newDocument( \IPS\Http\Url::internal( 'app=videos&module=videos&controller=pls', 'front', 'videos' ), \IPS\Member::loggedIn()->language()->get('latest_videos_main'), \IPS\Member::loggedIn()->language()->get('latest_videos_main') );
		$video = \IPS\videos\Video::loadAndCheckPerms( \IPS\Request::i()->id ); 
		$description = $video->description;
		$title = $video->title;
		$date = $video->date;
		//$description = strip_tags($description); //	Чистимо опис від тегів
		$description = str_replace(array("\r\n", "\r", "\n"), '',  strip_tags($description));
		//$description = mb_strimwidth($description, 0, 10, "");
		$description = preg_replace( '/"([^"]*)"/', "«$1»", $description );
		$title = str_replace(array("\r\n", "\r", "\n", "\n"), '',  strip_tags($title));
		$title = preg_replace( '/"([^"]*)"/', "«$1»", $title );
		
		$document = '[{"file":"'.$video->video_data.'","image":"'.$video->thumbnail.'","title":"'.$title.'","description":"'.$description.'","mediaid":"'.$video->tid.'"}]'; // http://json.parser.online.fr/
		\IPS\Output::i()->sendOutput( $document, 200, 'text/json' ); 
	} 
}

но беда в том, что из заголовка и описания влазят лишние пробелы, из-за которых плеер не может таботать. Кавычки я исправил, а как от остальных скрытых отступов, пробелов и переносов почистить заголовок и онисание?

Ссылка на комментарий
Поделиться на другие сайты

$video = \IPS\videos\Video::loadAndCheckPerms( \IPS\Request::i()->id );
\IPS\Output::i()->json( array(
	'title'			=> $video->title,
	'description'		=> $video->description,
	'playlist'		=> array(
		'title'			=> $video->title,
		'mediaid'		=> $video->tid,
		'link'			=> $video->url(),
		'image'			=> $video->thumbnail,
		'description'		=> $video->description
	)
) );

 

Ссылка на комментарий
Поделиться на другие сайты

WaNted Спасибо за ответ, но по ходу я что-то делаю не так...

Файл  pls.php:

Спойлер

<?php
/**
 * @package		Videos
 * @author		<a href='http://www.devfuse.com'>DevFuse</a>
 * @copyright	(c) 2015 DevFuse
 */
namespace IPS\videos\modules\front\videos;
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
	exit;
}
/*** view*/
class _pls extends \IPS\Content\Controller
{
	protected static $contentModel = 'IPS\videos\Video';       
	/**
	 * View Video Page	http://.../v/pls/53
	 */
	protected function manage()
	{
		$document = \IPS\Xml\Rss::newDocument( \IPS\Http\Url::internal( 'app=videos&module=videos&controller=pls', 'front', 'videos' ), \IPS\Member::loggedIn()->language()->get('latest_videos_main'), \IPS\Member::loggedIn()->language()->get('latest_videos_main') );
		$video = \IPS\videos\Video::loadAndCheckPerms( \IPS\Request::i()->id ); 
		$description = $video->description;
		$title = $video->title;
		$date = $video->date;
		//$description = strip_tags($description); //	Чистимо опис від тегів
		$description = str_replace(array("\r\n", "\r", "\n"), '',  strip_tags($description));
		//$description = mb_strimwidth($description, 0, 10, "");
		$description = preg_replace( '/"([^"]*)"/', "«$1»", $description );
		//$title = mb_strimwidth($title, 0, 10, "");
		//$title = trim($title, "\x00..\x1F");
		$title = str_replace(array("\r\n", "\r", "\n", "\n"), '',  strip_tags($title));
		$title = preg_replace( '/"([^"]*)"/', "«$1»", $title );
		$vid = "http://сайт/путь к видео/video/files/".$video->video_data;
		$img = "http://сайт/путь к видео/video/preview/".$video->thumbnail;
        \IPS\Output::i()->json( array(
        	'title'		    	=> $title,
        	'description'		=> $description,
        	'playlist' => array(
        		'title'			=> $title,
        		'mediaid'		=> $video->tid,
        		'link'			=> $video->url(),
        		'image'			=> $img,
        		'description'	=> $description,
        		'file'          => $vid
        	)
        ));
	} 
}

 

Выхлоп:
 

{"title":"\u0420\u0435\u0444\u043e\u0440\u043c\u0430 \u0432 \u043d\u0456\u043a\u0443\u0434\u0438 - 24.04.2020","description":"\t\u041c\u0435\u0434\u0438\u0447\u043d\u0430 \u00ab\u0440\u0435\u0444\u043e\u0440\u043c\u0430\u00bb \u043d\u0430 \u0432\u0435\u0441\u043d\u0456 2020 \u0440\u043e\u043a, \u0442\u0430 \u0449\u0435 \u0439 \u0432 \u043f\u0435\u0440\u0456\u043e\u0434 \u043f\u0430\u043d\u0434\u0435\u043c\u0456\u0457 COVID2019 \u043c\u043e\u0436\u043b\u0438\u0432\u043e \u0439 \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u0430 \u043f\u043e\u043a\u0440\u0430\u0449\u0438\u0442\u0438 \u0434\u043e\u0431\u0440\u043e\u0431\u0443\u0442 \u043c\u0435\u0434\u0438\u043a\u0456\u0432 \u0442\u0430 \u0437\u0430\u043e\u0445\u043e\u0447\u0443\u0432\u0430\u0442\u0438 \u0457\u0445 \u0434\u043e \u0440\u043e\u0431\u043e\u0442\u0438 \u0442\u0430 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0456, \u0430\u043b\u0435 \u043f\u043e \u0444\u0430\u043a\u0442\u0443 - \u0432\u0456\u0434\u0431\u0438\u0432\u0430\u0454 \u043d\u0430\u0432\u0456\u0442\u044c \u0431\u0430\u0436\u0430\u043d\u043d\u044f \u00ab\u0441\u0432\u0456\u0442\u0438\u0442\u0438 \u0456\u043d\u0448\u0438\u043c\u00bb \u0447\u0435\u0440\u0435\u0437 \u0444\u0456\u043d\u0430\u043d\u0441\u043e\u0432\u0456 \u0432\u0438\u0440\u0430\u0445\u0443\u0432\u0430\u043d\u043d\u044f.","playlist":{"title":"\u0420\u0435\u0444\u043e\u0440\u043c\u0430 \u0432 \u043d\u0456\u043a\u0443\u0434\u0438 - 24.04.2020","mediaid":"45","link":"http:\/\/bsemd.in.ua\/videos\/v\/view\/45\/","image":"http:\/\/сайт\/путь\/video\/preview\/monthly_2020_04\/Krokus_24_04.2020_Reforma_v_nikudy.mp4_snapshot_01_44_946.jpg.9cb070a47af496bd5a4cbdf78f7acbe9.jpg","description":"\t\u041c\u0435\u0434\u0438\u0447\u043d\u0430 \u00ab\u0440\u0435\u0444\u043e\u0440\u043c\u0430\u00bb \u043d\u0430 \u0432\u0435\u0441\u043d\u0456 2020 \u0440\u043e\u043a, \u0442\u0430 \u0449\u0435 \u0439 \u0432 \u043f\u0435\u0440\u0456\u043e\u0434 \u043f\u0430\u043d\u0434\u0435\u043c\u0456\u0457 COVID2019 \u043c\u043e\u0436\u043b\u0438\u0432\u043e \u0439 \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u0430 \u043f\u043e\u043a\u0440\u0430\u0449\u0438\u0442\u0438 \u0434\u043e\u0431\u0440\u043e\u0431\u0443\u0442 \u043c\u0435\u0434\u0438\u043a\u0456\u0432 \u0442\u0430 \u0437\u0430\u043e\u0445\u043e\u0447\u0443\u0432\u0430\u0442\u0438 \u0457\u0445 \u0434\u043e \u0440\u043e\u0431\u043e\u0442\u0438 \u0442\u0430 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0456, \u0430\u043b\u0435 \u043f\u043e \u0444\u0430\u043a\u0442\u0443 - \u0432\u0456\u0434\u0431\u0438\u0432\u0430\u0454 \u043d\u0430\u0432\u0456\u0442\u044c \u0431\u0430\u0436\u0430\u043d\u043d\u044f \u00ab\u0441\u0432\u0456\u0442\u0438\u0442\u0438 \u0456\u043d\u0448\u0438\u043c\u00bb \u0447\u0435\u0440\u0435\u0437 \u0444\u0456\u043d\u0430\u043d\u0441\u043e\u0432\u0456 \u0432\u0438\u0440\u0430\u0445\u0443\u0432\u0430\u043d\u043d\u044f.","file":"http:\/\/сайт\/путь\/video\/files\/monthly_2020_04\/Krokus_24_04.2020_Reforma_v_nikudy_900.webm.467c125080bed5ac030aaaba286004bb.webm"}}

Плеер этого не понимает. Да. конечно,  можно выводить данные, дорисрвывая вручную нужный синтаксис, только значения подавай, но хочется сделать максимально правильно и работоспособно.

Ссылка на комментарий
Поделиться на другие сайты

Так и должно быть. Может плеер выдаёт какую-то конкретно ошибку?

Ссылка на комментарий
Поделиться на другие сайты

WaNted 

  1. Да, он говорит,что не может прочитать видео. Я полагаю, что этот код предназначен для последующей обработки в РНР или в местах, где нужны обратные слеши и где мультибайтовая кодировка нужна.
  2. Cинтаксис не тот получается.

Примеры по формовке плейлистов JSON или XML есть здесь:

 

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...