2
$\begingroup$

I've created a scene in BGE which involves some video textures I made by using a script to swap image textures with videos that I assigned as properties to each object. Everything runs fine and great when I play the game in BGE itself, but when I try and export the game as ann .app, the video textures are blank. I've already tried packing all my external data into the .blend, but I think since the videos are assigned in the properties panel, they are not being included for some reason. What is causing this and how can I make it export properly?


Still no luck. I tried exporting the app to the same place my .blend is saved and still no video in the .app. I am still a novice at this so forgive me if Im not articulating well.

For reference here is the script I am using to play the videos in the .blend

######################################################
#
#    Movie.py        Blender 2.50
#
#    Tutorial for using Video.py can be found at
#
#    www.tutorialsforblender3d.com
#
#    Released under the Creative Commons Attribution 3.0 Unported License.  
#
#    If you use this code, please include this information header.
#
######################################################

#import GameLogic
import bge.logic

# get current scene
scene = bge.logic.getCurrentScene()

# get the current controller
controller = bge.logic.getCurrentController()

# get object script is attached to
obj = controller.owner

# check to see video has been added
if "Video" in obj:

    # get video 
    video = obj["Video"]

    # update the video 
    video.refresh(True)

# if video hasn't been added 
else:

    # import VideoTexture module
    import VideoTexture

    # get matID for the movie screen    
    matID = VideoTexture.materialID(obj, "MA" + obj['material'])

    # get the texture
    video = VideoTexture.Texture(obj, matID)

    movieName = obj['movie']

    # get movie path
    movie = bge.logic.expandPath('//' + movieName)

    # get movie
    video.source = VideoTexture.VideoFFmpeg(movie)

    # set scaling
    video.source.scale = True   

    # save mirror as an object variable
    obj["Video"] = video

    # check for optional loop property
    if "loop" in obj:

        # loop it forever
        if obj['loop'] == True:
            video.source.repeat = -1

        # no looping
        else:
            video.source.repeat = 0

    # start the video
    video.source.play()
$\endgroup$
  • $\begingroup$ It sounds as it does not find the video files. I suggest to run the game with an open console to see any error messages. $\endgroup$ – Monster Dec 3 '15 at 4:50
1
$\begingroup$

The VideoTexture module expects external files. It does not work with internal data blocks unless explicitly provided by Python call.

Therefore "Pack External Files" will not solve your issue. It increases the size of your distribution as you need to distribute the external files (as separate files) anyway.

I suggest following:

  • Perform "Make Paths Relative" before distributing
  • Ensure to distribute your VideoTexture source files where they are (relative to the start blend file).
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.