How to make a html5 video poster image transparent to see the background image while video is not playing












2















I am looking for a solution to get a transparent poster image for html5 video.



I have a page with a background picture over the full width of the page (e.g. 1920x600). I would like to only show the video play button in the middle of this background picture. Video and background picture have different aspect ratios. After pressing the play button the video should be displayed over the background picture in the correct aspect ratio.



As html5 video player I use Plyr.



This is the actual implementation for the player:



   <style>
.container_plyr_teaser {
padding: 16px 0px 0px 0px;
max-width: 1000px;
margin: auto;
}
.plyr {
border-radius: 15px;
}
.plyr--stopped .plyr__controls {
opacity: 0;
pointer-events: none;
}
</style>

<div class="container_plyr_teaser">
<video class="js-player" controls playsinline preload="none" id="player11" data-plyr-config='{"volume": 0.3, "resetOnEnd": true, "enabled": true, "storage": { "enabled": false }, "quality": { "default": 720 } }'>
<source src="wolken_360p.mp4" type="video/mp4" size="360">
<source src="wolken_720p.mp4" type="video/mp4" size="720">
<source src="wolken_1080p.mp4" type="video/mp4" size="1080">
</video>
</div>


My first idea, using a transparent poster image poster="Wolken_Poster_transparent_16x9.png" results in a black video player.



Using a transparent poster image results in a black video player



My second idea was to use an exact cutout of the background picture as video poster image. This looks as desired, but only for the exact resolution.



exact cutout of the background picture as video poster



With a wrong resolution of the browser window you will get an unattractive overlap between video poster image and background image.



unattractive overlap



An ideas for another solution?










share|improve this question























  • hide the video, and just keep a play button, when button is pressed, play the hidden video on the top of the image

    – chintuyadavsara
    Nov 23 '18 at 13:39











  • Thanks for your idea. Do you have some example code how to hide the video and just keep the play button?

    – MichaGue
    Nov 23 '18 at 13:50
















2















I am looking for a solution to get a transparent poster image for html5 video.



I have a page with a background picture over the full width of the page (e.g. 1920x600). I would like to only show the video play button in the middle of this background picture. Video and background picture have different aspect ratios. After pressing the play button the video should be displayed over the background picture in the correct aspect ratio.



As html5 video player I use Plyr.



This is the actual implementation for the player:



   <style>
.container_plyr_teaser {
padding: 16px 0px 0px 0px;
max-width: 1000px;
margin: auto;
}
.plyr {
border-radius: 15px;
}
.plyr--stopped .plyr__controls {
opacity: 0;
pointer-events: none;
}
</style>

<div class="container_plyr_teaser">
<video class="js-player" controls playsinline preload="none" id="player11" data-plyr-config='{"volume": 0.3, "resetOnEnd": true, "enabled": true, "storage": { "enabled": false }, "quality": { "default": 720 } }'>
<source src="wolken_360p.mp4" type="video/mp4" size="360">
<source src="wolken_720p.mp4" type="video/mp4" size="720">
<source src="wolken_1080p.mp4" type="video/mp4" size="1080">
</video>
</div>


My first idea, using a transparent poster image poster="Wolken_Poster_transparent_16x9.png" results in a black video player.



Using a transparent poster image results in a black video player



My second idea was to use an exact cutout of the background picture as video poster image. This looks as desired, but only for the exact resolution.



exact cutout of the background picture as video poster



With a wrong resolution of the browser window you will get an unattractive overlap between video poster image and background image.



unattractive overlap



An ideas for another solution?










share|improve this question























  • hide the video, and just keep a play button, when button is pressed, play the hidden video on the top of the image

    – chintuyadavsara
    Nov 23 '18 at 13:39











  • Thanks for your idea. Do you have some example code how to hide the video and just keep the play button?

    – MichaGue
    Nov 23 '18 at 13:50














2












2








2








I am looking for a solution to get a transparent poster image for html5 video.



I have a page with a background picture over the full width of the page (e.g. 1920x600). I would like to only show the video play button in the middle of this background picture. Video and background picture have different aspect ratios. After pressing the play button the video should be displayed over the background picture in the correct aspect ratio.



As html5 video player I use Plyr.



This is the actual implementation for the player:



   <style>
.container_plyr_teaser {
padding: 16px 0px 0px 0px;
max-width: 1000px;
margin: auto;
}
.plyr {
border-radius: 15px;
}
.plyr--stopped .plyr__controls {
opacity: 0;
pointer-events: none;
}
</style>

<div class="container_plyr_teaser">
<video class="js-player" controls playsinline preload="none" id="player11" data-plyr-config='{"volume": 0.3, "resetOnEnd": true, "enabled": true, "storage": { "enabled": false }, "quality": { "default": 720 } }'>
<source src="wolken_360p.mp4" type="video/mp4" size="360">
<source src="wolken_720p.mp4" type="video/mp4" size="720">
<source src="wolken_1080p.mp4" type="video/mp4" size="1080">
</video>
</div>


