LearnHouse

Archive for the 'Linux' Category

Linux硬體查詢與掛載

lpci可以看pci上的裝置,lusb可以看usb上的裝置
兩個ID都可以查/usr/share/hwdata/pci.ids得知硬體廠商
dmesg是開機時核心去偵測系統的硬體
可以用dmesg | grep -i hd直接看硬碟的資訊
dmesg | grep -i eht看網路卡資訊
mount -t ext3 /dev/sda /mnt/eHD

有空在來補.......

posted by yuchin in Linux and have No Comments

INTEL IXP425 ARM嵌入式Linux系統原理與實務

INTEL IXP425 ARM嵌入式Linux系統原理與實務
  • 作者:謝文川/著
  • 出版社:學貫
  • 出版日期:2005年10月28日
  • 語言:繁體中文 ISBN:9867198271
  • 裝訂:平裝

內容簡介:

本書區分為「理論篇」二章與「實驗篇」十四章與「專題篇」一章

  「理論篇」介紹嵌入式系統簡介、嵌入式系統的應用領域與發展現況、嵌入式作業系統種類、embedded linux的未來趨勢、與本書所使用的IXDPG425的開發實驗板的架構與運用。

 「實驗篇」以完整的實驗設計,帶領讀者將在IXDPG425開發實驗板尚未有任何嵌入式作業系統的情況下,如何對於目標平台(IXDPG425)、終端機與伺服器之間作配當的環境配置、並示範安裝OpenRG嵌入式作業系統、Snapgear與移植Openslug embeddedLinux至IXDPG425開發實驗板的流程一步步示範解說。並針對行動與無線通訊中的藍芽無線個人區域網路、802.11b/g無線區域網路等裝置如何驅動有一相當完整的示範。

  「專題篇」以「嵌入式藍芽無線環境下語音聲控家電閘道器之研製」介紹在IXDPG425開發實驗板的一完整商業應用。

本書特色

1.市面第一本介紹Intel Xscale Arm下安裝嵌入式Linux的書籍。
2.嵌入式系統開機管理程式RedBoot詳細的說明與常用的RedBoot指令與範例。
3.使用RedBoot燒錄Snapgear作業系統。
4.燒錄OpenRG作業系統。
5.燒錄OpenSlug作業系統。
6.介紹JTAG線製作方式。
7.使用JTAG備份與燒錄BootLoader。
8.安裝嵌入式系統開發程式語言,如Python直譯器、Java虛擬機器。
9.移植無線通訊裝置驅動程式至Lntel Xscale嵌入式系統環境,如Bluetooth、Wireless LAN。

posted by yuchin in Linux and have No Comments

如何在linux上安裝VLC播放器(VideoLAN)

以我的版本CentOS 5.0為例,首先編輯/etc/yum.conf,加入

[dag]name=Dag RPM Repository for Red Hat Enterprise Linuxbaseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/daggpgcheck=1enabled=1[dries]name=Extra Fedora rpms dries - $releasever - $basearchbaseurl=http://ftp.belnet.be/packages/dries.ulyssis.org/redhat/el5/en/i386/dries/RPMSenabled=1[atrpms]name=Fedora Core $releasever - $basearch - ATrpmsbaseurl=http://dl.atrpms.net/el5-i386/atrpms/stableenabled=0

再來開始安裝vlc,執行yum install vlc,就會出現很多相依套件要安裝 

Tips:
1.若有出現TimeOut的情形,根據錯誤訊息把它註解掉

2.安裝相依套件時如果出現warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 6b8d79e6,確認過用rpm --import http://ftp2.tnc.edu.tw/pub1/centos/RPM-GPG-KEY-CentOS-5與rpm --import /usr/share/doc/centos-release-5/RPM-GPG-KEY-CentOS-5無效後,可以參考此網站的解法。

B2. How to configure to use RPMforge ?
It's very easy. Just install the latestrpmforge-release packagefor your distribution and architecture.

This will automatically install the configuration and GPG keys that arefor safely installing RPMforge packages.

Please select the correct command from the following list:

 

posted by yuchin in Linux and have No Comments

校正linux系統時間

之前有老師反映說moodle上面的時間與現在時間不符,讓一些有時效性的功能變得怪怪的

我想應該是linux上系統時間與實際的時間不符吧!!但我一直拖到現在才用 = ="

由於我只是要更新系統時間,所以只要有client的update軟體就行了

更新指令叫做ntpdate,如果linux裡沒這個指令的話,就用yum去找ntp-client 套件吧

我是利用國家時間與頻率標準實驗室 提供的NTP server

可以用clock的指令來看目前系統的時間,如果與現在時間不符,即可使用ntpdate來更新

首先輸入指令:ntpdate time.stdtime.gov.tw

再來寫入BIOS clock:hwclock -w (如果沒執行此指令的話,用clock指令看時間也不會變,也就是說這一個指令一定要執行)

另外這一個就不是那麼必要了,有人還會設定固定什麼時候就自動校準時間一次

例如在corntab設定每個早上6:00自動校正

0 6 * * * /usr/sbin/ntpdate time.stdtime.gov.tw;/usr/sbin/hwclock -w

posted by yuchin in Linux and have No Comments

利用 Linux 建構 Video Streaming

原始資料來源:j2h論壇

Video Streaming 的技術已經出現多年,在 Internet 上的應用也已經相當廣泛,

而利用 Linux 建構 Video Streaming Server 也是相當熱門的話題。

如果您想瞭解什麼是 Video Streaming,

本文對 Video Streaming 的觀念與技術將做了清楚而基本的介紹。 

Video Streaming 來的正是時候

