Aşağıdaki kod bir dosyayı bir işleme akıtmaktadır. Ses/mp3 akışını html5 ses etiketi ile duyacak birçok kullanıcıya aktarmak istiyorum. File.stream!
ile nasıl yapılabilir?Kullanıcılara Elixir Akışı Sesi
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
$: IEX test.ex
IEX (1)> Test.start
çıkışı:
< < 171, 46, 254, 26, 163, 32, 178 , 27, 0, 75, 17, 35, 4, 236, 51, 57, 5, 144, 154, 198, 166, 47, 62, 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 19 1, 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, ... >> .....................................
Bu ikili verileri okumak ve ses etiketiyle duymak için JavaScript'i nasıl kullanabilirim?
Teşekkürler! çalışır, ancak bir expection atar "[error] Çiftlik dinleyicisi Plugtest.HTTP ile başlayan bağlantı süreci: cowboy_protocol: start_link/4 neden #PID <0.261.0> nedeniyle çıkış: {{% File.Error {action:" stream ", yol: "./song.mp3", sebep:: enoent} .. "&& radyoyu nasıl radyo gibi yayınlayabilirim, böylece tüm bağlı kullanıcılar aynı saniyeden haber alır? Bu test için şarkıyı açabilirim ama çalma listesindeki bir sonraki şarkıya devam etmek istiyorum – IddoE
Bu hata, dosyanın mevcut olmadığını söylüyor. Yolu çözmeniz gerekecek - göreceli yolları kullanmamanızı öneririz. Asıl amacınıza gelince, bu bir adımdır ama daha fazlasına ihtiyacınız var. Artık bir pubsub mimarisinden bahsediyorsun. Elixir'de bu şaşırtıcı derecede kolay olmalı. Dosya akışını çalıştıran ve tutan tek bir işlem isteyeceksiniz ve açık bağlantıların kaydını tutar. Bir GenServer iyi çalışacaktır. Akıştan gelen parçaları okurken, bildiği her bağlantıya yazmalıdır. – rozap
tekrar teşekkürler @rozap, lütfen http://stackoverflow.com/questions/38551798 adresinden ilgili soruları kontrol edin. – IddoE