My first idea, using a transparent poster image poster="Wolken_Poster_transparent_16x9.png" results in a black video player.



Using a transparent poster image results in a black video player



My second idea was to use an exact cutout of the background picture as video poster image. This looks as desired, but only for the exact resolution.



exact cutout of the background picture as video poster



With a wrong resolution of the browser window you will get an unattractive overlap between video poster image and background image.



unattractive overlap



An ideas for another solution?










share|improve this question














I am looking for a solution to get a transparent poster image for html5 video.



I have a page with a background picture over the full width of the page (e.g. 1920x600). I would like to only show the video play button in the middle of this background picture. Video and background picture have different aspect ratios. After pressing the play button the video should be displayed over the background picture in the correct aspect ratio.



As html5 video player I use Plyr.



This is the actual implementation for the player:



   <style>
.container_plyr_teaser {
padding: 16px 0px 0px 0px;
max-width: 1000px;
margin: auto;
}
.plyr {
border-radius: 15px;
}
.plyr--stopped .plyr__controls {
opacity: 0;
pointer-events: none;
}
</style>

<div class="container_plyr_teaser">
<video class="js-player" controls playsinline preload="none" id="player11" data-plyr-config='{"volume": 0.3, "resetOnEnd": true, "enabled": true, "storage": { "enabled": false }, "quality": { "default": 720 } }'>
<source src="wolken_360p.mp4" type="video/mp4" size="360">
<source src="wolken_720p.mp4" type="video/mp4" size="720">
<source src="wolken_1080p.mp4" type="video/mp4" size="1080">
</video>
</div>


My first idea, using a transparent poster image poster="Wolken_Poster_transparent_16x9.png" results in a black video player.



Using a transparent poster image results in a black video player



My second idea was to use an exact cutout of the background picture as video poster image. This looks as desired, but only for the exact resolution.



exact cutout of the background picture as video poster



With a wrong resolution of the browser window you will get an unattractive overlap between video poster image and background image.



unattractive overlap



An ideas for another solution?







css html5 html5-video poster






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 23 '18 at 13:31









MichaGueMichaGue

164




164













  • hide the video, and just keep a play button, when button is pressed, play the hidden video on the top of the image

    – chintuyadavsara
    Nov 23 '18 at 13:39











  • Thanks for your idea. Do you have some example code how to hide the video and just keep the play button?

    – MichaGue
    Nov 23 '18 at 13:50



















  • hide the video, and just keep a play button, when button is pressed, play the hidden video on the top of the image

    – chintuyadavsara
    Nov 23 '18 at 13:39











  • Thanks for your idea. Do you have some example code how to hide the video and just keep the play button?

    – MichaGue
    Nov 23 '18 at 13:50

















hide the video, and just keep a play button, when button is pressed, play the hidden video on the top of the image

– chintuyadavsara
Nov 23 '18 at 13:39





hide the video, and just keep a play button, when button is pressed, play the hidden video on the top of the image

– chintuyadavsara
Nov 23 '18 at 13:39













Thanks for your idea. Do you have some example code how to hide the video and just keep the play button?

– MichaGue
Nov 23 '18 at 13:50





Thanks for your idea. Do you have some example code how to hide the video and just keep the play button?

– MichaGue
Nov 23 '18 at 13:50












1 Answer
1






active

oldest

votes


















0














My solution looks like the following:



<!-- generate an extra button to start the video -->    
<button id="button_teaser" onclick="playPause()">Play</button>

<video class="js-player" poster="poster.jpg" controls playsinline preload="none" id="video_teaser" data-plyr-config='{"volume": 0.3, "resetOnEnd": true, "enabled": true, "storage": { "enabled": false }, "quality": { "default": 720 } }'>
<source src="video_360p.mp4" type="video/mp4" size="360">
<source src="video_720p.mp4" type="video/mp4" size="720">
<source src="video_1080p.mp4" type="video/mp4" size="1080">
</video>

<!-- hide video -->
<script>
$('#video_teaser').hide();
</script>

<!-- after clicking the generated play button, hide play button and show video -->
<script>
$(document).ready(function(){
$('#button_teaser').click(function(){
$('#video_teaser').show();
$('#button_teaser').hide();
$('#video_teaser').get(0).play();
});
});
</script>

<!-- after playing video automatically hide video and show play button again -->
<script>
$(document).ready(function(){
$('#video_teaser').on('ended',function(){
$('#video_teaser').hide();
$('#button_teaser').show();
});
});
</script>