看到 "Video" Streaming 就知道這個技術與影音有關。Video Streaming 是一種經由網路來撥放影音檔案的技術,Video "Streaming" 的基本概念為「一邊下載一邊撥放」,我們稱之為「Play as received」。

經由 Internet 如果要收看遠端伺服器的電視檔案,最原始的做為是「下載後再撥放」,也就是經由 FTP 或 HTTP 將整個檔案下載至本地端後再利用撥放程式來撥放,我們稱之為「Play after download」。

以最常見的例子來講,我們可以經由網路將 MP3 完整下載後再撥放,也就是 Play after download,或者我們也可以一邊下載 MP3 一邊聽音樂,這種方式則稱為 Play as received。其他的應用範例還很多,例如利用 RealPlayer「即時觀看影片或是聽音樂」,這種即時撥放的方式即是 Play as received,我們稱這樣的技術為 Video Streaming Technology。

為什麼說 Video Streaming 的技術來的正是時候呢?舉個最簡單的情況,你可能在下載 MP3 之前想要試聽一下音樂的內容,而下載音樂片段的方式又顯得不夠友善,這時如果利用 Video Streaming 的技術來讓網友視聽,不但方便,而且不必浪費時間來下載不喜歡的音樂的。

隨著網路頻寬的改進與 IPv6 的出現,Video Streaming 的應用將越來越廣泛,利用 Video Streaming 來設計的資訊家電也會越來越多,例如較常被提及的網路電話 (InterPhone)。

除了寬頻網路的普及外,儲存設備的大進步也是加速 Video Streaming 進用普及的最大動力,例如利用 Linux 設計的 NAS 可以被用來當做大型的影音伺服器或是動態電影資料庫 (DMD)。

VCD & MPEG-1

要提到撥放動態影音的先軀,絕對要先從 VCD 說起,因為這是在電腦出現後,最能深入消費者市場的產品。

想當年,要撥放 VCD 除了要有一台當時算是高擋貨的 1x CD-ROM 外,還要再另外加裝也是高擋貨的 MPEG 卡。撥放 VCD 其實就是 Video Streaming 的技術,因為 VCD 的資料是一邊讀取一邊撥放,那為什麼要有 MPEG Card 呢?理所當然的,這是因為MPEG-1 的標準。

MPEG-1 被設計在 1x CD-ROM 上撥放 VCD,而 VCD 上的資料必須經由 MPEG Card 解碼 (decode) 後才能撥放。但是隨著硬體的進步,現在可以經由軟體來做 MPEG-1 解碼的工作。我們將在後文介紹 MPEG-1 的設計概念。

DVD & MPEG-2

MPEG-2 常被提到則是由於 DVD 的流行。不管是 MPEG-1 或是 MPEG-2,其實是一種編碼的技術,而 DVD-ROM 則是選擇了 MPEG-2 來當做它的壓縮標準。

而 DVD 之所以無法像 VCD 一樣能被「備份到硬碟」,則是由於其中又加進了三道的保護,第二道保護就是玩家們耳熟能詳的 CSS。在 Linux 下之所以無法有「合法」的 DVD Player,就是受制於 CSS 的關係。

利用 NAS 來設計 Video Server,要儲存並廣撥 VCD 已經沒有技術上的障礙,但是要儲存並擴撥 DVD,則有法律上的問題,這點是值得我們深思的一個問題。因為目前 CSS 的技術掌握在日本人手裏,要取得這項技術必須簽署 NDA,不過 CSS 並非不可破解想必大家都知道,但是就是有版權上的問題。

影像編碼技術介紹

目前學術界已經發展出許多處理影像訊號壓縮及編碼的技術 (codecs),談到這些技術,應用最廣泛的編碼標準底下四種:

  1. ) H.261
  2. ) H.263
  3. ) JPEG, MJPEG
  4. ) MPEG

底下將分別簡單介紹這四種編碼技術。

H.261 標準

H.261 的影像編碼標準出現在 1990 年的 ITU。一開始的用途主要是支援影像電話 (video phone) 與視訊會議 (video conferencing)。H.261 的格式有二種,分別有不同的解析度:

  1. ) QCIF:176x144
  2. ) CIF:352x288

H.261 的 fps (frames per second) 可以達到 7.5, 10, 15 與 30 fps。由於 H.261 一開始是架構在 ISDN B 上面,而 ISDN B 的傳輸速度為 64 Kbps,所以 H.261 也被稱為 Px64 (x = 1 to 30)。

CIF 全名為 (Common Intermediate Format),主要是為了要支援各種不同解析度的電影而被定義出來,例如 NTSC, PAL, SECAM 電視系統。而 QCIF 則是 Quarter-CIF 也就是 CIF 解析度的一半。

除此之外,H.261 也可以說是 MPEG-1 標準的前輩。

H.263 標準

H.263 是 H.261 的加強版,誕生於 1994 年 (ITU)。H.263 開始支援 PSTN,不過要特別說明一點,H.263 比 MPEG-1 還要晚出現,而且 H.263 還是基於 MPEG-1 而發展。

H.263 的標準共支援五種不同的解析度,分別為:

  1. ) Sub-QCIF:128x96
  2. ) QCIF:176x144
  3. ) CIF:352x288
  4. ) 4CIF:704x576
  5. ) 16CIF:1408x1152

傳輸速度為 8 Kbps ~ 1.5 Mbps。除此之外,H.263 也是 MPEG-4 標準的基礎。

JPEG

提到 JPEG 的標準,大家可就不莫生了,由其是在 GIF 發出禁令後,JPEG 更是被廣泛應用。JPEG 的全名大家一定不莫生,他可是赫赫有名的一群技術團隊的縮寫 - Joint Photographic Experts Group。

