Posted 1 мая, 20204 yr 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 1 мая, 20204 yr by Ruskat
2 мая, 20204 yr comment_161893 Добавить необходимый ЧПУ в videos/data/furl.json. Создать файл pls.php в videos/modules/front/videos/ и взять содержимое с файла view.php. Удалить все ненужные методы, оставив только manage() и его очистить. Заменить в файле все упоминания контроллера view на pls. Ну и уже после этого формировать и выводить json в методе manage().
2 мая, 20204 yr 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 адаптировать, чтобы плеер мой плейлист воспринимал.
2 мая, 20204 yr comment_161895 ЧПУ работает? Просто внесение данных в файл на работающем сайте скорее всего не даст результата.
2 мая, 20204 yr 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
2 мая, 20204 yr 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.
2 мая, 20204 yr comment_161898 \IPS\Output::i()->json( array() ); Заполните массив значениями. У Вас невалидный json.
2 мая, 20204 yr Author comment_161899 26 минут назад, WaNted сказал: \IPS\Output::i()->json( array() ); Заполните массив значениями. У Вас невалидный json. Сделал по вашему примеру: \IPS\Output::i()->json( array($document) ); - окантовалось квдратными скобками. Вот тут уже я не знаю, как правильно организовать по подобию оригинального плейлиста, но под свои нужды.
2 мая, 20204 yr comment_161901 А, так Вы просто используйте \IPS\Output::i()->json( $document ); без array().
2 мая, 20204 yr 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' ); } } но беда в том, что из заголовка и описания влазят лишние пробелы, из-за которых плеер не может таботать. Кавычки я исправил, а как от остальных скрытых отступов, пробелов и переносов почистить заголовок и онисание?
2 мая, 20204 yr 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 ) ) );
3 мая, 20204 yr 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"}} Плеер этого не понимает. Да. конечно, можно выводить данные, дорисрвывая вручную нужный синтаксис, только значения подавай, но хочется сделать максимально правильно и работоспособно.
3 мая, 20204 yr Author comment_161914 WaNted Да, он говорит,что не может прочитать видео. Я полагаю, что этот код предназначен для последующей обработки в РНР или в местах, где нужны обратные слеши и где мультибайтовая кодировка нужна. Cинтаксис не тот получается. Примеры по формовке плейлистов JSON или XML есть здесь: Спойлер https://support.jwplayer.com/articles/how-to-embed-external-playlists-and-rss--json-feeds
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.