Handheld.PlayFullScreenMovie无法在Android中运行

时间:2016-03-20 11:38:30

标签: android unity3d

我正在使用Unity 5个人版(免费)在Streaming Assets下的Assets文件夹中播放.ogv电影文件。代码是

Handheld.PlayFullScreenMovie("coc.ogv", Color.black, FullScreenMovieControlMode.Full, FullScreenMovieScalingMode.AspectFill);

coc.ogv是文件名。该函数在OnMouseDown()函数上调用。但是当我在Android设备上试用它时,它只会产生黑色闪烁并且不做任何其他事情。没有错误或警告。

请帮忙。

2 个答案:

答案 0 :(得分:0)

好的,我们走了。如果您正在构建PC,请转到MovieTexture和.ogv格式。如果是Android版,请选择.mp4(h.264小于或等于480p)。使用Application.StreamingAssetsPath获取assets文件中的jar文件夹。

答案 1 :(得分:0)

我找到的解决方案是将视频存储在Application.streamingAssetsPath文件夹中,然后在运行时将文件复制到Application.persistentDataPath文件夹中,然后从那里读取。

string arc = "core1280x800.mp4"; 
string defaultFilePath = Path.Combine(Application.streamingAssetsPath, arc);
string filePath = Path.Combine(Application.persistentDataPath, arc);
byte[] bytes = null;

if (!File.Exists(filePath))
{
    if (Application.platform == RuntimePlatform.Android)
    {
        WWW archivo = new WWW(defaultFilePath);
        while (!archivo.isDone)
        { } // c'mon, you can do better than this! ¬ ¬
        bytes = archivo.bytes;
        File.WriteAllBytes(filePath, bytes);
    }
    else
    {
        if (File.Exists(defaultFilePath))
        {
            bytes = File.ReadAllBytes(defaultFilePath);
            File.Copy(defaultFilePath, filePath);
        }
    }
}
Handheld.PlayFullScreenMovie(filePath, Color.black, FullScreenMovieControlMode.Hidden);

虽然文档只说明将视频文件放在Application.streamingAssetsPath文件夹上已经足够了,但是几天来我无法播放任何文件,无论是分辨率还是格式。使用此代码,我能够播放分辨率高于480p的视频文件,我只测试了MP4和MOV文件,但只有MP4可以工作; MOV只是默默无闻。

PS。我知道,while循环并不优雅,不推荐,但现在它很简单并且有效。