JPEG 是 24-bit 的 "true-color" 影像標準,JPEG 的工作是將 RGB 格式的影像轉換成 YCrCB 格式,目的是為了減少檔案大小,一般約可減少 1/3 ~ 1/2 左右。

不過 MJPEG 才是我們的主角,MJPEG 全名為 "Motion" JPEG,也就是會動的 JPEG 圖檔。許多 Video Streaming 的場合,像是簡單的視訊會議軟體都會使用 MJPEG 來取代 MPEG,原因無它,因為 MJPEG 格式簡單,但缺點是不支援聲音。

MPEG-1 標準

MPEG 的標準由 ISO (International Standards Organization) 所制定,全名為 Moving Pictures Experts Group (MPEG 為 ISO 工作),這些團隊制定了包括 MPEG-1、MPEG-2、MPEG-4 等標準。

MPEG-1 的標準比 H.263 早出現,MPEG-1 制定於 1992 年,主要用途為:視訊會議、影像電話、電腦遊戲與支援第一代的 CD-ROM。MPEG-1 被設計來支援大部份的影像與 CD-ROM 的音效,傳輸速度為 1.5 Mbps (30 fps)。

除此之外,MPEG-1 也支援 playback,例如快轉、倒帶或是跳躍,這也是 MPEG-1 好用的地方。稍後我們會簡單介紹一下 MPEG-1 的原因,以明白 MPEG-1 如何做到這些功能。

MPEG-2 標準

MPEG-2 的標準出現於 1994 年,MPEG-2 相容於 MPEG-1。MPEG-2 的出現並不是為了要取代 MPEG-1 的舊標準,而是要加強 MPEG-1 不足的地方。因此 MPEG-2 更能昇任其它工作環境,例如 HDTV、視訊廣播。

同時,MPEG-2 的解析度也支援到 HDTV 1280x720。在音效方面,MPEG-2 也支援到 6 個頻道 (MPEG-1 只支援 2 個頻道)。MPEG-2 的傳輸速度也提昇至 2Mbps ~ 10 Mbps,因此需要 4x 的 CD-ROM,但也因此 4x CD-ROM 只能儲存 18 分種的影像,所以我們利用 DVD-ROM 來儲存 MPEG-2 格式的影像,而且 DVD-ROM 也支援 Dolby 音效。

MPEG-4 標準

MPEG-4 的標準在 1993 年被提出,主要的應用用途比較廣,包括:視訊會議、影音郵件、無線裝置等等,支援的傳輸速度為 8Kbps ~ 35Mbps。

MPEG-4 可以傳送影像的物件,而不是只有影像的 "frame",例如一連串的動作指令。因此,MPEG-1 與 MPEG-2 皆是 "frame-based" 的標準,而 MPEG-4 則是 "object-based" 的標準,未來在網路與多媒體的應會也會更普遍。

MPEG-4 目前在 Linux 上已經有 OpenMPEG 的專案計畫,發起本計畫的目地在希望可以在 Linux 上發展完整的 MPEG-4 支援環境。

Video Streaming 的網路技術

要建置一個完整的 Video Streaming 環境,在整體來看,要準備的硬體包括:伺服器、CCD、影像補捉卡等等,而在底層的技術面方面,除了前面提到的影像編碼技術外,也要配合通訊協定才能實作出 Video Streaming 的應用程式。

Video Streaming 的方式

Video 在做 Streaming 時,有三種方式可以應用:broadcasting、unicasting、multicasting。

broadcasting 的方式比較單純,他是在 LAN 上直接將一個個的影像封包丟到網路上 (server 端),再由 client 的應用程式自網路上取回封包播放。但網路硬體層上,仍有許多需要考慮的問題,例如在 Shared Non-Switched Enthernet 上時,就會發生一些小問題。

unicasting 與 multicasting 都是屬於 IP 的傳輸方式。unicasting 採取 1 對 1 的方向傳影像給遠端,稱為 Video-on-Demand (VoD),multicasting 則是 1 對多的傳輸方式,稱為 Near-Video-on-Demand (NVoD)。未來 IPv6 將支援 IP Multicasting,因此 Video Streaming 的應用將更為廣泛。

IPv6

IPv6 全名為 IP version 6,未來將取代目前所使用的 IPv4。IPv6 新增許多對多媒體傳輸的支援,例如 multicasting、authentication/encryption等。不過目前尚仍未全面升級,所以應用仍受限。

UDP 通訊協定

UDP 全名是 Universal Datagram Protocol,UDP 通訊協定是 Video Streaming 的基石。UDP 與 TCP 不同的是,UDP 並沒有錯誤檢查,不過這在 Video Streaming 的應用是影嚮不太的。

RTP 通訊協定

RTP 全名為 Real-Time Protocol,RTP 是在 UDP 封包之前多加 10 bytes 的檔頭,裡面記載有時間、序號、壓縮型態等資訊。RTP 是目前大多數 Video Streaming 軟體所使用的通訊協定。

RTP 可用來針對各種不同的多媒體格式做 Streaming 的工作,因為我們將影像分解成數個 RTP 封包再傳送出去,因此會遇到許多網路技術常會遇到的問題。例如,因為封包送達的時間不一,造成播放時會畫面不流暢的現像,因此,在播發時就必須使用一個緩 衝區 (playout buffer) 來暫時存放並處理網路上接受到的封包。

由網路上接收的影像封包因為彼此之間到達的時間間隔不同 (Synchronous Data Packets),所以必須利用緩衝區將這些封包做緩衝,讓彼此之間的時間間隔一樣 (Isochronous Data Packets)。

MPEG-1 的原理

