如何在Wowza Media Server媒體伺服器上,用視訊檔案輪流播放直播節目

Wowza Media Server是一套很長是一套很常用的媒體伺服器,尤其支持許多行動裝置,像是手機(iPhone或是Android的手機)、平板電腦(無論iPAD還是Android PAD)、甚至各種電腦、機上盒。。。等等應用,非常普遍。

這裡介紹一下怎樣設定這套系統,讓放置在這套系統的視訊檔案(Video File),利用時間排程,進行連續播放,就好像電視台在播放影片、廣告、影片、其他內容等等,方便又好用的功能:

首先,Wowza支持的檔案格式,可以參考這個連結

FLV (Flash Video – .flv) 
MP4 (QuickTime container – .mp4, .f4v, .mov, .m4v, .mp4a, .3gp, and .3g2) 
MP3 (.mp3)

所以,其他格式必須事先進行轉碼才可以使用。

Wowza輸出格式以及相關規格,可以參考此連結。詳細的PDF資料在這裡

基本上要實現這樣的功能,有兩種方法,一種是下面介紹的

“如何使用串流類別的串流來做伺服器端的發佈應用?”原文在此。是一個簡單的例子來說明串流類別(Stream Class)的基本使用。程式碼如下:

package com.wowza.wms.example.serverlistener;

import com.wowza.wms.logging.WMSLoggerFactory;
import com.wowza.wms.server.*;
import com.wowza.wms.vhost.*;
import com.wowza.wms.stream.publish.*;
import com.wowza.wms.application.*;

public class StreamPublisherDemo implements IServerNotify {

	public void onServerInit(IServer server)
	{
		IVHost vhost = VHostSingleton.getInstance(VHost.VHOST_DEFAULT);
		IApplication app = vhost.getApplication("live");
		IApplicationInstance appInstance = app.getAppInstance("_definst_");

		Stream stream1 = Stream.createInstance(vhost, "live", "Stream1");

		stream1.play("mp4:sample.mp4", 5, 5, true);
		stream1.play("mp4:sample.mp4", 50, 5, false);
		stream1.play("mp4:sample.mp4", 150, 5, false);
		stream1.addListener(new StreamListener(appInstance));

		Stream stream2 = Stream.createInstance(vhost, "live", "Stream2");

		stream2.play("mp4:sample.mp4", 0, -1, true);
		stream2.addListener(new StreamListener(appInstance));

	}
	public void onServerCreate(IServer server)
	{
	}
	public void onServerShutdownComplete(IServer server)
	{
	}

	public void onServerShutdownStart(IServer server)
	{
	}
	class StreamListener implements IStreamActionNotify
	{
		StreamListener(IApplicationInstance appInstance)
		{
		}
		public void onPlaylistItemStop(Stream stream, PlaylistItem item)
		{
			WMSLoggerFactory.getLogger(null).info("Item Stopped: " + item.getName() + "on Stream: " + stream.getName());			
		}
		public void onPlaylistItemStart(Stream stream, PlaylistItem item) 
		{
			WMSLoggerFactory.getLogger(null).info("Item Started: " + item.getName() + "on Stream: " + stream.getName());
		}
	}	
}

把Server listener加到/conf/Server.xml /ServerListeners,如下面的程式碼:

<ServerListener>
   <BaseClass>com.wowza.wms.example.serverlistener.StreamPublisherDemo</BaseClass>
</ServerListener>

接著呢,建立ㄧ個Wowza app名稱為“live”,將Application.xml裡面的/StreamType設定為”live”。這樣基本上就設定好了,但是怎麼播放呢?

可以打開 [install-dir]/examples/LiveVideoStreaming/FlashRTMPPlayer/player.html (Wowza Media Server 3.5 或以後的版本)

或者

[install-dir]/examples/LiveVideoStreaming/client/live.html (Wowza Media Server 3.5以前的版本)

內容位置在于:

Server: rtmp://[wowza-ip-address]/live
Stream: Stream1 (or Stream2)

另外ㄧ個方法,下次再寫。

如何修改MySQL的后台管理的网址

URL for phpMyAdmin
phpMyAdmin is a good tool for administration of MySQL databases, but the URL is not secure by default

很多站长都使用MySQL来作为网站的主要数据库系统,而phpMyAdmin又是相当好用的数据库后台管理界面。但是,他的默认网址URL一般如上图:http://你的网址/phpMyAdmin,这么简单就可以猜到的网址,很容易让黑客进入你的后台数据库里面。

