贵港路建设路地下商业街网上演练
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

82 lines
2.5 KiB

using System;
using UnityEngine;
namespace FFmpeg
{
public static class FFmpegParser
{
internal static IFFmpegHandler Handler { get; set; }
//Data
public const string COMMAND_CODE = "FFmpeg COMMAND: ";
public const string ERROR_CODE = "FFmpeg EXCEPTION: ";
public const string START_CODE = "onStart";
public const string PROGRESS_CODE = "onProgress: ";
public const string FAILURE_CODE = "onFailure: ";
public const string SUCCESS_CODE = "onSuccess: ";
public const string FINISH_CODE = "onFinish";
//------------------------------
public static void Handle(string message)
{
if(string.IsNullOrEmpty(message))
{
Debug.LogWarning("FFmpeg callback is null.");
return;
}
if (IsCode(ref message, COMMAND_CODE))
{
if (IsCode(message, START_CODE))
{
Handler.OnStart();
}
else if (IsCode(ref message, PROGRESS_CODE))
{
Handler.OnProgress(message);
}
else if (IsCode(ref message, FAILURE_CODE))
{
Handler.OnFailure(message);
}
else if (IsCode(ref message, SUCCESS_CODE))
{
Handler.OnSuccess(message);
}
else if (IsCode(message, FINISH_CODE))
{
Handler.OnFinish();
}
}
else if(IsCode(message, ERROR_CODE))
{
Debug.LogError(message);
GameObject.Find("Canvas").transform.Find("RecSavePanel").GetComponent<RecSavePanel>().SetTip("保存失败");
}
}
static bool IsCode(ref string message, string CODE)
{
if (string.IsNullOrEmpty(message))
{
Debug.LogWarning("FFmpegParser: Empty callback message.");
}
else if (message.Contains(CODE))
{
message = message.Remove(0, CODE.Length);
return true;
}
return false;
}
static bool IsCode(string message, string CODE)
{
if (string.IsNullOrEmpty(message))
{
Debug.LogWarning("FFmpegParser: Empty callback message.");
return false;
}
return message.Contains(CODE);
}
}
}