MPEG-1 的編碼原理大家都應該要認識一下。MPEG-1 將影像分成一個 Group,即 GOP (Group of Pictures),每個 GOP 有一個 Entry Point,稱為 I-frame,每個 I-frame 的大小為 15KB,另外還有 P-frame 與 B-frame。

I-frame 稱為 Independent-frame,為每個 GOP 的起點,緊接著的是二個 B-frame,B-frame 稱為 Bi-directional frame,每個 B-frame 大小為 3KB,每二個 B-frame 之間再插入一個 P-frame,即 Predictive-frame,每個 B-frame 的大小為 8KB。

GOP 共有三種不同的 frame,每種 frame 存放的影像與性質皆不同,這在以後我們實做程式時會再做更清楚的介紹。例如,我們要將影片快轉時,可以忽略掉所有的 B-frame 與 P-frame,只撥放 I-frame,如此一來便可以節省許多貴寶的網路頻寬與時間,但前提是,I-frame 必須存放主要的影像資料,事實上也是如此。

Video Streaming 來的正是時候

看到 "Video" Streaming 就知道這個技術與影音有關。Video Streaming 是一種經由網路來撥放影音檔案的技術,Video "Streaming" 的基本概念為「一邊下載一邊撥放」,我們稱之為「Play as received」。

經由 Internet 如果要收看遠端伺服器的電視檔案,最原始的做為是「下載後再撥放」,也就是經由 FTP 或 HTTP 將整個檔案下載至本地端後再利用撥放程式來撥放,我們稱之為「Play after download」。

以最常見的例子來講,我們可以經由網路將 MP3 完整下載後再撥放,也就是 Play after download,或者我們也可以一邊下載 MP3 一邊聽音樂,這種方式則稱為 Play as received。其他的應用範例還很多,例如利用 RealPlayer「即時觀看影片或是聽音樂」,這種即時撥放的方式即是 Play as received,我們稱這樣的技術為 Video Streaming Technology。

為什麼說 Video Streaming 的技術來的正是時候呢?舉個最簡單的情況,你可能在下載 MP3 之前想要試聽一下音樂的內容,而下載音樂片段的方式又顯得不夠友善,這時如果利用 Video Streaming 的技術來讓網友視聽,不但方便,而且不必浪費時間來下載不喜歡的音樂的。

隨著網路頻寬的改進與 IPv6 的出現,Video Streaming 的應用將越來越廣泛,利用 Video Streaming 來設計的資訊家電也會越來越多,例如較常被提及的網路電話 (InterPhone)。

除了寬頻網路的普及外,儲存設備的大進步也是加速 Video Streaming 進用普及的最大動力,例如利用 Linux 設計的 NAS 可以被用來當做大型的影音伺服器或是動態電影資料庫 (DMD)。

VCD & MPEG-1

要提到撥放動態影音的先軀,絕對要先從 VCD 說起,因為這是在電腦出現後,最能深入消費者市場的產品。

想當年,要撥放 VCD 除了要有一台當時算是高擋貨的 1x CD-ROM 外,還要再另外加裝也是高擋貨的 MPEG 卡。撥放 VCD 其實就是 Video Streaming 的技術,因為 VCD 的資料是一邊讀取一邊撥放,那為什麼要有 MPEG Card 呢?理所當然的,這是因為MPEG-1 的標準。

MPEG-1 被設計在 1x CD-ROM 上撥放 VCD,而 VCD 上的資料必須經由 MPEG Card 解碼 (decode) 後才能撥放。但是隨著硬體的進步,現在可以經由軟體來做 MPEG-1 解碼的工作。我們將在後文介紹 MPEG-1 的設計概念。

DVD & MPEG-2

MPEG-2 常被提到則是由於 DVD 的流行。不管是 MPEG-1 或是 MPEG-2,其實是一種編碼的技術,而 DVD-ROM 則是選擇了 MPEG-2 來當做它的壓縮標準。

而 DVD 之所以無法像 VCD 一樣能被「備份到硬碟」,則是由於其中又加進了三道的保護,第二道保護就是玩家們耳熟能詳的 CSS。在 Linux 下之所以無法有「合法」的 DVD Player,就是受制於 CSS 的關係。

利用 NAS 來設計 Video Server,要儲存並廣撥 VCD 已經沒有技術上的障礙,但是要儲存並擴撥 DVD,則有法律上的問題,這點是值得我們深思的一個問題。因為目前 CSS 的技術掌握在日本人手裏,要取得這項技術必須簽署 NDA,不過 CSS 並非不可破解想必大家都知道,但是就是有版權上的問題。

影像編碼技術介紹

目前學術界已經發展出許多處理影像訊號壓縮及編碼的技術 (codecs),談到這些技術,應用最廣泛的編碼標準底下四種:

  1. ) H.261
  2. ) H.263
  3. ) JPEG, MJPEG
  4. ) MPEG

底下將分別簡單介紹這四種編碼技術。

H.261 標準

H.261 的影像編碼標準出現在 1990 年的 ITU。一開始的用途主要是支援影像電話 (video phone) 與視訊會議 (video conferencing)。H.261 的格式有二種,分別有不同的解析度:

  1. ) QCIF:176x144
  2. ) CIF:352x288

H.261 的 fps (frames per second) 可以達到 7.5, 10, 15 與 30 fps。由於 H.261 一開始是架構在 ISDN B 上面,而 ISDN B 的傳輸速度為 64 Kbps,所以 H.261 也被稱為 Px64 (x = 1 to 30)。

CIF 全名為 (Common Intermediate Format),主要是為了要支援各種不同解析度的電影而被定義出來,例如 NTSC, PAL, SECAM 電視系統。而 QCIF 則是 Quarter-CIF 也就是 CIF 解析度的一半。

除此之外,H.261 也可以說是 MPEG-1 標準的前輩。

