Jump to content

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

Featured Replies

Posted
comment_161888

Имеется приложение "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} соответственно.

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

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

Edited by Ruskat

comment_161893

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

  • Author
comment_161894

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 адаптировать, чтобы плеер мой плейлист воспринимал.

  • Author
comment_161896

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

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

  • Author
comment_161897

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.
  • Author
comment_161899
26 минут назад, WaNted сказал:

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

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

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

  • Author
comment_161905

В общем, файл 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' ); 
	} 
}

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

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

 

  • Author
comment_161912

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"}}

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

  • Author
comment_161914

WaNted 

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

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

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.