{"id":67,"date":"2010-03-28T22:26:28","date_gmt":"2010-03-28T14:26:28","guid":{"rendered":"http:\/\/csslayer.tk\/wordpress\/?p=67"},"modified":"2011-04-14T06:15:10","modified_gmt":"2011-04-13T22:15:10","slug":"music-player","status":"publish","type":"post","link":"https:\/\/www.csslayer.info\/wordpress\/my-thought-on-linux\/music-player\/","title":{"rendered":"\u4e2a\u4eba\u7684Linux\u5520\u53e8\u2014\u2014\u97f3\u4e50\u64ad\u653e\u5668"},"content":{"rendered":"<p>\u6361\u8d77\u6765\u5520\u53e8\u4e00\u6b21\uff1a\uff09\uff0c\u53d1\u73b0\u770b\u6211blog\u7684\u4eba\uff08\u90fd\u662fgoogle\u6765\u7684\u5566\uff09\uff0c\u5927\u90e8\u5206\u5173\u6ce8\u6211\u90a3\u4e2aati\u663e\u5361\u7684\uff0c\u53ef\u60dc\u2026\u2026\u90a3\u4e2a\u6ca1\u6709\u5565\u6559\u7a0b\u6027\u7684\u5185\u5bb9\u2026\u2026\u5176\u6b21\u5c31\u662f\u4e00\u4e2akimpanel\u7684faq\u5566\uff0c\u5c31\u662f\u5e0c\u671b\u7528kimpanel\u7684\u4eba\u80fd\u591f\u5c11\u8d70\u4e9b\u5f2f\u8def\uff1a\uff09<\/p>\n<p>\u8fdb\u5165\u6b63\u9898<\/p>\n<p>\u6211\u7528linux\u4e5f\u86ee\u4e45\u4e86\uff0c\u542c\u6b4c\u59cb\u7ec8\u662f\u4e00\u4e2a\u91cd\u8981\u9700\u6c42\uff0c\u9996\u5148\u548c\u5f80\u5e38\u4e00\u6837\uff0c\u5148\u5217\u51fa\u5410\u5608\u5bf9\u8c61\uff0c\u7136\u540e\u518d\u5410\u5608\u3002<\/p>\n<p>\u7528\u8fc7\u7684\uff1aMPD\uff0cquodlibet\uff0cAmarok\uff0cJuk\uff0crythmbox\uff0csongbird\uff0cxmms\uff0cmplayer<\/p>\n<p>\u6ca1\u7528\u8fc7\u7684\uff0c\u5c31\u4e0d\u63d0\u4e86\uff1abanshee\uff0cdeadbeef\uff0clxmusic<\/p>\n<p><!--more-->\u6211\u7528linux\u5f00\u59cb\uff0c\u4e00\u5f00\u59cb\u641c\u7d22\u6559\u7a0b\u65f6\u5c31\u770b\u89c1\u4e86xmms\uff0c\u4e8e\u662f\u62ff\u6765\u7528\uff0c\u4e2d\u6587\u652f\u6301\u597d\u5dee\uff0c\u8bbe\u7f6e\u5b57\u4f53\u7adf\u7136\u8981\u8f93\u5165\u4e00\u957f\u4e32\u4e0d\u77e5\u9053\u662f\u4ec0\u4e48\u7684\u4e1c\u897f\u63cf\u8ff0\u5b57\u4f53\uff0c\u4f7f\u7528\u4f53<br \/>\n\u9a8c\u5947\u5dee\u65e0\u6bd4\u2026\u2026\u800c\u4e14\u6b63\u597d\u8d76\u4e0afedora\u4e2dxmms mp3\u652f\u6301\u4ece\u5b98\u65b9\u79fb\u9664\u2026\u2026\u90c1\u95f7\u7684\u8981\u6b7b\u3002<\/p>\n<p>\u7136\u540e\u7528\u4e86\u4ec0\u4e48\u6211\u90fd\u4e0d\u8bb0\u5f97\u4e86\uff0c\u6709\u6bb5\u65f6\u95f4\u7528\u4e86rythmbox\uff0c\u65e0\u8bed\u4e86\u5b83\u7684\u7f16\u7801\uff0c\u6211\u65e0\u9650\u6b21\u6539\u4e86\u4e00\u9996\u6b4c\u7684\u7f16\u7801\uff0c\u7ed3\u679c\u5c31\u662f\u641e\u4e0d\u5b9a\uff0c\u6254\u4e86\u6254\u4e86\u3002<\/p>\n<p>\u671f\u95f4\u6709\u6bb5\u65f6\u95f4\u5b9e\u5728\u4e0d\u8bb0\u5f97\u4e86\uff0c\u62b1\u6b49\u2026\u2026\u7136\u540e\u8c8c\u4f3c\u5c31\u662f\u7528\u8d77\u4e86mpc\uff0cmpc\u4e0d\u5f97\u4e0d\u8bf4\u662f\u4e2a\u597d\u4e1c\u897f\uff0c\u5404\u79cd\u524d\u6bb5\u6ee1\u8db3\u9700\u6c42\uff0c\u7528\u8fc7\u7684\u524d\u7aef\u6709<br \/>\nsonata\uff0cqmpdclient\uff0c\u90fd\u4e0d\u9519\uff0csonata\u76f8\u5f53\u987a\u624b\uff0c\u4e0d\u8fc7\u540e\u6765\u8fd8\u662f\u4e0d\u7528\u4e86\u2026\u2026\u4e0d\u8fc7mpc\u6700\u5927\u7684\u529f\u80fd\u5c31\u662f\uff1a\u8fdc\u7a0b\u542c\u6b4c\uff01\u6211\u5728\u6211\u5b9e\u9a8c\u5ba4\u7684\u7535\u8111\u4e0a<br \/>\n\u914d\u7f6e\u4e86mpd+icecast\uff0c\u7531\u4e8e\u6211\u7b14\u8bb0\u672c\u786c\u76d8\u592a\u5c0f\uff0c\u6ca1\u7a7a\u88c5\u6211\u8fd9\u4e9b\u6b4c\uff0c\u4e8e\u662f\u5c31\u7528\u4e86\u8fd9\u4e2a\u529f\u80fd\uff0c\u5446\u4f1a\u7ed9\u4e2a\u914d\u7f6e\u6559\u7a0b\uff1a\uff09<\/p>\n<p>\u7528\u8d77\u4e86quodlibet\u4e4b\u540e\uff0c\u53d1\u73b0\u8fd9\u624d\u662f\u4e07\u80fd\u89e3\u51b3mp3\u7f16\u7801\u95ee\u9898\u7684\u4e13\u5bb6\uff0c\u5b9e\u5728\u5f88\u723d\uff01\u5404\u79cd\u529f\u80fd\u90fd\u4e0d\u9519\uff0c\u63d2\u4ef6\u4e5f\u4e0d\u5c11\uff0c\u5f88\u80fd\u6ee1\u8db3\u6211\u7684\u9700\u6c42\uff0c\u4e0d\u8fc7\u6211\u540e\u6765\u5c0f<br \/>\n\u5c0f\u7684\u6d01\u7656\u53d1\u4f5c\uff0c\u8fd8\u662f\u7528\u8d77\u4e86amarok\u3002<\/p>\n<p>\u8f6c\u5411kde\u4e4b\u540e\u5c31\u5728amarok\u548cjuk\u4e4b\u95f4\u6e38\u79fb\uff0cjuk\u6700\u8ba9\u6211\u4e0d\u723d\u7684\u5c31\u662f\u6709\u65f6\u5019\u754c\u9762\u4f1a\u5b8c\u5168\u6df7\u4e71\u6389\uff0c\u540e\u6765\u4e5f\u5c31\u4e0d\u7528\u4e86\uff0c\u8fd9\u4e2a\u5b9e\u5728\u592a\u9e21\u808b\u3002<\/p>\n<p>\u6709\u6bb5\u65f6\u95f4\u542c\u8bf4songbird\u4e0d\u9519\uff0c\u5b9e\u9a8c\u4e4b\u540e\u6ca1\u5c11\u5d29\u6e83\uff0c\u5c31\u6254\u4e86\u2026\u2026\u73b0\u5728\u4e5f\u8bb8\u597d\u4e86\u2026\u2026<\/p>\n<p>amarok\u59cb\u7ec8\u662f\u6211\u7684\u6700\u7231\uff0c\u6700\u559c\u6b22\u7684\u5c31\u662f\u5b83\u7684\u52a8\u6001\u64ad\u653e\u5217\u8868\uff0c\u770b\u4e00\u770b\u6211\u7684\u8bbe\u7f6e\u662f\u8fd9\u6837\u7684\uff1a<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/filer.blogbus.com\/5313309\/53133091269787194x.png\" border=\"0\" alt=\"\" \/><\/p>\n<p>\u8fd9\u6837\u5c31\u8ba9\u6211\u559c\u6b22\u7684\u6b4c\u5360\u5927\u591a\u6570\u4e86\uff1a\uff09<\/p>\n<p>amarok\u4e5f\u66fe\u8ba9\u6211\u629b\u5f03\u4e86\u51e0\u6b21\uff0c\u5c31\u662f\u56e0\u4e3a\u7f16\u7801\u95ee\u9898\uff0c\u4e0d\u8fc7\u73b0\u5728\u6211\u4f7f\u7528quodlibet\u89e3\u51b3\u7f16\u7801\uff0camarok\u64ad\u653e\uff0c\u4e00\u76f4\u4e0d\u9519\uff1a\uff09<\/p>\n<p>\u4e0b\u9762\u8bf4\u4e00\u8bf4icecast\u548cmpd\u7684\u914d\u7f6e\uff1a<\/p>\n<table style=\"cursor: default; border: 1px dashed #bbbbbb;\" border=\"0\">\n<tbody>\n<tr>\n<td style=\"color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; cursor: text; margin: 8px; border: 1px dashed #bbbbbb;\"><span>&lt;icecast&gt;<br \/>\n&lt;limits&gt;<br \/>\n&lt;clients&gt;100&lt;\/clients&gt;<br \/>\n&lt;sources&gt;2&lt;\/sources&gt;<br \/>\n&lt;threadpool&gt;5&lt;\/threadpool&gt;<br \/>\n&lt;queue-size&gt;524288&lt;\/queue-size&gt;<br \/>\n&lt;client-timeout&gt;30&lt;\/client-timeout&gt;<br \/>\n&lt;header-timeout&gt;15&lt;\/header-timeout&gt;<br \/>\n&lt;source-timeout&gt;10&lt;\/source-timeout&gt;<br \/>\n&lt;!&#8211; If enabled, this will provide a burst of data when a client<br \/>\nfirst connects, thereby significantly reducing the startup<br \/>\ntime for listeners that do substantial buffering. However,<br \/>\nit also significantly increases latency between the source<br \/>\nclient and listening client.\u00a0 For low-latency setups, you<br \/>\nmight want to disable this. &#8211;&gt;<br \/>\n&lt;burst-on-connect&gt;1&lt;\/burst-on-connect&gt;<br \/>\n&lt;!&#8211; same as burst-on-connect, but this allows for being more<br \/>\nspecific on how much to burst. Most people won&#8217;t need to<br \/>\nchange from the default 64k. Applies to all mountpoints\u00a0 &#8211;&gt;<br \/>\n&lt;burst-size&gt;65535&lt;\/burst-size&gt;<br \/>\n&lt;\/limits&gt;<\/p>\n<p>&lt;authentication&gt;<br \/>\n&lt;!&#8211; Sources log in with username &#8216;source&#8217; &#8211;&gt;<br \/>\n&lt;source-password&gt;hackme&lt;\/source-password&gt;<br \/>\n&lt;!&#8211; Relays log in username &#8216;relay&#8217; &#8211;&gt;<br \/>\n&lt;relay-password&gt;hackme&lt;\/relay-password&gt;<\/p>\n<p>&lt;!&#8211; Admin logs in with the username given below &#8211;&gt;<br \/>\n&lt;admin-user&gt;admin&lt;\/admin-user&gt;<br \/>\n&lt;admin-password&gt;hackme&lt;\/admin-password&gt;<br \/>\n&lt;\/authentication&gt;<\/p>\n<p>&lt;!&#8211; set the mountpoint for a shoutcast source to use, the default if not<br \/>\nspecified is \/stream but you can change it here if an alternative is<br \/>\nwanted or an extension is required<br \/>\n&lt;shoutcast-mount&gt;\/live.nsv&lt;\/shoutcast-mount&gt;<br \/>\n&#8211;&gt;<\/p>\n<p>&lt;!&#8211; Uncomment this if you want directory listings &#8211;&gt;<br \/>\n&lt;!&#8211;<br \/>\n&lt;directory&gt;<br \/>\n&lt;yp-url-timeout&gt;15&lt;\/yp-url-timeout&gt;<br \/>\n&lt;yp-url&gt;http:\/\/dir.xiph.org\/cgi-bin\/yp-cgi&lt;\/yp-url&gt;<br \/>\n&lt;\/directory&gt;<br \/>\n&#8211;&gt;<\/p>\n<p>&lt;!&#8211; This is the hostname other people will use to connect to your server.<br \/>\nIt affects mainly the urls generated by Icecast for playlists and yp<br \/>\nlistings. &#8211;&gt;<br \/>\n&lt;hostname&gt;localhost&lt;\/hostname&gt;<\/p>\n<p>&lt;!&#8211; You may have multiple &lt;listener&gt; elements &#8211;&gt;<br \/>\n&lt;listen-socket&gt;<br \/>\n&lt;port&gt;8000&lt;\/port&gt;<br \/>\n&lt;!&#8211; &lt;bind-address&gt;127.0.0.1&lt;\/bind-address&gt; &#8211;&gt;<br \/>\n&lt;!&#8211; &lt;shoutcast-mount&gt;\/stream&lt;\/shoutcast-mount&gt; &#8211;&gt;<br \/>\n&lt;\/listen-socket&gt;<br \/>\n&lt;!&#8211;<br \/>\n&lt;listen-socket&gt;<br \/>\n&lt;port&gt;8001&lt;\/port&gt;<br \/>\n&lt;\/listen-socket&gt;<br \/>\n&#8211;&gt;<\/p>\n<p>&lt;!&#8211;&lt;master-server&gt;127.0.0.1&lt;\/master-server&gt;&#8211;&gt;<br \/>\n&lt;!&#8211;&lt;master-server-port&gt;8001&lt;\/master-server-port&gt;&#8211;&gt;<br \/>\n&lt;!&#8211;&lt;master-update-interval&gt;120&lt;\/master-update-interval&gt;&#8211;&gt;<br \/>\n&lt;!&#8211;&lt;master-password&gt;hackme&lt;\/master-password&gt;&#8211;&gt;<\/p>\n<p>&lt;!&#8211; setting this makes all relays on-demand unless overridden, this is<br \/>\nuseful for master relays which do not have &lt;relay&gt; definitions here.<br \/>\nThe default is 0 &#8211;&gt;<br \/>\n&lt;!&#8211;&lt;relays-on-demand&gt;1&lt;\/relays-on-demand&gt;&#8211;&gt;<\/p>\n<p>&lt;!&#8211;<br \/>\n&lt;relay&gt;<br \/>\n&lt;server&gt;127.0.0.1&lt;\/server&gt;<br \/>\n&lt;port&gt;8001&lt;\/port&gt;<br \/>\n&lt;mount&gt;\/example.ogg&lt;\/mount&gt;<br \/>\n&lt;local-mount&gt;\/different.ogg&lt;\/local-mount&gt;<br \/>\n&lt;on-demand&gt;0&lt;\/on-demand&gt;<\/p>\n<p>&lt;relay-shoutcast-metadata&gt;0&lt;\/relay-shoutcast-metadata&gt;<br \/>\n&lt;\/relay&gt;<br \/>\n&#8211;&gt;<\/p>\n<p>&lt;!&#8211; Only define a &lt;mount&gt; section if you want to use advanced options,<br \/>\nlike alternative usernames or passwords<br \/>\n&lt;mount&gt;<br \/>\n&lt;mount-name&gt;\/example-complex.ogg&lt;\/mount-name&gt;<\/p>\n<p>&lt;username&gt;othersource&lt;\/username&gt;<br \/>\n&lt;password&gt;hackmemore&lt;\/password&gt;<\/p>\n<p>&lt;max-listeners&gt;1&lt;\/max-listeners&gt;<br \/>\n&lt;dump-file&gt;\/tmp\/dump-example1.ogg&lt;\/dump-file&gt;<br \/>\n&lt;burst-size&gt;65536&lt;\/burst-size&gt;<br \/>\n&lt;fallback-mount&gt;\/example2.ogg&lt;\/fallback-mount&gt;<br \/>\n&lt;fallback-override&gt;1&lt;\/fallback-override&gt;<br \/>\n&lt;fallback-when-full&gt;1&lt;\/fallback-when-full&gt;<br \/>\n&lt;intro&gt;\/example_intro.ogg&lt;\/intro&gt;<br \/>\n&lt;hidden&gt;1&lt;\/hidden&gt;<br \/>\n&lt;no-yp&gt;1&lt;\/no-yp&gt;<br \/>\n&lt;authentication type=&#8221;htpasswd&#8221;&gt;<br \/>\n&lt;option name=&#8221;filename&#8221; value=&#8221;myauth&#8221;\/&gt;<br \/>\n&lt;option name=&#8221;allow_duplicate_users&#8221; value=&#8221;0&#8243;\/&gt;<br \/>\n&lt;\/authentication&gt;<br \/>\n&amp;nbs<br \/>\np;\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;on-connect&gt;\/home\/icecast\/bin\/stream-start&lt;\/on-connect&gt;<br \/>\n&lt;on-disconnect&gt;\/home\/icecast\/bin\/stream-stop&lt;\/on-disconnect&gt;<br \/>\n&lt;\/mount&gt;<\/p>\n<p>&lt;mount&gt;<br \/>\n&lt;mount-name&gt;\/auth_example.ogg&lt;\/mount-name&gt;<br \/>\n&lt;authentication type=&#8221;url&#8221;&gt;<br \/>\n&lt;option name=&#8221;mount_add&#8221;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 value=&#8221;http:\/\/myauthserver.net\/notify_mount.php&#8221;\/&gt;<br \/>\n&lt;option name=&#8221;mount_remove&#8221;\u00a0\u00a0\u00a0 value=&#8221;http:\/\/myauthserver.net\/notify_mount.php&#8221;\/&gt;<br \/>\n&lt;option name=&#8221;listener_add&#8221;\u00a0\u00a0\u00a0 value=&#8221;http:\/\/myauthserver.net\/notify_listener.php&#8221;\/&gt;<br \/>\n&lt;option name=&#8221;listener_remove&#8221; value=&#8221;http:\/\/myauthserver.net\/notify_listener.php&#8221;\/&gt;<br \/>\n&lt;\/authentication&gt;<br \/>\n&lt;\/mount&gt;<\/p>\n<p>&#8211;&gt;<\/p>\n<p>&lt;fileserve&gt;1&lt;\/fileserve&gt;<\/p>\n<p>&lt;paths&gt;<br \/>\n&lt;!&#8211; basedir is only used if chroot is enabled &#8211;&gt;<br \/>\n&lt;basedir&gt;\/usr\/share\/icecast&lt;\/basedir&gt;<\/p>\n<p>&lt;!&#8211; Note that if &lt;chroot&gt; is turned on below, these paths must both<br \/>\nbe relative to the new root, not the original root &#8211;&gt;<br \/>\n&lt;logdir&gt;\/log&lt;\/logdir&gt;<br \/>\n&lt;webroot&gt;\/web&lt;\/webroot&gt;<br \/>\n&lt;adminroot&gt;\/admin&lt;\/adminroot&gt;<br \/>\n&lt;!&#8211; &lt;pidfile&gt;\/usr\/share\/icecast\/icecast.pid&lt;\/pidfile&gt; &#8211;&gt;<\/p>\n<p>&lt;!&#8211; Aliases: treat requests for &#8216;source&#8217; path as being for &#8216;dest&#8217; path<br \/>\nMay be made specific to a port or bound address using the &#8220;port&#8221;<br \/>\nand &#8220;bind-address&#8221; attributes.<br \/>\n&#8211;&gt;<br \/>\n&lt;!&#8211;<br \/>\n&lt;alias source=&#8221;\/foo&#8221; dest=&#8221;\/bar&#8221;\/&gt;<br \/>\n&#8211;&gt;<br \/>\n&lt;!&#8211; Aliases: can also be used for simple redirections as well,<br \/>\nthis example will redirect all requests for http:\/\/server:port\/ to<br \/>\nthe status page<br \/>\n&#8211;&gt;<br \/>\n&lt;alias source=&#8221;\/&#8221; dest=&#8221;\/status.xsl&#8221;\/&gt;<br \/>\n&lt;\/paths&gt;<\/p>\n<p>&lt;logging&gt;<br \/>\n&lt;accesslog&gt;access.log&lt;\/accesslog&gt;<br \/>\n&lt;errorlog&gt;error.log&lt;\/errorlog&gt;<br \/>\n&lt;!&#8211; &lt;playlistlog&gt;playlist.log&lt;\/playlistlog&gt; &#8211;&gt;<br \/>\n&lt;loglevel&gt;3&lt;\/loglevel&gt; &lt;!&#8211; 4 Debug, 3 Info, 2 Warn, 1 Error &#8211;&gt;<br \/>\n&lt;logsize&gt;10000&lt;\/logsize&gt; &lt;!&#8211; Max size of a logfile &#8211;&gt;<br \/>\n&lt;!&#8211; If logarchive is enabled (1), then when logsize is reached<br \/>\nthe logfile will be moved to [error|access|playlist].log.DATESTAMP,<br \/>\notherwise it will be moved to [error|access|playlist].log.old.<br \/>\nDefault is non-archive mode (i.e. overwrite)<br \/>\n&#8211;&gt;<br \/>\n&lt;!&#8211; &lt;logarchive&gt;1&lt;\/logarchive&gt; &#8211;&gt;<br \/>\n&lt;\/logging&gt;<\/p>\n<p>&lt;security&gt;<br \/>\n&lt;chroot&gt;1&lt;\/chroot&gt;<br \/>\n&lt;changeowner&gt;<br \/>\n&lt;user&gt;nobody&lt;\/user&gt;<br \/>\n&lt;group&gt;icecast&lt;\/group&gt;<br \/>\n&lt;\/changeowner&gt;<br \/>\n&lt;\/security&gt;<br \/>\n&lt;\/icecast&gt;<\/p>\n<p><\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u51e0\u4e4e\u5c31\u662f\u9ed8\u8ba4\u914d\u7f6e\uff0c\u4e0d\u8fc7\u4f7f\u7528\u4e86\u4e00\u4e2agroup<\/p>\n<p>\u7136\u540e\u770b\u770b\u6211\u7684mpd\u914d\u7f6e\uff1a<\/p>\n<table style=\"cursor: default; border: 1px dashed #bbbbbb;\" border=\"0\">\n<tbody>\n<tr>\n<td style=\"color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; cursor: text; margin: 8px; border: 1px dashed #bbbbbb;\"><span>music_directory\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;\/home\/saber\/\u97f3\u4e50\/&#8221;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # Your music dir.<br \/>\nplaylist_directory\u00a0\u00a0\u00a0 &#8220;\/var\/lib\/mpd\/playlists&#8221;<br \/>\ndb_file\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;\/var\/lib\/mpd\/db&#8221;<br \/>\nlog_file\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;\/var\/log\/mpd\/mpd.log&#8221;<br \/>\nerror_file\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;\/var\/log\/mpd\/mpd.error&#8221;<br \/>\npid_file\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;\/var\/run\/mpd\/mpd.pid&#8221;<br \/>\nstate_file\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;\/var\/lib\/mpd\/mpdstate&#8221;<br \/>\nuser\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;mpd&#8221;<\/p>\n<p>audio_output {<br \/>\ntype\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;shout&#8221;<br \/>\nencoding\u00a0\u00a0\u00a0 &#8220;ogg&#8221;<br \/>\nname\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;my cool stream&#8221;<br \/>\nhost\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;localhost&#8221;<br \/>\nport\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;8000&#8221;<br \/>\nmount\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;\/mpd.ogg&#8221;<\/p>\n<p># This is the source password in icecast.xml<br \/>\npassword\u00a0\u00a0\u00a0 &#8220;hackme&#8221;<\/p>\n<p># Set either quality or bitrate<br \/>\n#\u00a0\u00a0 quality\u00a0\u00a0\u00a0\u00a0 &#8220;5.0&#8221;<br \/>\nbitrate\u00a0\u00a0\u00a0\u00a0 &#8220;64&#8221;<\/p>\n<p>format\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;44100:16:1&#8221;<\/p>\n<p># Optional Paramters<br \/>\nuser\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;source&#8221;<br \/>\n#\u00a0\u00a0 description &#8220;here&#8217;s my long description&#8221;<br \/>\n#\u00a0\u00a0 genre\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;jazz&#8221;<br \/>\n} # end of audio_output<\/p>\n<p>audio_output {<br \/>\ntype\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;null&#8221;<br \/>\nname\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;My Null Output&#8221;<br \/>\n}<\/p>\n<p># Need this so that mpd still works if icecast is not running<br \/>\n#audio_output {<br \/>\n#\u00a0\u00a0\u00a0 type &#8220;alsa&#8221;<br \/>\n#\u00a0\u00a0\u00a0 name &#8220;fake out&#8221;<br \/>\n#\u00a0\u00a0\u00a0 driver &#8220;null&#8221;<br \/>\n#}<\/p>\n<p><\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u600e\u4e48\u6837\uff0c\u662f\u4e0d\u662f\u5f88\u7b80\u5355\uff1a\uff09<\/p>\n<p>\u8fd9\u4e24\u4e2a\u90fd\u662f\u5229\u7528\u7cfb\u7edf\u670d\u52a1\u542f\u52a8\u7684\uff0c\u5982\u679c\u662f\u7528\u6237\u6001\u8fd8\u8bf7\u81ea\u884c\u4fee\u6539\u3002<\/p>\n<p>\u5b89\u88c5\u4e86mpd\uff0cicecast\uff0c\u5e73\u65f6\u53ea\u8981\u4e0ahttp:\/\/ip:8000\/\u5c31\u53ef\u4ee5\u7528m3u\u64ad\u653e\u6b4c\u66f2\u5566~<\/p>\n<p>\u5728\u5bbf\u820d\u542c\u6b4c\u65f6\u7528sonata\u63a7\u5236\uff0c\u867d\u7136\u670910\u79d2\u949f\u7684\u5207\u6362\u6b4c\u66f2\u7684\u5ef6\u8fdf\u4e0d\u8fc7\u4e5fok\uff1a\uff09<\/p>\n<p>mplayer\u6709\u65f6\u62ff\u6765\u4e34\u65f6\u64ad\u653e\uff0c\u6ca1\u6709\u7ba1\u7406\u529f\u80fd\u8fd8\u662f\u4e0d\u559c\u6b22\u2026\u2026<\/p>\n<p>\u4ee5\u540e\u518d\u6162\u6162\u6361\u8d77\u6765\u8fd9\u4e2a\u7cfb\u5217\u7684\u6587\u7ae0\u55bd<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6361\u8d77\u6765\u5520\u53e8\u4e00\u6b21\uff1a\uff09\uff0c\u53d1\u73b0\u770b\u6211blog\u7684\u4eba\uff08\u90fd\u662fgoogle\u6765\u7684\u5566\uff09\uff0c\u5927\u90e8\u5206\u5173\u6ce8\u6211\u90a3\u4e2aati\u663e\u5361\u7684\uff0c\u53ef\u60dc\u2026\u2026\u90a3\u4e2a\u6ca1\u6709\u5565\u6559\u7a0b\u6027\u7684\u5185\u5bb9\u2026\u2026\u5176\u6b21\u5c31\u662f\u4e00\u4e2akimpanel\u7684faq\u5566\uff0c\u5c31\u662f\u5e0c\u671b\u7528kimpanel\u7684\u4eba\u80fd\u591f\u5c11\u8d70\u4e9b\u5f2f\u8def\uff1a\uff09 \u8fdb\u5165\u6b63\u9898 \u6211\u7528linux\u4e5f\u86ee\u4e45\u4e86\uff0c\u542c\u6b4c\u59cb\u7ec8\u662f\u4e00\u4e2a\u91cd\u8981\u9700\u6c42\uff0c\u9996\u5148\u548c\u5f80\u5e38\u4e00\u6837\uff0c\u5148\u5217\u51fa\u5410\u5608\u5bf9\u8c61\uff0c\u7136\u540e\u518d\u5410\u5608\u3002 \u7528\u8fc7\u7684\uff1aMPD\uff0cquodlibet\uff0cAmarok\uff0cJuk\uff0crythmbox\uff0csongbird\uff0cxmms\uff0cmplayer \u6ca1\u7528\u8fc7\u7684\uff0c\u5c31\u4e0d\u63d0\u4e86\uff1abanshee\uff0cdeadbeef\uff0clxmusic<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[32,51,49,50,211],"class_list":["post-67","post","type-post","status-publish","format-standard","hentry","category-my-thought-on-linux","tag-amarok","tag-icecast","tag-mpd","tag-sonata","tag-my-thought-on-linux"],"_links":{"self":[{"href":"https:\/\/www.csslayer.info\/wordpress\/wp-json\/wp\/v2\/posts\/67","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.csslayer.info\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.csslayer.info\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.csslayer.info\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.csslayer.info\/wordpress\/wp-json\/wp\/v2\/comments?post=67"}],"version-history":[{"count":3,"href":"https:\/\/www.csslayer.info\/wordpress\/wp-json\/wp\/v2\/posts\/67\/revisions"}],"predecessor-version":[{"id":338,"href":"https:\/\/www.csslayer.info\/wordpress\/wp-json\/wp\/v2\/posts\/67\/revisions\/338"}],"wp:attachment":[{"href":"https:\/\/www.csslayer.info\/wordpress\/wp-json\/wp\/v2\/media?parent=67"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.csslayer.info\/wordpress\/wp-json\/wp\/v2\/categories?post=67"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.csslayer.info\/wordpress\/wp-json\/wp\/v2\/tags?post=67"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}