有没有办法在AVPlayer中播放音频之前截取字节数据并对每个字节执行XOR操作?
我正在构建一个音频流应用程序,并使用一个用C编写的小脚本向MP3文件添加简单的加密层。在Android中,它会像这样实时解码:
@Override
public int read(byte[] buffer, int offset, int readLength) throws FileDataSourceException {
// ...
if (readLength == 1 && offset >= 1 && offset <= 123) {
buffer[offset] = (byte)(buffer[offset] ^ 11);
}
return bytesRead;
}
}
Run Code Online (Sandbox Code Playgroud)
正如您在上面看到的,在Android中反转XOR加密非常容易,因为我使用ExoPlayer并在其数据源类中覆盖read()方法。是否有机会在Swift中使用AVPlayer执行相同的操作?
这是整个想法的流程图:
谢谢。
基本上我需要实现一个事件处理程序类,但遇到一个错误,我不能声明一个空洞数组:
class SomeClass
{
public:
void registerEventHandler(int event, void (*handler)(std::string));
private:
// here i get this error: declaration of ‘eventHandlers’ as array of void
void (*eventHandlers)(std::string)[TOTAL_EVENTS];
}
void SomeClass::registerEventHandler(int event, void (*handler)(std::string))
{
eventHandlers[event] = handler;
}
void handler1(std::string response)
{
printf("ON_INIT_EVENT handler\n");
}
void handler2(std::string response)
{
printf("ON_READY_EVENT handler\n");
}
void main()
{
someClass.registerEventHandler(ON_INIT_EVENT, handler1);
someClass.registerEventHandler(ON_READY_EVENT, handler2);
}
Run Code Online (Sandbox Code Playgroud)
你能帮我弄清楚确切的语法吗?谢谢!
我有一个看起来像这样的字符串
text here++ text
+ text text
+ text
text text
Run Code Online (Sandbox Code Playgroud)
我想将 + 替换为 - 但仅在行的开头,这样它看起来像这样:
text here++ text
- text text
- text
text text
Run Code Online (Sandbox Code Playgroud)
我正在尝试这样的正则表达式:
string text = "the-above-text";
regex reg("^\\++.*$");
text = regex_replace(text, reg, "-");
Run Code Online (Sandbox Code Playgroud)
但是这个 ^ 匹配文本的开头,而不是行的开头。
我已经搜索了几个小时,似乎没有办法让引擎在多行模式下工作。
我有办法做到这一点吗?或者任何支持多行 ^ 和 $ 的较新的 C++ 标准?我正在使用 g++
谢谢!