Show post page only if the user has bought a specific product

Yes, it’s possible.

Basically, you’ll need to create a theme template for whatever post type the videos are being shown in. (If it’s a Page, create a page template; if it’s a custom post type, create a template for that post type). You will need to work out the specific query and code depending on your plugins, but basically:

<?php
// First check if the user is logged in
if(is_user_logged_in()) {
    // If they're logged in, show the sitewide header
    get_header();
    // If they're logged in, have they bought this particular product?
    // First identify the product ID
    // Then check if they've bought that product,
    // and save to a variable called $user_has_purchased
    // Then, add conditions for if they have bought it, and if they haven't
    // If they have:
    if($user_has_purchased == true) {
        // Now add your code to show the content, which may just be the_content
        if ( have_posts() ) :
            while ( have_posts() ) : the_post();
                the_content();
            endwhile;
        endif;
    } else {
        // Else here means they are logged in but haven't purchased
        // You could either show them a message with a link, or auto-redirect
        // to the product page to encourage them to buy it
        echo "Sorry, this content is only available by purchase.";
    }
    // Show the sitewide footer
    get_footer();
} else {
    // Else here means they are not logged in
    // So you could either link to the login form, or redirect them there
    wp_redirect( wp_login_url() ); exit;
}
?>

(Note that the header and footer are only shown if the user is logged in, because the “else” says to redirect them. You can’t redirect them if you have already output the header.)

It may be easiest if your video-showing pages are all a custom post type. As long as you have a single-posttype.php set up with these conditions, every time you create one of those CPTs, it will always check for login and for purchase. If instead you create a Page Template that you have to apply manually for each page, it would be easier to accidentally forget to set the template, and thus make your content public by accident.

error code: 523