/// <summary> /// 设置水印图片 /// </summary> /// <param name="watermarkData"></param> /// <returns></returns> private RawImage SetWatermarkPhoto(WatermarkData watermarkData, string watermarkName) { RawImage watermarkPhoto = new GameObject(watermarkName).AddComponent <RawImage>(); watermarkPhoto.rectTransform.SetParent(EncryptionCanvas.transform); watermarkPhoto.rectTransform.localScale = Vector3.one; watermarkPhoto.rectTransform.anchorMin = watermarkData.anchorMin.Get(); watermarkPhoto.rectTransform.anchorMax = watermarkData.anchorMax.Get(); watermarkPhoto.rectTransform.localPosition = new Vector3(watermarkData._Rect.x, watermarkData._Rect.y, 0); watermarkPhoto.rectTransform.sizeDelta = new Vector2(watermarkData._Rect.z, watermarkData._Rect.w); watermarkPhoto.texture = watermarkData._TextureData.Get(); watermarkPhoto.raycastTarget = false; return(watermarkPhoto); }
//------------------------------ public static void Watermark(WatermarkData config) { //-y -i .../watermark.png -i .../input.mp4 -filter_complex \ //"[0:v]scale=iw*0.25:ih*0.25 [ovrl], [1:v][ovrl]overlay=x=(main_w-overlay_w)*0.95:y=(main_h-overlay_h)*0.05" \ //FFmpegUnityBindDemo.mp4 StringBuilder filter = new StringBuilder(); #if UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN || UNITY_EDITOR filter.Append(DOUBLE_QUOTE); #endif filter. Append("[0:v]scale=iw*"). Append(config.imageScale). Append(":ih*"). Append(config.imageScale). Append(" [ovrl], [1:v][ovrl]overlay=x=(main_w-overlay_w)*"). Append(config.xPosNormal). Append(":y=(main_h-overlay_h)*"). Append(config.yPosNormal); #if UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN || UNITY_EDITOR filter.Append(DOUBLE_QUOTE); #endif string[] command = { REWRITE_INSTRUCTION, INPUT_INSTRUCTION, config.imagePath, INPUT_INSTRUCTION, config.inputPath, FILTER_COMPLEX_INSTRUCTION, filter.ToString(), config.outputPath }; DebugCommand(command); Wrapper.Execute(command); }