H.263 標準

H.263 是 H.261 的加強版,誕生於 1994 年 (ITU)。H.263 開始支援 PSTN,不過要特別說明一點,H.263 比 MPEG-1 還要晚出現,而且 H.263 還是基於 MPEG-1 而發展。

H.263 的標準共支援五種不同的解析度,分別為:

  1. ) Sub-QCIF:128x96
  2. ) QCIF:176x144
  3. ) CIF:352x288
  4. ) 4CIF:704x576
  5. ) 16CIF:1408x1152

傳輸速度為 8 Kbps ~ 1.5 Mbps。除此之外,H.263 也是 MPEG-4 標準的基礎。

JPEG

提到 JPEG 的標準,大家可就不莫生了,由其是在 GIF 發出禁令後,JPEG 更是被廣泛應用。JPEG 的全名大家一定不莫生,他可是赫赫有名的一群技術團隊的縮寫 - Joint Photographic Experts Group。

JPEG 是 24-bit 的 "true-color" 影像標準,JPEG 的工作是將 RGB 格式的影像轉換成 YCrCB 格式,目的是為了減少檔案大小,一般約可減少 1/3 ~ 1/2 左右。

不過 MJPEG 才是我們的主角,MJPEG 全名為 "Motion" JPEG,也就是會動的 JPEG 圖檔。許多 Video Streaming 的場合,像是簡單的視訊會議軟體都會使用 MJPEG 來取代 MPEG,原因無它,因為 MJPEG 格式簡單,但缺點是不支援聲音。

MPEG-1 標準

MPEG 的標準由 ISO (International Standards Organization) 所制定,全名為 Moving Pictures Experts Group (MPEG 為 ISO 工作),這些團隊制定了包括 MPEG-1、MPEG-2、MPEG-4 等標準。

MPEG-1 的標準比 H.263 早出現,MPEG-1 制定於 1992 年,主要用途為:視訊會議、影像電話、電腦遊戲與支援第一代的 CD-ROM。MPEG-1 被設計來支援大部份的影像與 CD-ROM 的音效,傳輸速度為 1.5 Mbps (30 fps)。

除此之外,MPEG-1 也支援 playback,例如快轉、倒帶或是跳躍,這也是 MPEG-1 好用的地方。稍後我們會簡單介紹一下 MPEG-1 的原因,以明白 MPEG-1 如何做到這些功能。

MPEG-2 標準

MPEG-2 的標準出現於 1994 年,MPEG-2 相容於 MPEG-1。MPEG-2 的出現並不是為了要取代 MPEG-1 的舊標準,而是要加強 MPEG-1 不足的地方。因此 MPEG-2 更能昇任其它工作環境,例如 HDTV、視訊廣播。

同時,MPEG-2 的解析度也支援到 HDTV 1280x720。在音效方面,MPEG-2 也支援到 6 個頻道 (MPEG-1 只支援 2 個頻道)。MPEG-2 的傳輸速度也提昇至 2Mbps ~ 10 Mbps,因此需要 4x 的 CD-ROM,但也因此 4x CD-ROM 只能儲存 18 分種的影像,所以我們利用 DVD-ROM 來儲存 MPEG-2 格式的影像,而且 DVD-ROM 也支援 Dolby 音效。

MPEG-4 標準

MPEG-4 的標準在 1993 年被提出,主要的應用用途比較廣,包括:視訊會議、影音郵件、無線裝置等等,支援的傳輸速度為 8Kbps ~ 35Mbps。

MPEG-4 可以傳送影像的物件,而不是只有影像的 "frame",例如一連串的動作指令。因此,MPEG-1 與 MPEG-2 皆是 "frame-based" 的標準,而 MPEG-4 則是 "object-based" 的標準,未來在網路與多媒體的應會也會更普遍。

MPEG-4 目前在 Linux 上已經有 OpenMPEG 的專案計畫,發起本計畫的目地在希望可以在 Linux 上發展完整的 MPEG-4 支援環境。

Video Streaming 的網路技術

要建置一個完整的 Video Streaming 環境,在整體來看,要準備的硬體包括:伺服器、CCD、影像補捉卡等等,而在底層的技術面方面,除了前面提到的影像編碼技術外,也要配合通訊協定才能實作出 Video Streaming 的應用程式。

Video Streaming 的方式

Video 在做 Streaming 時,有三種方式可以應用:broadcasting、unicasting、multicasting。

broadcasting 的方式比較單純,他是在 LAN 上直接將一個個的影像封包丟到網路上 (server 端),再由 client 的應用程式自網路上取回封包播放。但網路硬體層上,仍有許多需要考慮的問題,例如在 Shared Non-Switched Enthernet 上時,就會發生一些小問題。

unicasting 與 multicasting 都是屬於 IP 的傳輸方式。unicasting 採取 1 對 1 的方向傳影像給遠端,稱為 Video-on-Demand (VoD),multicasting 則是 1 對多的傳輸方式,稱為 Near-Video-on-Demand (NVoD)。未來 IPv6 將支援 IP Multicasting,因此 Video Streaming 的應用將更為廣泛。

IPv6

IPv6 全名為 IP version 6,未來將取代目前所使用的 IPv4。IPv6 新增許多對多媒體傳輸的支援,例如 multicasting、authentication/encryption等。不過目前尚仍未全面升級,所以應用仍受限。

UDP 通訊協定

UDP 全名是 Universal Datagram Protocol,UDP 通訊協定是 Video Streaming 的基石。UDP 與 TCP 不同的是,UDP 並沒有錯誤檢查,不過這在 Video Streaming 的應用是影嚮不太的。

RTP 通訊協定

