有没有办法制作只能播放一次的音频文件?
Posted
技术标签:
【中文标题】有没有办法制作只能播放一次的音频文件?【英文标题】:Is there a way to make an audio file that can only be played once? 【发布时间】:2016-02-19 21:46:29 【问题描述】:我正在寻找一种方法来制作只能播放一次的音频文件。使用 DRM 执行此操作会很好,但是如果有指南可以制作包含音频文件的 EXE 文件,并且在打开播放时会删除它本身,这也可以。我对编程知之甚少,所以如果这样的事情只能用 EXE 文件完成,那么我需要一个指南。
我知道如何使用 BAT 文件执行此操作,但这需要至少两个文件(BAT 文件和音频文件),并且为了我的使用,我需要它是一个文件。
有没有办法我可以这样做或制作这样的文件?我一直在寻找一种方法来做到这一点大约两个小时,但一无所获。
【问题讨论】:
看看autoIt
和资源UDF:autoitscript.com/forum/topic/51103-resources-udf
【参考方案1】:
这里有一个控制台 JScript.NET 示例可以帮助您入门。不过,它只会播放 base64 编码的 wav 数据。如果你想播放 mp3,那就有点麻烦了。
import System; // for Convert
import System.Media; // for PlaySync()
import System.IO; // for MemoryStream
import System.Diagnostics; // for Process()
var base64EncodedWav:String = "paste your base64-encoded WAV file here",
audiobytes:byte[] = Convert.FromBase64String(base64EncodedWav),
stream:MemoryStream = new MemoryStream(audiobytes),
player:SoundPlayer = new SoundPlayer(stream);
// Play, blocking until finished
player.PlaySync();
// delete self
var self:String = System.Reflection.Assembly.GetExecutingAssembly().Location,
task:Process = new Process();
print("This message will self-destruct.");
task.StartInfo.FileName = "cmd.exe";
task.StartInfo.Arguments = "/c timeout /t 1 & del /q " + self;
task.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
task.StartInfo.CreateNoWindow = true;
task.Start();
【讨论】:
以上是关于有没有办法制作只能播放一次的音频文件?的主要内容,如果未能解决你的问题,请参考以下文章