{"id":324441,"date":"2026-07-13T13:42:48","date_gmt":"2026-07-13T13:42:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/sign-language-video-player\/"},"modified":"2026-07-13T19:14:50","modified_gmt":"2026-07-13T19:14:50","slug":"arielhf-videopip-overlay","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/arielhf-videopip-overlay\/","author":13714914,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.0","stable_tag":"1.2.0","tested":"7.0.1","requires":"5.6","requires_php":"7.4","requires_plugins":null,"header_name":"ArielHF VideoPIP Overlay","header_author":"Ariel Hern\u00e1ndez Friz","header_description":"Video player with an optional picture-in-picture (PiP) mini overlay \u2014 ideal for sign language or any secondary synchronized video. Supports self-hosted MP4, Vimeo, and optional WebVTT subtitles.","assets_banners_color":"2e3334","last_updated":"2026-07-13 19:14:50","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/ahernandezfriz\/reproductor-senas","header_author_uri":"https:\/\/arielhf.cl","rating":0,"author_block_rating":0,"active_installs":0,"downloads":37,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.0":{"tag":"1.2.0","author":"arielhf","date":"2026-07-13 19:14:50"}},"upgrade_notice":{"1.2.0":"<p>Recommended update: new plugin name\/slug for WordPress.org, prefixed APIs, and shortcode <code>[ahvpo_player]<\/code> (legacy <code>[video_senas]<\/code> still works).<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3606114,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3606114,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3606114,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3606114,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Player with mini overlay and custom controls","2":"Subtitles displayed above the control bar","3":"Settings page with shortcode documentation"}},"plugin_section":[],"plugin_tags":[1953,80,178358,1982,222],"plugin_category":[34,43,50],"plugin_contributors":[271362],"plugin_business_model":[],"class_list":["post-324441","plugin","type-plugin","status-publish","hentry","plugin_tags-accessibility","plugin_tags-shortcode","plugin_tags-sign-language","plugin_tags-subtitles","plugin_tags-video","plugin_category-accessibility","plugin_category-customization","plugin_category-media","plugin_contributors-arielhf","plugin_committers-arielhf"],"banners":{"banner":"https:\/\/ps.w.org\/arielhf-videopip-overlay\/assets\/banner-772x250.png?rev=3606114","banner_2x":"https:\/\/ps.w.org\/arielhf-videopip-overlay\/assets\/banner-1544x500.png?rev=3606114","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/arielhf-videopip-overlay\/assets\/icon-128x128.png?rev=3606114","icon_2x":"https:\/\/ps.w.org\/arielhf-videopip-overlay\/assets\/icon-256x256.png?rev=3606114","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Insert an accessible video player with an optional draggable mini overlay (picture-in-picture style, in-player \u2014 not the browser PiP API), optional WebVTT subtitles, and custom controls that work inside modals and page builders.<\/p>\n\n<p><strong>Live demo<\/strong><\/p>\n\n<p><a href=\"https:\/\/arielhf.cl\/plugins-video-pip-overlay\/\">Try the live demo<\/a><\/p>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li>Main video from a direct file URL or Vimeo<\/li>\n<li>Optional mini overlay video (file or Vimeo), synchronized with the main video \u2014 typically sign language, or any secondary video<\/li>\n<li>Optional WebVTT subtitles from your site's Media Library<\/li>\n<li>Draggable mini overlay window (mouse and touch)<\/li>\n<li>Automatic re-sync when playback drifts<\/li>\n<li>Coordinated asset loading with graceful degradation if the overlay or subtitles fail<\/li>\n<li>Multiple players per page<\/li>\n<li>Works in Elementor popups, Bootstrap modals, and other dynamic content<\/li>\n<li>No frontend branding or tracking<\/li>\n<\/ul>\n\n<p><strong>Third-party services<\/strong><\/p>\n\n<p>When you use Vimeo URLs, the player loads Vimeo's embed and Player API. Review Vimeo's terms: https:\/\/vimeo.com\/terms<\/p>\n\n<p>Subtitle files are read from your own site. This plugin does not send visitor data to analytics services.<\/p>\n\n<p><strong>Development<\/strong><\/p>\n\n<p>Source development repository: https:\/\/github.com\/ahernandezfriz\/reproductor-senas<\/p>\n\n<h3>Usage<\/h3>\n\n<p>Basic shortcode:<\/p>\n\n<pre><code>[ahvpo_player principal=\"https:\/\/example.com\/wp-content\/uploads\/videos\/talk.mp4\" senas=\"https:\/\/example.com\/wp-content\/uploads\/videos\/talk-signs.mp4\"]\n<\/code><\/pre>\n\n<p>Full example:<\/p>\n\n<pre><code>[ahvpo_player principal=\"https:\/\/vimeo.com\/123456789\" senas=\"https:\/\/example.com\/wp-content\/uploads\/videos\/sign-language.mp4\" subtitulos=\"https:\/\/example.com\/wp-content\/uploads\/subtitles\/talk.vtt\" titulo=\"Accessibility talk\" ancho=\"800px\"]\n<\/code><\/pre>\n\n<p><strong>Parameters<\/strong><\/p>\n\n<ul>\n<li><code>principal<\/code> (required) \u2014 Vimeo URL or direct video file URL<\/li>\n<li><code>senas<\/code> (optional) \u2014 Mini overlay video URL (Vimeo or file); typically sign language or any secondary video<\/li>\n<li><code>subtitulos<\/code> (optional) \u2014 WebVTT file URL from this site. Leave empty to hide subtitles<\/li>\n<li><code>titulo<\/code> (optional) \u2014 Title shown above the player<\/li>\n<li><code>ancho<\/code> (optional) \u2014 Maximum width, e.g. <code>800px<\/code> or <code>100%<\/code>. Default: <code>100%<\/code><\/li>\n<\/ul>\n\n<p>Legacy alias: <code>[video_senas]<\/code> still works with the same parameters.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>arielhf-videopip-overlay<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress<\/li>\n<li>Place the shortcode on any page or post<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20i%20mix%20vimeo%20and%20self-hosted%20videos%3F\"><h3>Can I mix Vimeo and self-hosted videos?<\/h3><\/dt>\n<dd><p>Yes. <code>principal<\/code> and <code>senas<\/code> are independent. For example, the main video can be on Vimeo while the mini overlay is an MP4 in your uploads folder.<\/p><\/dd>\n<dt id=\"where%20should%20subtitle%20files%20live%3F\"><h3>Where should subtitle files live?<\/h3><\/dt>\n<dd><p>Upload <code>.vtt<\/code> files to your WordPress Media Library. The shortcode must use a URL from the same site.<\/p><\/dd>\n<dt id=\"does%20it%20work%20inside%20elementor%20popups%3F\"><h3>Does it work inside Elementor popups?<\/h3><\/dt>\n<dd><p>Yes. The player initializes on DOM changes, Elementor popup events, and first user interaction as a fallback.<\/p><\/dd>\n<dt id=\"is%20this%20the%20browser%20picture-in-picture%20api%3F\"><h3>Is this the browser Picture-in-Picture API?<\/h3><\/dt>\n<dd><p>No. The mini overlay is an in-player picture-in-picture style window inside the player stage. It does not use the browser PiP API.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Renamed to ArielHF VideoPIP Overlay (distinctive display name and slug for WordPress.org).<\/li>\n<li>Prefixed PHP APIs, script handles, AJAX actions, and text domain (<code>ahvpo_<\/code> \/ <code>arielhf-videopip-overlay<\/code>).<\/li>\n<li>Primary shortcode <code>[ahvpo_player]<\/code> with <code>[video_senas]<\/code> kept as a backward-compatible alias.<\/li>\n<li>Clarified in-player PiP overlay vs browser Picture-in-Picture API.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>WordPress.org release preparation: conditional asset loading, i18n, security hardening, and documentation updates.<\/li>\n<li>Support for Vimeo and self-hosted videos in any combination.<\/li>\n<li>Optional WebVTT subtitles embedded server-side for reliability.<\/li>\n<li>Coordinated loading with warnings when sign language or subtitles fail.<\/li>\n<li>Popup\/modal compatibility improvements (Elementor, Bootstrap).<\/li>\n<\/ul>\n\n<h4>1.0.22<\/h4>\n\n<ul>\n<li>Vimeo player integration for main and sign language videos.<\/li>\n<li>Mixed source support (Vimeo + local files).<\/li>\n<\/ul>\n\n<h4>1.0.21<\/h4>\n\n<ul>\n<li>Coordinated asset loading and user-facing load states.<\/li>\n<\/ul>\n\n<h4>1.0.20<\/h4>\n\n<ul>\n<li>Fixed WebVTT parsing and server-side cue embedding.<\/li>\n<\/ul>\n\n<h4>1.0.19<\/h4>\n\n<ul>\n<li>Subtitle button styling and version sync.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Robust initialization in dynamic modals and popups.<\/li>\n<li>Sign language window enabled by default.<\/li>\n<li>ARIA improvements.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Video player with an optional picture-in-picture (PiP) mini overlay \u2014 ideal for sign language or any secondary synchronized video.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/324441","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=324441"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/arielhf"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=324441"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=324441"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=324441"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=324441"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=324441"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=324441"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}