{"id":264663,"date":"2025-12-18T13:08:59","date_gmt":"2025-12-18T13:08:59","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ant-media-secure-video\/"},"modified":"2026-06-12T12:54:17","modified_gmt":"2026-06-12T12:54:17","slug":"ant-media-secure-video","status":"publish","type":"plugin","link":"https:\/\/cn.wordpress.org\/plugins\/ant-media-secure-video\/","author":23407313,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.0","requires":"5.6","requires_php":"7.0","requires_plugins":null,"header_name":"Ant Media Secure Video","header_author":"balajant","header_description":"Embed secure video tags for Ant Media Server VOD access with HLS.js support. Currently supports JWT; designed to be extended with more methods (e.g., TOTP).","assets_banners_color":"","last_updated":"2026-06-12 12:54:17","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":319,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"balajant","date":"2025-12-18 13:08:48"},"1.1.0":{"tag":"1.1.0","author":"balajant","date":"2026-06-12 12:54:17"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3422954,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3422954,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon-512x512.png":{"filename":"icon-512x512.png","revision":3422954,"resolution":"512x512","location":"assets","locale":"","width":512,"height":512}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[246670,127055,582,222,31065],"plugin_category":[50],"plugin_contributors":[252459],"plugin_business_model":[],"class_list":["post-264663","plugin","type-plugin","status-publish","hentry","plugin_tags-ant-media-server","plugin_tags-hls","plugin_tags-streaming","plugin_tags-video","plugin_tags-vod","plugin_category-media","plugin_contributors-balajant","plugin_committers-balajant"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ant-media-secure-video\/assets\/icon-128x128.png?rev=3422954","icon_2x":"https:\/\/ps.w.org\/ant-media-secure-video\/assets\/icon-256x256.png?rev=3422954","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>A WordPress plugin for embedding JWT token secured video\/audio content from Ant Media Server.\nUses raw video tag for mp4 videos, audio tag for mp3 and HLS.js for .m3u8 manifests.<\/p>\n\n<p>The JWT tokens are generated in the browser.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li><strong>HLS.js Integration<\/strong>: Uses HLS.js library to play m3u8 HLS streams in all browsers<\/li>\n<li><strong>JWT Authentication<\/strong>: Secure token-based authentication for video streams<\/li>\n<li><strong>WordPress Shortcode<\/strong>: Easy integration using <code>[amsv_video]<\/code> shortcode<\/li>\n<li><strong>Responsive Design<\/strong>: Videos automatically scale to fit container width<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin relies on the HLS.js library to play HLS streams.<\/p>\n\n<ul>\n<li>Library: hls.js (v1.6.15 from https:\/\/github.com\/video-dev\/hls.js\/releases\/tag\/v1.6.15)<\/li>\n<li>Source: https:\/\/github.com\/video-dev\/hls.js<\/li>\n<li>License: Apache 2.0<\/li>\n<li>License URI: https:\/\/github.com\/video-dev\/hls.js\/blob\/master\/LICENSE<\/li>\n<\/ul>\n\n<p>The plugin's purpose is to load video streams as HLS manifests or direct mp4 files into the page,\nso as such it relies on the external video service provided by Ant Media Server. Where and how\nAnt Media Server is running is up to the user of the plugin, the installation instructions for that\nsoftware can be found in its public documentation.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Configure the plugin settings at <strong>Settings &gt; Ant Media Secure Video<\/strong>.<\/li>\n<li>Enter your Ant Media Server URL, Port, App Name, and Shared Secret.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20use%20the%20shortcode%3F\"><h3>How do I use the shortcode?<\/h3><\/dt>\n<dd><p>Use the <code>[amsv_video]<\/code> shortcode in any post or page. The only required parameter is <code>streamId<\/code>.<\/p>\n\n<p>Basic example:\n    [amsv_video streamId=\"lesson1\"]<\/p>\n\n<p>Advanced example:\n    [amsv_video streamId=\"lesson1\" poster=\"https:\/\/example.com\/poster.jpg\" autoplay=\"0\" controls=\"1\" preload=\"metadata\" ttl=\"1800\" width=\"640\" height=\"360\"]<\/p>\n\n<p>Audio example:<\/p>\n\n<pre><code>[amsv_video streamId=\"audiobooks\/mybook\/chapter01.mp3\"]\n<\/code><\/pre><\/dd>\n<dt id=\"what%20parameters%20are%20available%3F\"><h3>What parameters are available?<\/h3><\/dt>\n<dd><ul>\n<li><code>streamId<\/code> (required): The stream ID from Ant Media Server. Can include .mp4 or .m3u8 extension<\/li>\n<li><code>poster<\/code> (optional): URL to poster image<\/li>\n<li><code>autoplay<\/code> (optional): Set to \"1\" to autoplay (default: \"0\")<\/li>\n<li><code>controls<\/code> (optional): Set to \"1\" to show controls (default: \"1\")<\/li>\n<li><code>preload<\/code> (optional): Preload behavior - \"none\", \"metadata\", \"auto\" (default: \"metadata\")<\/li>\n<li><code>ttl<\/code> (optional): Custom token TTL in seconds (overrides global setting)<\/li>\n<li><code>width<\/code> (optional): Video width in pixels or with unit like \"100%\", \"640px\" (optional)<\/li>\n<li><code>height<\/code> (optional): Video height in pixels or with unit like \"360px\", \"50%\" (optional)<\/li>\n<li><code>controlsList<\/code> (optional): Controls to hide - \"nodownload\", \"nofullscreen\", \"noremoteplayback\" (default: \"nodownload\")<\/li>\n<li><code>class<\/code> (optional): Custom CSS classes to add to the video element<\/li>\n<\/ul><\/dd>\n<dt id=\"how%20does%20the%20authentication%20work%3F\"><h3>How does the authentication work?<\/h3><\/dt>\n<dd><p>The plugin generates a JWT token using your configured Secret Key. This token is appended to the HLS stream URL\nand all subsequent segment requests, ensuring that only authorized viewers can access the content.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added <code>class<\/code> attribute for custom CSS classes on the video element<\/li>\n<li>Added <code>controlsList<\/code> attribute with <code>nodownload<\/code> default<\/li>\n<li>Folder prefixes in <code>streamId<\/code> are now stripped for JWT token generation<\/li>\n<li>Removed default <code>width: 100%<\/code> \u2014 width is only set when explicitly specified<\/li>\n<li>Support mp3 files and render <code>audio<\/code> tag<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Release version with HLS.js integration<\/li>\n<li>Support for JWT authentication<\/li>\n<\/ul>","raw_excerpt":"Embed secure video tags for Ant Media Server VOD access with HLS.js support. Currently supports JWT authentication.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/264663","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=264663"}],"author":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/balajant"}],"wp:attachment":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=264663"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=264663"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=264663"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=264663"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=264663"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=264663"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}