以下代码将文件流式传输到进程.我想将音频/ mp3流式传输给许多将通过html5音频标签听到的用户.怎么可以通过File.stream!?
defmodule Test do
def start do
p = spawn(Test, :say, [])
send p, {self, "a message"}
end
def say do
receive do
{from, msg} ->
IO.puts "Process #{inspect self} says: #{msg}"
stream_bytes = 128
File.stream!("./song.mp3", [], stream_bytes)
|> Enum.each(fn chunk ->
IO.inspect chunk
end)
say
end
end
end
Run Code Online (Sandbox Code Playgroud)
$:iex test.ex
iex(1)> Test.start
输出:
<< 171,46,254,26,163,32,178,27,0,75,17,35,4,236,51,57,5,144,154,198,166,47,62,4,4, 61,85,67,135,16,34,82,49,57,176,131,96,116,152,232,24,32,140,220,67,73,128,165,178,230, 202,...... >> << 100,220,156,191,38,0,161,117,80,16,102,91,22,5,8,66,26,7,193,155,193 ,66,198,28,157,244,65,131,204,240,5,172,143,44,173,85,144,2,157,144,145,97,200,236,16,49 ,149,150,133,67,...... >> << 150,54,37,254,192,218,218,26,69,231,88,124,33,129,169,66,117, 52,214,134,130,103,85,130,48,6,144,221,153,132,8,181,26,27,83,140,54,117,149,7,60,144, 237,248,132,12,210,51,103,116,...... >> << 57,2,143,220,198,182,22,177,231,126,187,147,33,9 ,1,5,164,2,36,105,47,255,255,255,255,255,245,54,51,225,104,98,1,184,148,206,50,135,230 ,28,50,47,144,134,53,16,64,130,192,198,...... >> ..............
如何使用JavaScript读取这些二进制数据并通过音频标签听到它?
我想了解一个Android应用,其中包含一个foo在类中命名的本地方法com.app.Bar
在类内部,Bar有一个静态子句加载一个共享对象System.loadLibrary("libfoo.so"),我认为该共享对象是使用-fvisibility = hidden构建的,因为唯一的导出是JNI_OnLoad,否JNIEXPORT void JNICALL Java_com_app_Bar_foo,这意味着public native int foo不遵循命名约定。
到目前为止,我尝试了什么?
JNIAnalyzer输出13K行,看起来像JNI_OnLoad@@Base+0x712e
Frida脚本尝试查找foo地址(无效)
function intercept(address) {
try {
Interceptor.attach(address, {
onEnter: function(args) {
console.log("onEnter", address);
},
onLeave: function(ignored) {}
});
} catch (e) {
console.error(e);
}
}
function Main() {
var dlopen = new NativeFunction(Module.findExportByName(null, 'dlopen'), …Run Code Online (Sandbox Code Playgroud)