How to play a video on a static mesh Unreal Engine purely using c+++

I really don’t have a clue. Please help me. I don’t know why my code is not working. Here is the code I have tried:

void AEgoVehicle::ConstuctTVShowElements() {

    // Initializing the static mesh for the media player

    MediaPlayerMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("TV-show Pane"));

    if (!MediaPlayerMesh) {

        UE_LOG(LogTemp, Error, TEXT("Failed to create media player mesh."));

        return;

    }

    MediaPlayerMesh->AttachToComponent(GetRootComponent(), FAttachmentTransformRules::KeepRelativeTransform);

    MediaPlayerMesh->SetCollisionEnabled(ECollisionEnabled::NoCollision);

    MediaPlayerMesh->SetRelativeTransform(VehicleParams.Get<FTransform>("TVShow", "MediaPlayerLocation"));

    FString PathToMeshMediaPlayer = TEXT("StaticMesh'/Game/NDRT/TVShow/StaticMeshes/SM_MediaPlayer.SM_MediaPlayer'");

    const ConstructorHelpers::FObjectFinder<UStaticMesh> TVShowMeshObj(*PathToMeshMediaPlayer);

    MediaPlayerMesh->SetStaticMesh(TVShowMeshObj.Object);

    MediaPlayerMesh->SetCastShadow(false);

    // Create a new media player

    MediaPlayer = NewObject<UMediaPlayer>(this, UMediaPlayer::StaticClass(), TEXT("MediaPlayer"));

    if (!MediaPlayer) {

        UE_LOG(LogTemp, Error, TEXT("Failed to create media player."));

        return;

    }

    MediaPlayer->SetLooping(true); // Set looping to true if you want the video to loop

    // Create a new media source

    const ConstructorHelpers::FObjectFinder<UFileMediaSource> MediaSourceObj(*MediaSourcePath);

    if (MediaSourceObj.Succeeded()) {

        MediaPlayerSource = MediaSourceObj.Object;

    }

    else {

        UE_LOG(LogTemp, Error, TEXT("Failed to load media source."));

        return;

    }

    if (!MediaPlayer->OpenSource(MediaPlayerSource)) {

        UE_LOG(LogTemp, Error, TEXT("Failed to open media source."));

        return;

    }

    // Create a new media texture

    MediaPlayerTexture = NewObject<UMediaTexture>(this, UMediaTexture::StaticClass(), TEXT("MediaPlayerTexture"));

    if (!MediaPlayerTexture) {

        UE_LOG(LogTemp, Error, TEXT("Failed to create media texture."));

        return;

    }

    MediaPlayerTexture->SetMediaPlayer(MediaPlayer);

    // Create a new dynamic material instance

    MediaPlayerMaterialInstance = UMaterialInstanceDynamic::Create(MediaPlayerMesh->GetMaterial(0), MediaPlayerMesh);

    if (!MediaPlayerMaterialInstance) {

        UE_LOG(LogTemp, Error, TEXT("Failed to create dynamic material instance."));

        return;

    }

    // Set the texture parameter to the media texture

    MediaPlayerMaterialInstance->SetTextureParameterValue(FName("VideoTexture"), MediaPlayerTexture);

    // Apply the dynamic material to the mesh

    MediaPlayerMesh->SetMaterial(0, MediaPlayerMaterialInstance);

    MediaPlayer->Play();

}

Edit: I am calling this method in the actor constructor.

Privacy & Terms