RTP 全名為 Real-Time Protocol,RTP 是在 UDP 封包之前多加 10 bytes 的檔頭,裡面記載有時間、序號、壓縮型態等資訊。RTP 是目前大多數 Video Streaming 軟體所使用的通訊協定。

RTP 可用來針對各種不同的多媒體格式做 Streaming 的工作,因為我們將影像分解成數個 RTP 封包再傳送出去,因此會遇到許多網路技術常會遇到的問題。例如,因為封包送達的時間不一,造成播放時會畫面不流暢的現像,因此,在播發時就必須使用一個緩 衝區 (playout buffer) 來暫時存放並處理網路上接受到的封包。

由網路上接收的影像封包因為彼此之間到達的時間間隔不同 (Synchronous Data Packets),所以必須利用緩衝區將這些封包做緩衝,讓彼此之間的時間間隔一樣 (Isochronous Data Packets)。

MPEG-1 的原理

MPEG-1 的編碼原理大家都應該要認識一下。MPEG-1 將影像分成一個 Group,即 GOP (Group of Pictures),每個 GOP 有一個 Entry Point,稱為 I-frame,每個 I-frame 的大小為 15KB,另外還有 P-frame 與 B-frame。

I-frame 稱為 Independent-frame,為每個 GOP 的起點,緊接著的是二個 B-frame,B-frame 稱為 Bi-directional frame,每個 B-frame 大小為 3KB,每二個 B-frame 之間再插入一個 P-frame,即 Predictive-frame,每個 B-frame 的大小為 8KB。

GOP 共有三種不同的 frame,每種 frame 存放的影像與性質皆不同,這在以後我們實做程式時會再做更清楚的介紹。例如,我們要將影片快轉時,可以忽略掉所有的 B-frame 與 P-frame,只撥放 I-frame,如此一來便可以節省許多貴寶的網路頻寬與時間,但前提是,I-frame 必須存放主要的影像資料,事實上也是如此。

posted by yuchin in Linux and have No Comments

Maximum execution time of 300 seconds exceeded

今天在匯資料表的時候,發現一直會出現這個問題

淺意識的就是要把php.ini中的 max_execution_time = 30  加大

可是不管我怎麼加大或者設定成不限時間,還是都會有同樣的問題

而資料表是用phpmyadmin dump出來的

所以用mysql source的方式又會有亂碼問題

這時就在猜會不會是phpmyadmin本身設定的問題

所以就去看config檔,果然不出我所料,是phpmyadmin設定上有誤

以下是我修改的部份: 

1. php.ini

代碼:
max_execution_time = 30


2. phpMyAdmin/config.inc.php 或者 phpMyAdmin/libraries/config.default.php

代碼:
$cfg['ExecTimeLimit']           = 300;

 

posted by yuchin in Linux and have No Comments

mysql 中文亂碼解決方案

內容來源:LINK     (此篇文章僅供站長備份參考用,固為加密文章) 

*mysql中文亂碼的原因

mysql 會出現中文亂碼的原因不外乎下列幾點:

-mysql server本身設定問題,例如還停留在 latin1

-mysql table 的語系設定問題(包含 character 與 collation)

-客戶端程式(例如 php) 的連線語系設定問題

mysql 4.1 及之後的版本在語系方面增加了許多功能,它可以設定語系的層次從最底層的 server, database 到單一 table, column, connection 都可以設定,而除了語系之外,還可以指定搭配不同的 collation(校對),所以組合百百種,只要一個錯了就難逃亂碼的命運。

進phpmyadmin找到可輸入 sql query的畫面,然後鍵入:
show variables like '%character%';
這句話會顯示目前資料庫使用的語系設定,一般國外的網站或剛裝好的 mysql 4.1預設都是 latin-1。

[新增資料庫]
如果你熟悉 phpmyadmin 的操作,在畫面上就可以選擇建立新 database 要用的語系,
charset 請選擇 UTF-8 Unicode (utf8)
collation 請選擇 utf8_general_ci (ci 代表 case insensitve 大小寫沒差)

[修改資料庫]
改 database語系,同樣在 phpmyadmin 的query畫面鍵入下面兩行:
alter database myblog
character set utf8;

前面曾經提過,mysql的語系設定是多層次的,前面我們把database與table的語系都設定正確,但程式與mysql連線時的語系則是由 connection 來決定,這部份就要使用程式碼
mysql_query("SET NAMES 'utf8'");
這句話會同時設定 client, results, connection三者使用的語系為 utf-8。

最後檢查是否全部改成 utf-8
show variables like '%character%';

此時你應該會看到大部份欄位都是utf-8了,除了 server 這項之外,如果是用別人的 hosting 主機,就沒法兒改這部份,但平常做案子時大部份都可以直接控管mysql,此時就可以用 my.ini 設定:

[mysqld]
default-character-set=utf8
告訴mysql server啟動時要用 utf-8即可。

*mysql中文亂碼必勝解決法
1、mysql 啟動時會讀取一個預設的 config 檔,一般名稱為 my.ini,而它會到下列兩位置去尋找這個檔案:
C:windowsmy.ini 也就是作業系統的安裝目錄,也有可能是 C:winntmy.ini
C::my.cnf 也就是 C disk 的根目錄

2、my.ini 裏的內容為:
[mysqld]
default-character-set=utf8

[client]
default-character-set=utf8
init_c

其 中 mysqld 是指定 server 啟動時要用的語系,但如果這裏設定為 utf8 可能會讓許多英文軟體不開心,例如 osCommerce/mediaWiki/wordpress/drupal/gregarius,所以這裏建議設成 latin1。要使用utf8中文的人,只要記得建資料庫時將它設成utf8,讓中文程式正確的使用 utf8 與它溝通即可。

