顯示具有 php 標籤的文章。 顯示所有文章
顯示具有 php 標籤的文章。 顯示所有文章

2020-09-16

Codeigniter 3 資料庫的連線方式

CI 3 的資料庫設定方式,一般直覺的情況下會是直接在 /application/config/database.php 來進行設定,以下特別針對一些情況來進行記錄:

.mysqli 連線

$db['default'] = array(
  'dsn' => '',
  'hostname' => 'dbhost-domain_or_ip',
  'username' => 'dbuser',
  'password' => 'dbpass',
  'database' => 'dbname',
  'dbdriver' => 'mysqli',
  'dbprefix' => '',
  'pconnect' => FALSE,
  'db_debug' => (ENVIRONMENT !== 'production'),
  'cache_on' => FALSE,
  'cachedir' => '',
  'char_set' => 'utf8',
  'dbcollat' => 'utf8_general_ci',
  'swap_pre' => '',
  'encrypt' => FALSE,
  'compress' => FALSE,
  'stricton' => FALSE,
  'failover' => array(),
  'save_queries' => TRUE
);

.pdo(dsn connection)

$db['default'] = array(
  'dsn' => 'mysql:dbhost-domain_or_ip;dbname=dbname',
  'hostname' => '',
  'username' => 'dbuser',
  'password' => 'dbpass',
  'database' => '',
  'dbdriver' => 'pdo',
  'dbprefix' => '',
  'pconnect' => FALSE,
  'db_debug' => (ENVIRONMENT !== 'production'),
  'cache_on' => FALSE,
  'cachedir' => '',
  'char_set' => 'utf8',
  'dbcollat' => 'utf8_general_ci',
  'swap_pre' => '',
  'encrypt' => FALSE,
  'compress' => FALSE,
  'stricton' => FALSE,
  'failover' => array(),
  'save_queries' => TRUE); 

.另外定義(就是不在database.php中定義的,直接在model中另外寫的)

 $pdo = $this->load->database('pdo://dbuser:dbpass@dbhost-domain_or_ip/?dsn=mysql:host=dbhost-domain_or_ip;dbname=dbname&char_set=utf8&dbcollat=utf8_general_ci', true)
$search = $pdo->conn_id->prepare('sql query');
$search->execute();
$result = $search->fetchAll();

特此記錄一下… 

2019-07-20

如何在 Windows 讓 Apache 在一個 host 中,指定某個資料夾下的 php 是跑不同的版本

標題下的好像很怪…簡略說明一下

其實就是 Windows 下 Apache 跑 php-fpm (Fastcgi) - 使用 VirtualHost 這篇的另一個形式…我的目的還是要在一個 apache service 中跑不同版本的 php ;只是之前是使用 VirtualHost 來操作,但我現在是希望在一個 host …或者也可以理解為一個 VirualHost 下,不同的 Directory 可以跑不同的 php 版本,這樣我就不用換 VirualHost 的 domain:port ,只要切換 localhost/______/ 就好了。

前置作業說明:

  1. 跟之前一樣使用 xampp ,apache 2.4.39 x64 + php 7.3.7 x64,這是主要的,然後指定一個 localhost/php52 這個位置可以跑 php 5.2.17 x86
  2. 作不作 vhost 都無所謂,因為這一篇要的就是一個 host 就做到可以跑不同的 php 版本
  3. 如前一篇說的,因為此種方式已經算改了 xampp 的部份算大改了,所以會建議就不要讓 apache load httpd-xampp.conf 了,或者將 httpd-xampp.conf 中的每一行都用 # 註解起來

2019-07-18

Windows 下 Apache 跑 php-fpm (Fastcgi) - 使用 VirtualHost

