だれかのにっき

RubyでUDPとmpg123とpkill

Rubyで音楽を再生して、通信がくると一時停止したり再開したり停止するプログラムを書いてみた。

このページを参考にした(2013/08/10)

再生してるほうのプログラム


#!/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


結果はこんな感じだけど音楽の一時停止とかは画像じゃ伝わらないか。要望があったら動画にでもしよう。

アーティスト名とか文字化けしてるけど、甘茶の音楽工房さんのアポロって曲でテストしたよ。