RubyでUDPとmpg123とpkill
Rubyで音楽を再生して、通信がくると一時停止したり再開したり停止するプログラムを書いてみた。
再生してるほうのプログラム
#!/usr/bin/ruby
# -*- coding: utf-8 -*-
require "socket"
udpsocket = UDPSocket.open()
udpsocket.bind("0.0.0.0", 1230)#ipアドレスとport番号だよ
t = Thread.new do#音楽再生は別スレッドで
system"mpg123 apollo.mp3"
end
p udpsocket.recv(5)#受信するデータの最大数をここで決めてるよ
puts"一時停止"
system"pkill -STOP mpg123"#ここで一時停止してるよ。サスペンドですね。
p udpsocket.recv(4)
puts"再生再開"
system"pkill -CONT mpg123"#ここで再開してるよ。fgしても再開するかなぁ。
p udpsocket.recv(3)
puts"プロセスの終了"
system"pkill mpg123"#ころころしてるよ。
t.join
udpsocket.close
なんか送信しているほうのプログラム
#!/usr/bin/ruby
require "socket"
udp = UDPSocket.open()
sockaddress = Socket.pack_sockaddr_in(1230, "127.0.0.1")
udp.send("HEY!!", 0, sockaddress)
udp.close
結果はこんな感じだけど音楽の一時停止とかは画像じゃ伝わらないか。要望があったら動画にでもしよう。
アーティスト名とか文字化けしてるけど、甘茶の音楽工房さんのアポロって曲でテストしたよ。