share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53447661%2fhow-to-make-a-html5-video-poster-image-transparent-to-see-the-background-image-w%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    My solution looks like the following:



    <!-- generate an extra button to start the video -->    
    <button id="button_teaser" onclick="playPause()">Play</button>

    <video class="js-player" poster="poster.jpg" controls playsinline preload="none" id="video_teaser" data-plyr-config='{"volume": 0.3, "resetOnEnd": true, "enabled": true, "storage": { "enabled": false }, "quality": { "default": 720 } }'>
    <source src="video_360p.mp4" type="video/mp4" size="360">
    <source src="video_720p.mp4" type="video/mp4" size="720">
    <source src="video_1080p.mp4" type="video/mp4" size="1080">
    </video>

    <!-- hide video -->
    <script>
    $('#video_teaser').hide();
    </script>

    <!-- after clicking the generated play button, hide play button and show video -->
    <script>
    $(document).ready(function(){
    $('#button_teaser').click(function(){
    $('#video_teaser').show();
    $('#button_teaser').hide();
    $('#video_teaser').get(0).play();
    });
    });
    </script>

    <!-- after playing video automatically hide video and show play button again -->
    <script>
    $(document).ready(function(){
    $('#video_teaser').on('ended',function(){
    $('#video_teaser').hide();
    $('#button_teaser').show();
    });
    });
    </script>





    share|improve this answer




























      0














      My solution looks like the following:



      <!-- generate an extra button to start the video -->    
      <button id="button_teaser" onclick="playPause()">Play</button>

      <video class="js-player" poster="poster.jpg" controls playsinline preload="none" id="video_teaser" data-plyr-config='{"volume": 0.3, "resetOnEnd": true, "enabled": true, "storage": { "enabled": false }, "quality": { "default": 720 } }'>
      <source src="video_360p.mp4" type="video/mp4" size="360">
      <source src="video_720p.mp4" type="video/mp4" size="720">
      <source src="video_1080p.mp4" type="video/mp4" size="1080">
      </video>

      <!-- hide video -->
      <script>
      $('#video_teaser').hide();
      </script>

      <!-- after clicking the generated play button, hide play button and show video -->
      <script>
      $(document).ready(function(){
      $('#button_teaser').click(function(){
      $('#video_teaser').show();
      $('#button_teaser').hide();
      $('#video_teaser').get(0).play();
      });
      });
      </script>

      <!-- after playing video automatically hide video and show play button again -->
      <script>
      $(document).ready(function(){
      $('#video_teaser').on('ended',function(){
      $('#video_teaser').hide();
      $('#button_teaser').show();
      });
      });
      </script>





      share|improve this answer


























        0












        0








        0







        My solution looks like the following:



        <!-- generate an extra button to start the video -->    
        <button id="button_teaser" onclick="playPause()">Play</button>

        <video class="js-player" poster="poster.jpg" controls playsinline preload="none" id="video_teaser" data-plyr-config='{"volume": 0.3, "resetOnEnd": true, "enabled": true, "storage": { "enabled": false }, "quality": { "default": 720 } }'>
        <source src="video_360p.mp4" type="video/mp4" size="360">
        <source src="video_720p.mp4" type="video/mp4" size="720">
        <source src="video_1080p.mp4" type="video/mp4" size="1080">
        </video>

        <!-- hide video -->
        <script>
        $('#video_teaser').hide();
        </script>

        <!-- after clicking the generated play button, hide play button and show video -->
        <script>
        $(document).ready(function(){
        $('#button_teaser').click(function(){
        $('#video_teaser').show();
        $('#button_teaser').hide();
        $('#video_teaser').get(0).play();
        });
        });
        </script>

        <!-- after playing video automatically hide video and show play button again -->
        <script>
        $(document).ready(function(){
        $('#video_teaser').on('ended',function(){
        $('#video_teaser').hide();
        $('#button_teaser').show();
        });
        });
        </script>





        share|improve this answer













        My solution looks like the following:



        <!-- generate an extra button to start the video -->    
        <button id="button_teaser" onclick="playPause()">Play</button>

        <video class="js-player" poster="poster.jpg" controls playsinline preload="none" id="video_teaser" data-plyr-config='{"volume": 0.3, "resetOnEnd": true, "enabled": true, "storage": { "enabled": false }, "quality": { "default": 720 } }'>
        <source src="video_360p.mp4" type="video/mp4" size="360">
        <source src="video_720p.mp4" type="video/mp4" size="720">
        <source src="video_1080p.mp4" type="video/mp4" size="1080">
        </video>

        <!-- hide video -->
        <script>
        $('#video_teaser').hide();
        </script>

        <!-- after clicking the generated play button, hide play button and show video -->
        <script>
        $(document).ready(function(){
        $('#button_teaser').click(function(){
        $('#video_teaser').show();
        $('#button_teaser').hide();
        $('#video_teaser').get(0).play();
        });
        });
        </script>

        <!-- after playing video automatically hide video and show play button again -->
        <script>
        $(document).ready(function(){
        $('#video_teaser').on('ended',function(){
        $('#video_teaser').hide();
        $('#button_teaser').show();
        });
        });
        </script>






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 26 '18 at 15:30









        MichaGueMichaGue

        164




        164






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53447661%2fhow-to-make-a-html5-video-poster-image-transparent-to-see-the-background-image-w%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            404 Error Contact Form 7 ajax form submitting

            How to know if a Active Directory user can login interactively

            TypeError: fit_transform() missing 1 required positional argument: 'X'