下 面的 client 則是設定當 client 連線時要使用什麼語系,但可惜的是這個設定不是每個 client 都會鳥它,基本上只有 mysql 自已家的程式,例如 mysql.exe, mysqld.exe, mysqladmin.exe 或是 MySQL Control Center 這種程式會去讀取這個設定檔然後改用 utf8 連線。

所以通常會用一個獨立的檔案來處理 mysql connection的設定,例如:

PHP:

<?
//database connection details.
$host = "localhost";
$link = mysql_connect($host, "xxx", "xxx");
mysql_query("SET NAMES 'utf8'");
mysql_select_db("your_table_name_here", $link);
?>

請注意在 mysql_connect後第五行的地方有加上一個 "set names 'utf8' "的指令,告訴mysql 這個 connection 之後的連線內容都要使用utf8,經過這樣設定後,通常就可以解決大部份問題。

從這裏也可以推想得知,如果你有用某種 custom connection pooling 機制,就要記得在每次建立新的 connection 後立即設定為 utf8。

posted by yuchin in Linux and have No Comments

最簡便的備份MySql資料庫方法

為了同步兩個系統的程式與資料庫,因此用phpmyadmin把資料庫匯出成SQL檔

然後在備援Server匯入!!搞了好久的資料庫!!怎麼用都會有亂碼

從所有的環境變數開刀,對照了系統語系、MySQL語系、資料庫資料表、與phpmyadmin設定

都改成相同了可是就是有問題,後來找出原因是因為我太依賴phpmyadmin的匯出功能了

所以導致匯入到另外一個資料時是錯誤的編碼格式

以下是用mysqldump所匯出來的資料庫備份時所可以用的選項

其實說穿了只是用--help可以看到的所有選項參數

不過以下這篇的選樣說明是中文的,給有需要的人參考看看吧!!

使用MYSQL進行資料庫備份,有很正規的資料庫備份方法,同其他的資料庫伺服器有相同的概念,但有沒有想過,MySQL會有更簡捷的使用檔目錄的備份方法,而且又快有好。  
 
一、資料備份捷徑  
 
因為這個方法沒有得到官方正式文檔的驗證,我們暫稱為試驗吧。  
 
目的:備份hostA主機中一個mysql資料庫TestA,並恢復到到hostB機中  
 
試驗環境:  
 
作業系統:WinNT4.0,Mysql3.22.34,phpMyAdmin 2.1.0  
 
在hostA中安裝mysql資料庫並建立TestA資料庫  
 
hostB機安裝mysql資料庫,沒有TestA資料庫  
 
方法步驟:  
 
啟動phpMyAdmin察看HostA和HostB中的資料庫列表,在HostB中沒有TestA資料庫  
 
找到HostA中mysql的安裝目錄,並找到資料庫目錄data  
 
在我的試驗環境中,這個目錄是  
 
C:mysqldata  
 
找到對應資料庫名稱的子目錄  
 
C:mysqldataTestA  
 
粘貼拷貝到HostB的Data目錄下,是HostA同HostB Mysql資料目錄下的檔相同  
 
刷新HostB的phpMyAdmin察看一下資料庫列表,我們看到TestA已經出現,並且作查詢修改等操作都正常,備份恢復恢復成功  
 
試驗結論:Mysql的資料庫可以通過檔形式保存,備份,恢復只要將相應檔目錄恢復即可,無需使用其他工具備份。  
 
二、正規的方法(官方建議):  
 
導出要用到MySQL的mysqldump工具,基本用法是:  
 
          
代碼:
mysqldump [OPTIONS] database [tables]  


 
如果你不給定任何表,整個資料庫將被導出。  
 
通過執行mysqldump --help,你能得到你mysqldump的版本支援的選項表。  
 
注意,如果你運行mysqldump沒有--quick或--opt選項,mysqldump將在導出結果前裝載整個結果集到記憶體中,如果你正在導出一個大的資料庫,這將可能是一個問題。  
 
mysqldump支援下列選項:  
 
--add-locks  
 
在每個表導出之前增加LOCK TABLES並且之後UNLOCK TABLE。(為了使得更快地插入到MySQL)。  
 
--add-drop-table  
 
在每個create語句之前增加一個drop table。  
 
--allow-keywords  
 
允許創建是關鍵字的列名字。這由在列名前面加表名的方法做到。  
 
-c, --complete-insert  
 
使用完整的insert語句(用列名字)。  
 
-C, --compress  
 
如果客戶和伺服器均支援壓縮,壓縮兩者間所有的資訊。  
 
--delayed  
 
用INSERT DELAYED命令插入行。  
 
-e, --extended-insert  
 
使用全新多行INSERT語法。(給出更緊縮並且更快的插入語句)  
 
-#, --debug[=option_string]  
 
跟蹤程式的使用(為了調試)。  
 
--help  
 
顯示一條幫助消息並且退出。  
 
--fields-terminated-by=...  
 
--fields-enclosed-by=...  
 
--fields-optionally-enclosed-by=...  
 
--fields-escaped-by=...  
 
--fields-terminated-by=...  
 
這些選擇與-T選擇一起使用,並且有相應的LOAD DATA INFILE子句相同的含義。  
 
LOAD DATA INFILE語法。  
 
-F, --flush-logs  
 
在開始導出前,洗掉在MySQL伺服器中的日誌檔。  
 
-f, --force,  
 
即使我們在一個表導出期間得到一個SQL錯誤,繼續。  
 
-h, --host=..  
 
從命名的主機上的MySQL伺服器導出資料。缺省主機是localhost。  
 
-l, --lock-tables.  
 
為開始導出鎖定所有表。  
 
-t, --no-create-info  
 
不寫入表創建資訊(CREATE TABLE語句)  
 
