Hack BBS

[全部のスレッド一覧][新規投稿][記事の削除・変更] [Home Page]

返信投稿はタイトルのリンクをクリックして下さい
スレッド【No.3299】の中の記事をすべて表示しています

【No.3299】のスレッド
05/11/18(金) 02:16:58 投稿者[へいはち ] [No.3299]のスレッド内
【No.3299】 タイトル[hack de 録!! 録画ファイル自動変換への道] この記事がスレッドの最初です
 録画済みファイルを、ffmpegを使って自動変換させようと考えまして。

 まず手始めとして、ffmpegを入れてみました。
 備忘録的に、こちらにメモしておきます。
 ソース持ってきて、./configure;make;make install の繰り返しでいけるかと思ったのですが、すんなりとはいかなかったもので。

 なお、hack de 録!!で録画されるmpeg2の動画ファイルを小さくすることが狙いですので、コーデックはlameとdivxあたりしか入れてません。
 なお環境はVine3.1化したHD-HGLANです。開発環境は最新です。

-----------
・xvidの導入
 xvidcore-1.1.0-beta2.tar.bz2 でOK。
 ./configure;make;make install で導入可能。

・lameの導入
lame 3.9.6.1でOK。

・ffmpeg
 現在配布中の安定最新版、0.9.4-pre1だと、xvidに対応していない。
 よってCVS版を使う。
 ただ現在の最新は50.1.0だが、それを使うと、-vcodec のオプションでxvidを指定すると「そんなコーデックはない」と、なぜか叱られてしまう。
 CVS版てひとつ前、2005−09−16付けの、ビルド 50.0.0を使う。

 取得コマンドは以下の通り。

cvs -z9 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co -D "2005-09-16" ffmpeg

 インストールのためのオプションは以下の通り

#./configure --enable-mp3lame --enable-xvid --enable-gpl --disable-altivec --disable-ffserver --disable-ffplay --disable-vhook --disable-zlib --disable-network
#make
#make install

 xvid+mp3のエンコードに必要ないものすべてOFF。
-----------



 ……で。
 肝心のエンコード性能なんですが。

 xvidで1パスの場合、だいたい元動画の14倍くらいの時間が必要でした。
 同じmpeg4でも、コーデックをmsmpeg4v2にしておくと、7倍で済むのですけど。

 1日は24時間しかなく、時間は有限です。
 xvidで変換をかけようとすると、1日につき動画80分、1週間だと9時間30分が限界ということに……。

 かなり微妙な線です。
 うちの場合、毎週の録画分は、いまのところ3時間くらいなので足りそうですが。

 比較対象として、同じバージョンのffmpegを、WINDOWSのMinGW環境でコンパイルしたもの結果と並べてみます。


--------------------------
ffmpeg build 50.0.0(3276800) MinGW版
WINDOWS-XP Pentium4 3GHz (presscott-1MB cache HT)
94s / 153s = 0.614

ffmpeg (build 4759 cygwin版 携帯動画変換君に付属)
WINDOWS-XP Pentium4 3GHz (presscott-1MB cache HT)
313s / 153s = 2.046

ffmpeg build 50.0.0(3276800)
linkstation Vine Linux 3.1 PPC-266MHz
32m27s / 153s = 12.725
--------------------------
 動画長さ / 変換時間(実CPU時間) = 倍率


 携帯動画変換君だと、Pentium4の3GHzでXVIDへの変換でも、動画の長さの2倍ほどかかってます。x264だと、さらに2〜3倍ほどかかります。
 MinGW版だと、3倍ぐらい速くなります。それでもようやく時間比が1を切るという程度。
 なおWINDOWSのMinGW環境でコンパイルするには、xvidiff.cを手直しして、コンパイルオプションにパスを追加しないとなりませんでした。
 ここの話題ではないですが、いちおう、そちらも書いておきます。


xvidiff.cへのパッチ

*** ffmpeg/libavcodec/xvidff.c Sat Aug 6 18:46:04 2005
--- ffmpeg-50.1.0/libavcodec/xvidff.c Thu Nov 17 17:07:29 2005
***************
*** 29,34 ****
--- 29,53 ----
#include "avcodec.h"
#ifdef CONFIG_WIN32
#include <fcntl.h>
+ /* Added for windows compile ----------------- */
+ #include <windows.h>
+
+ int mkstemp(char* template)
+ {
+ char temppath[512];
+ if(GetTempPath(512,temppath)!=0)
+ {
+ if(GetTempFileName(temppath,"fil",0,template)!=0)
+ {
+ FILE *pFile;
+ pFile=fopen(template,"w+");
+ if(pFile!=NULL)
+ return (int)pFile;
+ }
+ }
+ return -1;
+ }
+ /* ------------------------------------------- */
#endif

/**


./configureオプション

x86 minGW XVID+LAME+AC3 (スタティックリンク用)
./configure --enable-memalign-hack --enable-mingw32\
--enable-xvid\
--enable-mp3lame\
--enable-a52 --enable-gpl\
--extra-cflags=-I/local/include --extra-ldflags="-static -L/local/lib"

※スタティックリンクされたffmpeg.exeを作るためには、/usr/local/lib/xvidcore.a を、libxvidcore.a とリネームしてmakeするか、手動でリンクしないとならない。Makefileにバグ有り。
 ダイナミックリンク版のままだと、xvidcore.dllを、ffmpeg.exeと同じディレクトリか、C:\WINDOWS\SYSTEM32 にコピーしておかなければならない。

 xvidcore,mp3lameのバージョンは同上。./configure;make;make install でOK。
 gccは3.4.4。

05/11/18(金) 02:18:53 投稿者[へいはち ] [No.3299]のスレッド内
【No.3300】 タイトル[今後の展望] 【No.3299】に対する返信
 ffmpegの性能が、とほほだったもので、だいぶ気力が萎え萎えです。
 スクリプトを組んで自動処理させてみる予定だったのですが……。

 普段使っているWINDOWSマシンとのクロック比は11くらいなので、linkStationもけっこういけるんじゃないかと思っていましたが。
 LinkStationのPPCは、ベクトル演算器を持っていないことを忘れてました。
 MMXやSSEに相当するものがないせいで、さらに2倍くらい遅くなってしまっています。
 1時間エンコードするのに、14時間くらいかかるとなると……。

 sambaで共有させておいて、WINDOWS側からフォルダを監視して、変換もWINDOWS側からやったほうがよいのかも。
 そんなわけでMinGW版のffmpegをこしらえたりしてたわけですが。