如何让管理平台可以更安全呢?试试下面的简单方法:

    1. 先找到phpMyAdmin的这个文件apache.conf,在Linux环境下,通常在/etc/phpmyadmin/这个位子,找到后打开文件,通常在最顶端可以找到下面这段叙述:
      # phpMyAdmin default Apache configuration 
      Alias /phpmyadmin /usr/share/phpmyadmin
    2. 接着,就将这段叙述“Alias /phpadmin /usr/share/phpmyadmin”,修改为下面的方式:
      Alias /secretcode /usr/share/phpmyadmin,这个secretcode自己编一个任何人都很难猜得出来的文字代号,例如‘@34%6tFd&hs‘
      如下:

      # phpMyAdmin default Apache configuration 
      Alias /@34%6tFd&hs /usr/share/phpmyadmin
    3. 重新启动你服务器上的apache
      sudo /etc/init.d/apache2 restart
    4. 在试着用你的浏览器去看看:http://www.你的网址/@34%6tFd&hs ,就可以管理你的MySQL数据库了

     

      台灣網路環境脆弱得不堪一擊

      前幾年,台灣外海常常因為漁船作業,搞斷了幾條海纜,嚴重影響台灣對外網路通訊。可是,再怎麼說,台灣四面環海,哪都可以讓海纜登陸,為何偏偏就只在那兩三個地方呢?而彼此,卻沒有所謂的安全備援機制。原因無他,就是寡占甚至壟斷的電信生態所致,不公平的台灣電信環境所致,才會讓四面環海的台灣,卻得發生“海纜斷線”的慘狀。

      今天的新聞:

      機房火燒,卻讓網民遭殃ㄧ個機房,ㄧ個被中華電信買下的是方電信,號稱五星級的電信機房,也是許多國際電信商來台服務的主要機房,甚至是許多靠著網路做生意的最重要的機房。

      但他為何那麼重要?因為沒別家的選擇了~~~~

      是方機房火災現場

      天有不測風雲,但,為何台灣就沒有可作備援的高品質電信機房?十幾年前,東帝士大樓火災,讓許多企業不斷在討論如何謂企業作“災難恢復”(Disaster Recovery)或“異地備援”。但這已經是十幾年前的事了。接著1998年的全台大停電、1999年921大地震,這些災難,卻還在讓企業”繼續討論下去“,最可悲的是,電信網路,還是只有中華電信!!

      二十一世紀的台灣,發生幾次海纜斷線,卻還是只有中華電信可用。。。

      今天,UPS的電池爆炸,這是啥理由,卻讓全台灣80%的網路出問題。十幾年過去了,討論出了什麼沒有?仍然只有中華電信獨家最大,加上台固(台哥大)與遠傳兩家不願意投資,沒有企圖心的電信服務商,台灣,這個號稱要做科技島的國家,網路卻是如此脆弱不堪。

      我們的上網費用相對於國民所得,算是很貴的。手機上網更是貴得離譜,上網品質落後香港五六年,更別談韓國日本了。貴也就算了,品質差,現在,竟然一家火燒,大家陪葬。

       

      在CentOS上,如何設定SSL給HTTPS,或其他應用。

      採用OPENSSL指令來設定SSL,以下的動作需要root/su的權限才行。

      參考網址:
      http://wiki.centos.org/HowTos/Https
      http://www.sslshopper.com/article-most-common-openssl-commands.html

       

      1. 首先下載OpenSSL, openssl官網:http://www.openssl.org/

       yum install mod_ssl openssl

      2. 產生ㄧ個self-signed certificate

       # 產生私有鑰匙 private key 
      openssl genrsa -out ca.key 1024 
      
      # 產生 CSR 
      openssl req -new -key ca.key -out ca.csr
      
      # 產生 Self Signed Key
      openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
      
      # 將上述的檔案復制到正確的目錄
      cp ca.crt /etc/pki/tls/certs
      cp ca.key /etc/pki/tls/private/ca.key
      cp ca.csr /etc/pki/tls/private/ca.csr

      3. 修改/etc/httpd/conf.d/ssl.conf

      ....
      SSLCertificateFile /etc/pki/tls/certs/ca.crt
      SSLCertificateKeyFile /etc/pki/tls/private/ca.key   
      ...

      4. 重新啓動httpd

      service httpd restart

      5. 設定虛擬主機(Virtual Hosting)

      <VirtualHost *:443>
              SSLEngine on
              SSLCertificateFile /etc/pki/tls/certs/ca.crt
              SSLCertificateKeyFile /etc/pki/tls/private/ca.key
              <Directory /var/www/vhosts/yoursite.com/httpsdocs>
              AllowOverride All
              </Directory>
              DocumentRoot /var/www/vhosts/yoursite.com/httpsdocs
              ServerName yoursite.com
      </VirtualHost>

      6. 重新啓動httpd

      service httpd restart

      7. 設定防火牆

      iptables -A INPUT -p tcp --dport 443 -j ACCEPT
      /sbin/service iptables save
      iptables -L -v

      8 其他openssl主要指令集:
      These commands allow you to generate CSRs, Certificates, Private Keys and do other miscellaneous tasks.
      Generate a new private key and Certificate Signing Request

      openssl req -out CSR.csr -new -newkey rsa:2048 -nodes -keyout privateKey.key

      Generate a self-signed certificate (see How to Create and Install an Apache Self Signed Certificate for more info)

      openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt

      Generate a certificate signing request (CSR) for an existing private key

      openssl req -out CSR.csr -key privateKey.key -new

      Generate a certificate signing request based on an existing certificate

      openssl x509 -x509toreq -in certificate.crt -out CSR.csr -signkey privateKey.key

      Remove a passphrase from a private key

      openssl rsa -in privateKey.pem -out newPrivateKey.pem

      Checking Using OpenSSL
      If you need to check the information within a Certificate, CSR or Private Key, use these commands. You can also check CSRs and check certificates using our online tools.

      Check a Certificate Signing Request (CSR)

      openssl req -text -noout -verify -in CSR.csr

      Check a private key

      openssl rsa -in privateKey.key -check

      Check a certificate

      openssl x509 -in certificate.crt -text -noout

      Check a PKCS#12 file (.pfx or .p12)

      openssl pkcs12 -info -in keyStore.p12

      Debugging Using OpenSSL

      If you are receiving an error that the private doesn’t match the certificate or that a certificate that you installed to a site is not trusted, try one of these commands. If you are trying to verify that an SSL certificate is installed correctly, be sure to check out the SSL Checker.

      Check an MD5 hash of the public key to ensure that it matches with what is in a CSR or private key

      openssl x509 -noout -modulus -in certificate.crt | openssl md5
      openssl rsa -noout -modulus -in privateKey.key | openssl md5
      openssl req -noout -modulus -in CSR.csr | openssl md5

      Check an SSL connection. All the certificates (including Intermediates) should be displayed

      openssl s_client -connect www.paypal.com:443

      Converting Using OpenSSL

      These commands allow you to convert certificates and keys to different formats to make them compatible with specific types of servers or software. For example, you can convert a normal PEM file that would work with Apache to a PFX (PKCS#12) file and use it with Tomcat or IIS. Use our SSL Converter to convert certificates without messing with OpenSSL.

      Convert a DER file (.crt .cer .der) to PEM

      openssl x509 -inform der -in certificate.cer -out certificate.pem

      Convert a PEM file to DER

      openssl x509 -outform der -in certificate.pem -out certificate.der

      Convert a PKCS#12 file (.pfx .p12) containing a private key and certificates to PEM

      openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes

      You can add -nocerts to only output the private key or add -nokeys to only output the certificates.

      Convert a PEM certificate file and a private key to PKCS#12 (.pfx .p12)

      openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt

      HTML5與Native App

      剛剛看了這篇文章,HTML5 vs. Apps: Why The Debate Matters, And Who Will Win

      Read more: http://www.businessinsider.com/html5-vs-apps-why-the-debate-matters-and-who-will-win-2012-11#ixzz2Fl52rLaX

      html5-support

      雖然HTML5的技術不斷推陳出新,也有許許多多程式設計者對這技術的偏好以及看好未來的前景。這篇文章,滿客觀地作了這些爭議的分析,但是,還有許多的商業因素卻尚未提及。例如Facebook的Mark Zuckerger前些日子對HTML5的批評,雖然他的批評也被人給反擊了,但背後的意義卻滿值得回味。再則,現在也有推出許多用HTML5所編寫的media player,但是,說正格的,效果確實還是輸給了Flash base的JWPlayer或Flower,無論是流暢度或是支援的串流協議等。如果在Android平台上,HTML5的影音串流,效果也不如才用Google Android所提供的native code media player。

      所以呢,吵歸吵,還是得看看現實面吧。。。一步一步來比較妥當。