-d, --no-data  
 
不寫入表的任何行資訊。如果你只想得到一個表的結構的導出,這是很有用的!  
 
--opt  
 
同--quick --add-drop-table --add-locks --extended-insert --lock-tables。  
 
應該給你為讀入一個MySQL伺服器的盡可能最快的導出。  
 
-pyour_pass, --password[=your_pass]  
 
與伺服器連接時使用的口令。如果你不指定“=your_pass”部分,mysqldump需要來自終端的口令。  
 
-P port_num, --port=port_num  
 
與一台主機連接時使用的TCP/IP埠號。(這用於連接到localhost以外的主機,因為它使用 Unix套接字。)  
 
-q, --quick  
 
不緩衝查詢,直接導出至stdout;使用mysql_use_result()做它。  
 
-S /path/to/socket, --socket=/path/to/socket  
 
與localhost連接時(它是缺省主機)使用的套接字檔。  
 
-T, --tab=path-to-some-directory  
 
對於每個給定的表,創建一個table_name.sql檔,它包含SQL CREATE 命令,和一個table_name.txt檔,它包含資料。 注意:這只有在mysqldump運行在mysqld守護進程運行的同一台機器上的時候才工作。.txt檔的格式根據--fields-xxx和-- lines--xxx選項來定。
 
-u user_name, --user=user_name  
 
與伺服器連接時,MySQL使用的用戶名。缺省值是你的Unix登錄名。  
 
-O var=option, --set-variable var=option  
 
設置一個變數的值。可能的變數被列在下面。  
 
-v, --verbose  
 
冗長模式。列印出程式所做的更多的資訊。  
 
-V, --version  
 
列印版本資訊並且退出。  
 
-w, --where='where-condition'  
 
只導出被選擇了的記錄;注意引號是強制的!  
 
"--where=user='jimf'" "-wuserid>1" "-wuserid<1"  
 
最常見的mysqldump使用可能製作整個資料庫的一個備份:  
 
          

代碼:
mysqldump --opt database > backup-file.sql  


 
但是它對用來自於一個資料庫的資訊充實另外一個MySQL資料庫也是有用的:  
 
          

代碼:
mysqldump --opt database | mysql --host=remote-host -C database  


 
由於mysqldump導出的是完整的SQL語句,所以用mysql客戶程式很容易就能把資料導入了:  
 
          

代碼:
mysqladmin create target_db_name  
 
mysql target_db_name < backup-file.sql  


 
http://tech.ccidnet.com/art/1105/20050804/303341_1.html
http://ria.richtechmedia.com/category/phpmysql/

 

 

 

posted by yuchin in Linux and have No Comments

SQL Server資料匯入MySQL

相信這個問題拜託google大師後會有很多種解法

可是符合需求又簡單的卻沒幾種

而且可分自行寫程式的或是利用軟體轉換 

但偏偏寫程式的方式我怎麼使用都沒辦法正常連線到SQL Server

後來找到了一個方法,不用寫程式就能轉換,而且可以自訂排程 

首先要先下載 MySQL Connector/ODBC

在SQL Server端安裝,這裡的設定以Windows Server 2003為主

安裝完後就開始設定如何連結MySQL,開始→程式及→系統管理工具→資料來源 (ODBC)

切換到系統資料來源名稱,按新增

 

找到MySQL ODBC 3.51 Driver後點選並按完成

 

根據下面圖的指示填入,並選擇所要匯入的資料庫後按OK,若有出現錯誤點選Diagnostics看錯誤訊息

 

再來開始就是要匯資料了,開始→程式集→Microsoft SQL Server→Enterprise Manager,找到你要匯出的資料庫與資料表

在要匯出的資料表按右鍵選 所有工作→匯出資料

 

點選下一步,資料來源選擇Microsoft OLE DB Provider for SQL Server

伺服器選local,並使用Windows的帳戶驗證,資料庫選擇想匯出的資料庫

 

點選下一步,目的地選擇MySQL ODBC 3.51 Driver,使用者/系統 DSN下拉會有當初設定的名稱

 

點選下一步,複製來源資料庫的資料表與檢視表

 

點選下一步,選擇SQL Server中哪些資料表要轉到MySQL並按下一步執行,就可以成功匯進去了

後記

由於匯出來的資料中文是BIG5編碼,因此若MySQL資料表規劃是以UTF-8為編碼格式

可以寫一程式讓他全部轉換成UTF-8,可利用iconv函數去轉換中文的部份 

posted by yuchin in Linux and have Comments (7)

Linux下也能讀取硬碟ntfs partition

其實這已經不是什麼新的東西了,在兩年前我就一直在使用

不過兩年前我的部落格還沒成立,所以一直沒有記錄下來

這幾天因為寫程式的需求,把逐漸快被我遺忘的linux找回來

為了娛樂方便,我幾乎也都運行在WIN下,除非工作或學業上需求才會開啟linux

而今天寫這篇主要就是為了更改kerne以方便讀取ntfs的檔案

下載與安裝

下載網址www.linux-ntfs.org,如果是使用RedHat系列的,可直接在此下載RPM

下載前先使用uname -r 指令觀看現行的linux版本 ,找符合您現在的版本

找到之後再來就是選擇CPU了,在CPU等級大多數不是Pentium III就是Pentium 4以上,所以下載i686的

NTFS掛載

mount -t ntfs /dev/hda5 /mnt/windisk/

我是把硬碟的partition掛載在mnt底下的windisk目錄

若不知道你要掛載的ntfs  partition代號是說少可用fdisk -l查詢

 

再來切換到windisk的目錄底下就可以看到winxp的檔案了

 

posted by yuchin in Linux and have Comments (8)