因為工作需求…有些案子會需要用頗舊的 php 版本來跑,但我又不想在系統資源有限的測試機 (本機 windows 10 電腦,還不是server) 安裝一堆配合 php 的 apache 版本,然後又在那邊糾結 x86/x64 的,所以想到在 linux 上在用 nginx 時好像都是用 php-fpm 在跑 php ,而不是跟 apache 那樣在 loadmodule (難怪 nginx 比較輕量級),而且 loadmodule 會使用固定的 module name ,像 php7 是 php7_module, php5 是 php5_module …不同版本之間是還行,但同一個大版本之後想分載各個小版本會因為都是用同一個 module name 的關係會有衝突而載入失敗,所以最後在想比較簡單的方式…那就是讓 apache 也走類似 php-fpm 的 fastcgi 方式。
(為什麼說類似,因為好像 php-fpm 沒有 windows 版,而且好像 windows 的 php 中的 php-cgi.exe 就是為了讓 windows 有 php-fpm 而用的)

所以接下來有幾個重點,主要是要讓 apache 2.4.39 x64 在使用 VirtualHost 的情況下,讓走 80 port 跑 php 7.3.7 x64 ,而 8080 port 跑 php 5.2.17 x86

前置作業說明:

  1. apache 2.4.39 x64 + php 7.3.7 x64 我是用 xampp ,然後再去 php 網站找到 5.2.17 x86 回來放進 xampp 資料夾中
  2. 我不特別講 apache vhost 的設定,反正這個 google 一下資料就很多,所以下面的「操作」我是以 vhost 已經分別可以讓 80, 8080 的網頁服務執行成功的情況下來講的
  3. 因為我是分 80, 8080 來跑 vhost ,所以記得 httpd.conf 的 listen 要加 80, 8080

2019-07-04

有關 php 中 array_search() 會跳過陣列第一個元素 array[0] 的狀況

先說…這不是一個「問題 problem」,也不是一個「蟲 bug」,只是一個狀況。

再說…工作至今 (7/3) 滿一個月了…

ok

先舉個例子:

$a = array("a", "b", "c");
if(array_search("a", $a)) echo 'a 有存在 $a 中';
if(array_search("d", $a)) echo 'd 有存在 $a 中';
if(array_search("c", $a)) echo 'c 有存在 $a 中';

以印象,應該會在結果顯示「a 有存在 $a 中」跟「c 有存在 $c 中」才對吧?

2018-10-16

emoji 文字存進 mysql (mariadb) 中變問號(????)!!!!

現在手邊的這個案子真的讓我碰到不少以前顯少會想到或遇到的小麻煩,麻煩不大,但很碎。

不過會這樣碎,大概也跟我自己亂弄有關吧…

----
回正題

這次遇到的狀況是

「我用 ckeditor 在建立訊息,訊息中用了 emoji speech-ballon (💬) 符號,然後透過 php 將訊息存入 mysql 中,存好後撈出資料放在網頁上,遇到該 emoji 符號變 ???? ,四個問號;檢查資料庫中該符號的狀態,也確實是 ???? 四個問號,但並不是每一個 emoji 符號都是四個問號,也有正常顯示的。」

分析:

  1. 使用 ckeditor
  2. emoji
  3. mysql
debug:
  1. ckeditor 我用的只是單純屬前端的版本,網頁 html, php, mysql 我都有確認都有用 utf8 charset ,而且 emoji 符號在 ckeditor 的編輯區中是正常顯示的,所以 ckeditor 應該是沒問題的。
  2. emoji 本身只要你用的瀏覽器不要太舊,基本都內建,而因為 emoji 是 unicode ,所以網頁最好是用 utf8 ,而這點我確認是 ok 的,而且並不是每個 emoji 都異常。
  3. mysql 我內部設定是使用 utf8mb4 ,db, table 的編碼和 table 有中文的欄位編碼我都是設定 utf8mb4 ,但我 php pdo connection 是設定「charset=utf8」,我在「」看到了版主說明了 utf8 不一定都是 3 bytes ,也有 4 bytes 的,而 mysql 的 utf8mb4 就是支援到了 4 bytes ,然後我在「」查到 💬 是 4bytes ;所以,問題找到了,是我做 php pdo connection 使用 charset=utf8 的關係,雖然大部份的資料寫入資料庫跟從資料庫讀出都沒啥狀況,但遇到 utf8 4bytes 就會有異常, php 處理過程沒有報錯,但資料確實是 utf8 4bytes 塞不進 utf8 3bytes 的 connection 中…所以將 php pdo connection charset 改為 utf8mb4 後,一切都正常了。
