酷!學園

其他討論區 => 雜七雜八 => 主題作者是: Darkhero 於 2009-12-30 22:05

主題: Service Side Vidoe Split script , use mencoder
作者: Darkhero2009-12-30 22:05
因為有需求所以查了一下 mencoder 的用法.

用下面的 script 可以把一個一小時的 mpe 檔,切格為 6 個各10分鐘的檔案.
用來幹麼呢?... 因為... Youtube 每個影片長度限制是 10 分鐘...

用這個就可以直接在 Linux Server 上面切割檔案了...
代碼: [選擇]
#!/bin/sh
mencoder -ss 00:00:00 -endpos 00:10:00 -oac copy -ovc copy $1 -o $2_01.mpg
mencoder -ss 00:10:00 -endpos 00:10:00 -oac copy -ovc copy $1 -o $2_02.mpg
mencoder -ss 00:20:00 -endpos 00:10:00 -oac copy -ovc copy $1 -o $2_03.mpg
mencoder -ss 00:30:00 -endpos 00:10:00 -oac copy -ovc copy $1 -o $2_04.mpg
mencoder -ss 00:40:00 -endpos 00:10:00 -oac copy -ovc copy $1 -o $2_05.mpg
mencoder -ss 00:50:00 -endpos 00:10:00 -oac copy -ovc copy $1 -o $2_06.mpg


目前的操作方式是 ./split_movie.sh 來源影片檔名 輸出名稱
主題: 回覆: Service Side Vidoe Split script , use mencoder
作者: darkranger2010-01-02 01:11
很實用的指令!
主題: 回覆: Service Side Vidoe Split script , use mencoder
作者: Darkhero2010-01-02 20:32
用 php 改寫一個簡單的版本...
要搭配 getid3 lib 使用..可以自動判斷檔案長度, 然後切割...

-3600*8 是因為那台機器跑 +8 的 timezone.... 用 strftime 會自動+8....

代碼: [選擇]
#!/usr/bin/php
<?php
require "/usr/share/php-getid3/getid3.php";
$input_name trim($_SERVER[&#39;argv&#39;][1]);
$output_name trim($_SERVER[&#39;argv&#39;][2]);

$getID3 = new getID3;
$fileData $getID3->analyze($input_name);

$count ceil($fileData["playtime_seconds"] / 600);
$command_str "mencoder -ss %s -endpos 00:10:00 -oac faac -ovc copy {$input_name} -o {$output_name}_%02d.mpg";
for(
$i 0;$i $count;$i++){
$start_time strftime("%T",$i*600-3600*8);
$command sprintf($command_str,$start_time,$i+1)."\n";
echo $command;
exec($command);
}
?>


php-getid3 的裝法在 ubuntu 上只要
代碼: [選擇]
sudo apt-get install php-getid3 就可以了.

接著只要另外搭配寫一個 auto_upload_youtube 的功能就好了...可以用 Zend_GData 來達到...
主題: 回覆: Service Side Vidoe Split script , use mencoder
作者: darkranger2010-01-03 19:54
這應該收精華區吧,放雜七雜八不太像話....