{"id":448,"date":"2013-12-31T11:08:36","date_gmt":"2013-12-31T02:08:36","guid":{"rendered":"http:\/\/iphone-users.ddo.jp\/wordpress\/?p=448"},"modified":"2013-12-31T11:08:36","modified_gmt":"2013-12-31T02:08:36","slug":"ubuntu12-04%e3%81%abairvideo-server%e3%82%92%e7%b0%a1%e5%8d%98%e3%81%ab%e5%b0%8e%e5%85%a5%e3%81%99%e3%82%8b%ef%bc%88%e4%bb%8a%e3%81%a0%e3%81%91%ef%bc%89","status":"publish","type":"post","link":"https:\/\/iphone-users.ddo.jp\/wordpress\/?p=448","title":{"rendered":"ubuntu12.04\u306bAirVideo Server\u3092\u7c21\u5358\u306b\u5c0e\u5165\u3059\u308b\uff08\u4eca\u3060\u3051\uff09"},"content":{"rendered":"<p>\n\t\u3000\u4e45\u3057\u3076\u308a\u306bubuntu12.04\u3092\u30d1\u30bd\u30b3\u30f3\u306b\u5c0e\u5165\u3057\u305f\u3002\u3064\u3044\u3067\u306bAirVideo Server\u3092\u5c0e\u5165\u3057\u3088\u3046\u3068\u601d\u3044\u4ee5\u524d\u8a66\u3057\u305f\u7c21\u5358\u5c0e\u5165\u65b9\u3092\u8a66\u3057\u3066\u307f\u305f\u30022013\/12\/30\u73fe\u5728\u7c21\u5358\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u305f\u3002\n<\/p>\n<p>\n\t<span style=\"color:#FF0000;\">\u6ce8\u610f\u3000\u30e1\u30cb\u30e5\u30fc\u306eAirvideoServer\u3092\u4f7f\u3046\u3068\u3046\u307e\u304f\u3044\u304b\u306a\u3044\u3002\u307e\u305fubuntu13.10\u3067\u306f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u51fa\u6765\u306a\u304b\u3063\u305f<\/span><span style=\"color:#FF0000;\">\u306e\u3067\u6ce8\u610f<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n<\/p>\n<p>\n\t\u624b\u9806\u306f\n<\/p>\n<p>\n\t\uff12\uff0eAdd the AirVideo PPA repository<br \/>\n\t&nbsp;&nbsp; &nbsp;sudo add-apt-repository ppa:rubiojr\/airvideo<br \/>\n\t\uff13\uff0eUpdate package index<br \/>\n\t&nbsp;&nbsp; &nbsp;sudo apt-get update<br \/>\n\t\uff14\uff0eInstall AirVideo Server<br \/>\n\t&nbsp;&nbsp; &nbsp;sudo apt-get install airvideo-server\n<\/p>\n<p>\n\t\uff15\uff0eTweak the &#39;folders&#39; property editing \/opt\/airvideo-server\/AirVideoServerLinux.properties\u3092\u74b0\u5883\u306b\u5408\u308f\u305b\u4fee\u6b63\u3059\u308b\u3002\n<\/p>\n<p>\n\t\u91cd\u8981\n<\/p>\n<p>\n\t\/opt\/airvideo-server\u306btray\u3092\u8a00\u3046\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u30920755\u3068\u3059\u308b\u3002\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3001\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u3092\u4f5c\u6210\u3057\uff08\/opt\/airvideo-serve\/tray\uff09\u5b9f\u884c\u3059\u308b\u3068\u30c8\u30ec\u30a4\u30a2\u30a4\u30b3\u30f3\u304c\u8868\u793a\u3055\u308c\u308b\u306e\u3067\u30de\u30a6\u30b9\u306e\u53f3\u30af\u30ea\u30c3\u30af\u3067Start server\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068AirVideo Server\u304c\u52d5\u304f\u3002\n<\/p>\n<p>\n\t#!\/usr\/bin\/env ruby<br \/>\n\trequire &#39;Qt4&#39;\n<\/p>\n<p>\n\tclass Tray &lt; Qt::SystemTrayIcon<br \/>\n\t&nbsp;&nbsp; &nbsp;<br \/>\n\t&nbsp;&nbsp;&nbsp; slots :startStopAction, :quit\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; def initialize(parent = nil)<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super(parent)<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @serverThread = nil<br \/>\n\t&nbsp;&nbsp; &nbsp;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @serverRunning = false<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @startStopAction = Qt::Action.new(tr(&quot;&amp;Start Server&quot;), self)<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connect(@startStopAction, SIGNAL(:triggered), self, SLOT(:startStopAction))<br \/>\n\t&nbsp;&nbsp; &nbsp;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @quitAction = Qt::Action.new(tr(&quot;&amp;Quit&quot;), self)<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connect(@quitAction, SIGNAL(:triggered), self, SLOT(:quit))<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @trayIconMenu = Qt::Menu.new(nil) do |t|<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.addAction(@startStopAction)<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.addSeparator()<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.addAction(@quitAction)<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.contextMenu = @trayIconMenu<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.icon = Qt::Icon.new(&quot;#{File.dirname(__FILE__)}\/airvideo-tray-off.png&quot;)<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.toolTip = &#39;AirVideo Server&#39;<br \/>\n\t&nbsp;&nbsp;&nbsp; end\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; def quit<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if @serverThread<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Process.kill(9, @serverThread)<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $qApp.quit<br \/>\n\t&nbsp;&nbsp;&nbsp; end\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; def startStopAction<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if @serverRunning<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @startStopAction.text = &#39;Start Server&#39;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @serverRunning = false<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if @serverThread<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Process.kill(9, @serverThread)<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.icon = Qt::Icon.new(&quot;#{File.dirname(__FILE__)}\/airvideo-tray-off.png&quot;)<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @startStopAction.text = &#39;Stop Server&#39;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @serverRunning = true<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cmd = &#39;java -jar \/opt\/airvideo-server\/AirVideoServerLinux.jar \/opt\/airvideo-server\/AirVideoServerLinux.properties&#39;<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @serverThread = fork { exec cmd }<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.icon = Qt::Icon.new(&quot;#{File.dirname(__FILE__)}\/airvideo-tray.png&quot;)<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end<br \/>\n\t&nbsp;&nbsp;&nbsp; end<br \/>\n\t&nbsp;&nbsp; &nbsp;<br \/>\n\t&nbsp;&nbsp;&nbsp; def createTrayIcon()<br \/>\n\t&nbsp;&nbsp;&nbsp; end<br \/>\n\tend\n<\/p>\n<p>\n\tapp = Qt::Application.new(ARGV)\n<\/p>\n<p>\n\tif !Qt::SystemTrayIcon.isSystemTrayAvailable<br \/>\n\t&nbsp;&nbsp;&nbsp; Qt::MessageBox.critical(nil, Qt::Object.tr(&quot;Systray&quot;),<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Qt::Object.tr(&quot;I couldn&#39;t detect any system tray &quot; \\<br \/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;on this system.&quot;))<br \/>\n\t&nbsp;&nbsp;&nbsp; exit 1<br \/>\n\tend\n<\/p>\n<p>\n\ttray = Tray.new<br \/>\n\ttray.show<br \/>\n\tapp.exec\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t\u3000<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3000\u4e45\u3057\u3076\u308a\u306bubuntu12.04\u3092\u30d1\u30bd\u30b3\u30f3\u306b\u5c0e\u5165\u3057\u305f\u3002\u3064\u3044\u3067\u306bAirVideo Server\u3092\u5c0e\u5165\u3057\u3088\u3046\u3068\u601d\u3044\u4ee5\u524d\u8a66\u3057\u305f\u7c21\u5358\u5c0e\u5165\u65b9\u3092\u8a66\u3057\u3066\u307f\u305f\u30022013\/12\/30\u73fe\u5728\u7c21\u5358\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u305f\u3002 \u6ce8\u610f\u3000\u30e1\u30cb\u30e5\u30fc\u306eAir &#8230;<\/p>\n<p><a href=\"https:\/\/iphone-users.ddo.jp\/wordpress\/?p=448\" class=\"more-link\">Continue reading &lsquo;ubuntu12.04\u306bAirVideo Server\u3092\u7c21\u5358\u306b\u5c0e\u5165\u3059\u308b\uff08\u4eca\u3060\u3051\uff09&rsquo; &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-448","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/iphone-users.ddo.jp\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/448","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iphone-users.ddo.jp\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/iphone-users.ddo.jp\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/iphone-users.ddo.jp\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/iphone-users.ddo.jp\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=448"}],"version-history":[{"count":2,"href":"https:\/\/iphone-users.ddo.jp\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/448\/revisions"}],"predecessor-version":[{"id":450,"href":"https:\/\/iphone-users.ddo.jp\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/448\/revisions\/450"}],"wp:attachment":[{"href":"https:\/\/iphone-users.ddo.jp\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=448"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/iphone-users.ddo.jp\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=448"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iphone-users.ddo.jp\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=448"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}