總結:
是我懶,用 utf8mb4 是想用新的編碼也是想說可以避過一些文字上的問題,結果,最後的原因還是自己忘了把一切的 connection 改 utf8mb4 ,害自己找資料翻過頭。

2018-10-14

有關 PHP 檔案中的起啟標記 的使用

一開始在學 php 程式時,通常找到的教學資料都會說要在 *.php 中要寫 php 語言時,要用一個特有的標記 (tag) 將所寫的程式包起來,這樣將 php 檔案傳給 php engine 運行時才會做出程式碼所對應的行為…這個 tag 如下
<?php
?>
註:<?php 的 php 會因為 php.ini 是否有啟用 enable-short-tags 而增減,有啟用的話就只要輸入 <? 就好了

 這個 tag 跟在寫 jsp 或 classicASP 時會用 <% ... %> 在 *.jsp 或 *.asp 中的意義一樣,就是指在這個 tag 範圍內的是「程式語言」,而不是 html code。

不過我最近在網路上看到一些案子跟最近我自己正在改用 Visual Studio Code (簡稱 vscode) 來寫程式而裝了一個叫「php cs fixer」的套件時,發現一個狀況…感覺蠻特別的。

我在使用「php cs fixer」來美化排版 php 檔時,我會看到某一些 php 檔中結尾的標記符號「?>」消失了…我一開始以為是這個排版套件的異常,但因為不是所有的 php 檔都這樣,而是沒有和 html 語言混用的 php 檔才會這樣,所以我就上 google 翻資料。

後來在「PHP Manual」中找到「PHP tags」中有說明
If a file is pure PHP code, it is preferable to omit the PHP closing tag at the end of the file. This prevents accidental whitespace or new lines being added after the PHP closing tag, which may cause unwanted effects because PHP will start output buffering when there is no intention from the programmer to send any output at that point in the script.
大至上的說明是「如果檔案內容是純 php 程式碼的,最好是不要在檔案的最後使用結尾標記。其是為了避免不小心在結尾標記之後多輸入了空白符號或空行,以導致輸出了這一些無意義的東西。」

說是無意義,確實有時像網頁在編排或什麼的有時真的會有這類狀況…不過我本來以為會是安全的角度,看來是我想太多。

2015-09-29

mysql 匯入資料時使用 LOAD DATA

MySQL 官方解說

我們很常用 csv 這種文字檔來匯入至資料表中,如果是透過 phpmyadmin 這種工具,其實過程是簡單的…但如果我們要在 php 中來使用 csv 匯入的方式咧?

MySQL 在 5.1 時有加入了匯入實體檔案的方式來匯入資料,就是 Load Data Local Infile ,對於直接匯入來說,會比載入 csv 檔,一行一行的丟去執行 SQL command 來的方便…但也是有一些參數要注意

我以簡單的來呈現一下(細的就自己看官方手冊)
1 LOAD DATA LOCAL INFILE  '檔案'
2 INTO TABLE  `表`
3 FIELDS TERMINATED BY  ',' [OPTIONALLY] ENCLOSED BY  '"' ESCAPED BY  '"'
4 LINES TERMINATED BY  '\r\n'
5 IGNORE 1 LINES
 一行一行來解釋
1) 是"載入本機檔案"
2) 要被匯入的"表"
3) 欄位格式設定
    分隔符號:csv 大部份都是半型逗號,但有的會用 \t
    每一欄的包裝符號:OPTIONALLY 沒加上的話,每一欄都會使用半形雙引號包起來;但如果加上了 OPTIONALLY ,那只會是文字表現的欄位才會用包裝符號包起來,其他就不會包。
    跳脫字元:指的就是如果欄位資料中的原始內容就有使用到「包裝符號」,那就要在原始內容前加上跳脫字元,告知系統跳脫字元後的字元是屬除資料,而不是「包裝符號」,沒特別設定的話,預設是 \
4) 一行資料的結尾符號:如果我們是使用 excel 匯出 csv,一般都是 \r\n 為行尾符號,但要注意有時會是只有 \n
5) 跳過幾行:當我們用 excel 匯出 csv 時,大部份第一行都會是「欄位名稱」,這對匯入資料時,這首行是無用的,所以可以設定跳過 1 行。

2015-05-20

如果運用 css 或 php 來做 ellipsis (文字太長而省略) 的效果

在做在網頁的時候,尤其在文章呈現或條列式呈現文字的時候,因為不想要一次顯現出一堆文字而想要做摘要或部份文字顯示…這時候應該怎麼入手會比較好?

*ellipsis - 省略,在網頁上可以當作使用 ... 或 read more 的一種判斷
*text-overflow MDN

在下在網路上逛逛時發現幾個方式不錯…

1) css → text-overflow
text-overflow 應該是所有瀏覽器都有支援 ( 吧 ) ,至少我測過 IE6 ~ 11 、 Google Chrome 、 firefox 、 safari…電腦版的
大至上操作…如果是設定在 <div> ... </div> 中的話,要先記住幾個

  1. 要設定顯示長度 width: ???px ( % ) 
  2. 要設定不斷行 white-space: nowrap
  3. 超過長度的不顯示 overflow: hidden
  4. 設定文字超過時用 ... 方式省略 text-overflow: ellipsis

2015-05-14

phpMyAdmin 告知說沒有 mcrypt 模組!!!!!

最近重灌機子,在安裝完 LAMP 之後…登入 phpMyAdmin 時發現有告知說 php 少了 mcrypt 的模組…怪了,在 rpm -qa | grep mcrypt 有發現該裝的都有裝呀…

# rpm -qa | grep mcrypt
libmcrypt-2.5.7-1.2.el6.rf.i686
php-mcrypt-5.3.3-1.el6.rf.i686
libmcrypt-devel-2.5.7-1.2.el6.rf.i686

那為什麼 phpmyadmin 會一直提示??

2013-01-22

關於Cacti plugin manage中文問題

Cacti有一個plugin叫manage…

它可以建立site(看作區或)與group(組點)…

如果管理的網路拓樸不小且有在實際的位址有區域分別(什麼台北、台中區啦,或a棟、b棟的),可以使用site來建立區域別,再到group建立各區域別中的分點群。

不過以上不是我這一篇的重點。

主要是因為我最近在看我建立的cacti時發現,雖然在網頁上看到的是完整的中文,但進入phpmyadmin看到db中的name都是亂碼。
而且我直接用phpmyadmin針對name直接輸入中文按下修改之後發現它還是寫入亂碼。

我確定cacti建立connect是用utf8呀…?

還是因為我沒設定mysql的default charset?

ok,打開my.cnf,在[mysqld]中加上
default-character-set=utf8
default-collation=utf8_general_ci
用phpmyadmin直接寫中文的方式正常了,但cacti的網頁反而變成全亂碼。

後來再用cacti中提供的方式去改device的name,可以看到亂碼的地方都正常了,而且cacti回寫到mysql的值也是正常的中文。

但這邊manage這個plugin提供的site的地方還是亂碼…怎麼改我都改不好。

最後總算找到…

請到cacti/plugins/manage/manage_sites.php,找到
<?php
          print "<a class='linkEditMain' href='manage_sites.php?edit=1&id=".$host["id"]."'>";
          print ereg_replace("(" . preg_quote($_REQUEST["filter"]) . ")", "<span style='background-color: #F8D93D;'>\\1</span>", $host["name"]);
          ?>
地方,你會看到它做了ereg_replace…我有試著把$_REQUEST["filter"]印出來是空的…
再加上上述之前的有<td...><a....>,卻沒有</a>與</td>…真奇怪
所以乾脆就合併,也把ereg跟preg_quote拿掉…因為感覺沒有用,最後是下面
<?php
          print "<a class='linkEditMain' href='manage_sites.php?edit=1&id=".$host["id"]."'>" . $host["name"] . "</a>";
          //print ereg_replace("(" . preg_quote($_REQUEST["filter"]) . ")", "<span style='background-color: #F8D93D;'>\\1</span>", $host["name"]);
          ?>
這樣site中的中文就正常了



2012-12-11

Apache,php,mysql,phpmyadmin+cacti,rrdtool,spine ON Centos 6.3

就在十月中旬,我一台拿來只跑cacti的1U server的硬碟掛了…
本來想說掛了就掛了,反正當初也只是為了讓自己監控方便才架的,結果卻有人認為「有監控的話那系統網路等同有人負責」…沒事有事就叫我「沒上班的日子看一下系統跟網路是否異常,然後還可以應付資安評鑑」。


一整個不爽

但我不得不說,cacti是一個系統兼網路管理人員的好工具。

好啦,進正題。

-----

環境:Centos 6.3 x86/2G DDR2/500G HDD
YUM-repo:epel/rpmforge/remi(被動)

2012-02-22

Nginx+phpMyAdmin+Force SSL connection

為了簡省記憶體…半年前我就開用nginx來當網頁服務器…
其實中間把ostube、wordpress與php等比較基本在用的東西從apache轉到nginx時,都沒什麼問題…但,在把phpMyAdmin轉過來之後,就遇上了強制換為https方式連線的問題(Force SSL connection)…

在phpMyAdmin改了無數次的版本之後…他多了一個setup的東東方面我們自已客製config.inc.php…不用特別修改預設的config.inc.php,他把他視覺化了…
然後,我在設定「強制使用ssl連線」時,雖然連入輸入帳密的第一頁面是https沒錯,但我輸入帳密按下登入之後,他一定會跳回http然後帶port為443(就像http://localhost:443/phpMyAdmin)…我得特別再把http改為https…才會進入phpMyAdmin的管理頁…
我是不覺得這樣很煩啦…也可以擋一些無聊人士…但,把http改https的這個方式在chrome瀏覽器有時會異常…而我最近又棄firefox而用chrome…所以…還是有找方式解決。

找到nginx中你自訂的ssl的config…在fastcgi導入php的地方,加上

fastcgi_param HTTPS on;

話說…這個問題,從我棄apache改用nginx之後…就一直困擾我至今,不過,並非是Nginx或phpMyAdmin的問題,只是我懶的去找解法…

2011-06-08

osTube v2.6…為了PHP v5.3修正

之前分析了官方修正的部份…
大至上可以知道有那一些要注意…

我修正的檔案【fix_on_20110607.7z
以下是2011/06/07,我修正的資訊…(基本上,應該現有的檔只有剩passing by reference...

2011-06-07

惱人的osTube 2.6…PHP 5.3

本日,來給它檢查官方的php53修正檔中,倒底是修了什麼…


注意:由於官方給的修正檔只針對付費版,也就是說,如果我們以免費版強上修正檔的話,不免會有錯。
http://wayneifo.blogspot.com/2010/10/ostube-26-ubuntu-1004php53.html說的一樣,如果付上class.banner的話,網頁會掛點…
(迷:但搞不好可以從這一些檔案挖一些付費版的功能,但,這是違法的…要注意)

2011-06-05

好久不見osTube....這一次來給他上2.6…坑呀

既然重灌為CentOS 5.6…自然要把FC8時期的osTube給補回來

是的,當初在FC8玩的osTube 2.3/2.5所花的工夫,現在要以osTube 2.6的版本補回到CentOS上了

仍然以http://cheaster.blogspot.com/2008/12/ostube-mytube.html為主要的流程

只不過,現在我在CentOS上加上了一個新的repo:rpmforge(http://wiki.centos.org/zh-tw/AdditionalResources/Repositories/RPMForge),這一個rpmforge實在不錯,個人認為是比原有的repo來的強大。

為啥我會提到這個…因為方便

--

原先的流程中有提到,整個osTube需要七個東東
  1.     libjpeg-devel--做圖、縮圖用
  2.     libmp3lame--轉檔用
  3.     amrwb--同lame
  4.     flvtool2--flv的相關使用
  5.     ruby--因為flvtool,所以要用
  6.     mplayer--媒體轉換用
  7.     osTube-comm--這是ostube的主程式

2010-08-20

自己架設的osTube…突然它開不起來了

停滯很久沒去看我自己架的osTube上的影片了…

就在今天(8/20),一時心血來潮想去看一下少女時代,就打開網站,但瀏覽器load很久…我的osTube都一直沒回應…

想說,難道是apache掛了…

改連我架的wordpress-blog,呃,可以連得上…再點一次osTube…還是一樣load很久都沒反應

再去打開apache-error-log,發現了…
PHP Warning:  file_get_contents(http://www.ostube.de/extern/texts.ini) [function.file-get-contents]: failed to open stream: Connection timed out in /xxxxxxxx/osTube25/includes/class.main.php on line 910
 本來看到這個我還以為是我昨天(8/19)更新了php 5.3.3搞得鬼…但後來查明後發現,其實是ostube的官方用學術網路不好連得到的關係,因為這個class.main.php的這一段,他會連回ostube的官方站去檢查一些東西,可能是更新,也可能只是官方為了統計而用的…反正,就是因為這個回應太快,所以才會讓網站卡在這邊太久…所以,把910行這邊相關的東西也remark起來就行了…

2009-12-13

ffmpeg2theora的指令補充

一個以ffmpeg為底,但要轉ogg確十分簡單的小程式…
官網:http://v2v.cc/~j/ffmpeg2theora/
man ffmpeg2theora:http://linuxreviews.org/man/ffmpeg2theora/
一般常用指令
-o
output:參數空一格之後接著寫上輸出ogg檔的路徑與位置,反正就是指定用的
-optimize
自動優化:會自行判斷一些特別的東西,轉出來的檔一定正常…
-sync
與來源檔同步:同步的意思就是在編碼、比特率與fps等等…都是與來源檔相同;比較可以確保無失真,但,因為支援度與一些因素的關係下,同步後的檔案可不一正常,我最常碰到就是畫面是一張一張圖片在切換…
進階指令
-v <0~10:default 6>
視訊品質:值的範圍是0~10,預設值為6(有些版本是5),基本上這個品質我猜想是n/10的意思,反正就程式自己判斷
-a <0~10:default 6>
音訊品質:同視訊品質
-V <1~16778:number:recommend source*(0.9~0.85)>
視訊率:就是指video bitrate(視訊比特率),單位是kb/s,值範圍為1~16778(有的版本好像沒有值範圍),一般高畫質經轉檔後還會保留約800(VCD原值約1250)以上的值,一些HD的更甚到1200(DVD原值5000/HDTV原值15000)以上,與audio bitrate的配合可以有效的在質與量之間取得平衡,我個人覺得在不失真且省空間的條件下,建議是以來源的85~90%會比較好…
-A <32~500:number>
音質率:audio bitrate(音質比特率),相關的說明跟video bitrate一樣,如果來源檔本身的值已高過192的話,建議就使用192就行了,尤其一般人耳朵沒那麼挑,192kb/s的值已算高,不過我通常會把容量的重點放在video bitrate
-H <Commonly used:11025/22050/44100>
音質採樣:Hz為單位,11025跟22050比較算早期數位音效裝置沒那麼好對時候常用的,不過現在CD的已常用44100了,DVD以上就96000或更高了

2009-12-11

OSTUBE_v.2.5-追加<上一個/下一個>

我不知道這標題應該怎麼下??
主要是因為,前一篇用完後我發現,用在右手邊的播放清單的上一個/下一個切換影片時還是以FLV的為主…然後要先進入FLV的版本,然後再點Theora-ogg-version才能繼續看ogg…這樣,好麻煩…因為會浪費「讀flash->選ogg版本->讀ogg」這樣多的時間…
人果然還是要以懶惰為本
所以,我追加進入Theora-ogg-version之後,右手邊的播放清單的上一個/下一個自動就換成ogg的選擇
  1. 打開ostube-path/mediadetails.php

    找到前一篇放的


    include("{$root_path}includes/dur_function.php");
    
    $main -> EndScript($smarty -> fetch("content/mediadetails_ogg.tpl"), $media_type . "s");
    

    改成

    include("{$root_path}includes/dur_function.php");
    
    $smarty -> assign("G", $_GET['g']);
    
    $main -> EndScript($smarty -> fetch("content/mediadetails_ogg.tpl"), $media_type . "s");
    
  2. 打開ostube-path/templates/defaults/content/mediadetails_ogg.tpl

    找到

    {$playlist}

    改成

    {if $G}

    {$playlist|replace:'video':'ogg'}

    {/if}

    {if !$G}

    {$playlist}

    {/if}
這樣…就ok啦…
哦,對了…轉成ogg的唯一好處就是音質變優,不過按理來說,應該是不可能的,可能是html5的video那個播放器有做過特別的處理…
但唯一的壞處就是,ogg會比原來的flv大好多

OSTUBE_v.2.5--加入HTML5-Video TAG by Ogg video file

是的…狐狸我自從isms之後就又開始無聊了…
最近,想到html第5代新語言加入了audio跟video的二個好用的多媒體tag…不用對不起自己


目前能正確支援html5的應該除了IE以外的都可以了…所以,此方法,對使用IE的觀賞者就沒用了…

主要步驟:
  1. Ogg轉換利器-FFmpeg2theora,download,how to install-binary
  2. OSTUBE的修改與convert flv to ogg的指令
第一步:
尋著官網上的做法,最後安裝好之後,你就可以直接使用ffmpeg2theora了,他的指令與ffmpeg相似,不過,主要我們只是用來做轉成theora-ogg而已,不像我們會拿著ffmpeg來做多種媒體的轉換,所以,ffmpeg2theora的參數不多…大概我們比較常用以下的:
  • -o:設定output的位置跟名稱
  • -v:video畫質的LEVEL,從0~10
  • -a:audio音質的LEVEL,從0~10
  • --sync:同步,就是上面v跟a與來源檔相同,不用設定LEVEL(建議,這是不失真的轉換)

    不過,注意,如果你影片來源的codec是vp6f的,請不要使用--sync,因為會只轉1、2秒而已
  • --optimize:算是叫優化啦,因為,用--sync在h264/acc的編碼下,有一些檔會變成畫面是一張一張在跑,但聲音是正常的;但如果換用--optimize就不會有這個問題…不過…我覺得,flv轉ogg…只要是來源是h264的,ogg檔都會變很肥
撰寫方式就是:/usr/local/bin/ffmpeg2theora -o ogg-path/ogg-file-name.ogg --sync source-path/source-file-name

OSTUBE-v.2.5_bug-轉檔HD高畫質

最近突然想到狐狸我在用ostube時是設定高畫質…我以為這高畫質的意思是HD/HQ


可是,最近在「借用」Youtube上的HD的NOBODY下來時,發現,經OSTUBE轉過之後,畫質變的好差,而且有顆粒方格出現,這十分奇怪
因為我看過OSTUBE-DB中HD的轉碼指令應該不會差到這種地步…

找著找著,發現了問題所在…
OSTUBE_V.2.5,在後台轉檔的選擇那,你會看到有四個選項normal(普通)/fast(快速)/good(高畫質)/user(自訂)
沒錯,沒有hd…但去找找資料庫的轉檔指令,跟後台中的admin.ini,是有設定hd的,但被註解掉了…那為什麼ostube不用?

而且,我在convert.php中,他有設定hd的轉檔…那就很怪,為啥ostube自己有寫hd轉檔,那又不啥不用?
這個問題,很難思考

反正,目前也沒啥bug,所以,狐狸我就自己開啟了osutbe的大絕,把hd轉檔open

  1. 打開ostube_v2.5-path\admin\modules\defaults.php,搜尋defaults_conversion_type_hd,把搜尋到的這一行最前面的「//」給刪掉
  2. 打開ostube_v2.5-path\languages\(語系)\admin.ini,搜尋defaults_conversion_type_good,在這一行底下多加上「defaults_conversion_type_hd = '代表意思'

    (以上2個做完,你就可以在後台/設定/影片轉檔中的影片品質就可以發現多了一個hd的那代表意思,選到它再按下save,就會設定hd轉檔了)
如此設定完之後,就會讓你的ostube以hd畫面轉檔了

(順帶一提,最近又開始無聊了,只好來動動腦,想試試html5-video的東東…來試試把ostube plug html5-ogg看看)