せっかくDVDという長めの映像コンテンツが手元にあるので、ffmpegで変換してどのくらい小さくできるか実験してみました。
DVDの映像は解像度が720x480で圧縮方式はMPEG2です。ビットレートは8Mbps前後です。
さてffmpegは多数のエンコーダを持っていますが、今回使うのはlibx264です。x264はフリーのMPEG4 AVC(H.264)のエンコーダで、ffmpegでエンコードできる形式の中で最も画質対ビットレートのパフォーマンスが良いと予想されます。
余談ですがx264はエンコードの速度が売りらしいです。でも、うちのデスクトップだと20fpsしか出ません。買った当初はかなり速い部類に入っていたマシンなのに、時代の流れとは悲しいもんです。
下記のコマンドでビットレートを指定した変換をかけました。
ffmpeg.exe -i video.m2v -an -vcodec libx264 -b 4000000 c:\4mbps.ts
MPEG2-TS形式にしているのは単なる趣味です。フリーのコンテナが良いならMatroskaやOggを、Windows向けならAVIやASFにするのが普通ですね、たぶん。
ま、コンテナの話はさておき、まずはビットレート1Mbpsで圧縮しました。確認してみると、一見良さそうですがシーンチェンジやキラキラした場面で画が激しく崩壊しました。1Mbpsはかなり厳しいようです。
とはいえ、WMV2やMPEG-2で1Mbpsなんて全くもって見られたもんではないので、x264の頑張りは素晴らしいです。
次に4Mbpsで圧縮してみると、画は綺麗でサイズも半分になります。それでも十分に素敵だと思いますが、x264ならもっといけるはずだ…!
というわけで、ビットレート2Mbps〜3Mbpsが安心ラインかと思います。それでも画が崩壊するかも?という恐怖は拭いきれませんが、サイズが減る方が優先です。より良い画質を求めるのであれば、2-passエンコーディングをやってみると良いかも。
昨日に引き続き、DVD素材をいじろうと思います。今日は音声です。
DVDの音声ですが、圧縮方式はDolby AC3またはDolby DTS、サンプリング周波数は48kHz、ビットレートは160kbps程度(2.0chいわゆるステレオの場合)です。
これを他の形式に変換してさらに圧縮することはできますが、元々が2.0chで160kbpsくらい、5.1chでも640kbpsくらいですので、圧縮する意味があまりないです。
というわけで音声はそのまま使うことにして、次のステップに行きます。
昨日は私の趣味で映像をTS形式にしました。ここに音声をマルチプレクス(多重化)して、音声付きの映像を作ります。
ffmpeg.exe -i c:\4mbps.ts -i audio.ac3 -acodec copy -vcodec copy c:\video_audio.ts
私の理解が足りないのかffmpegでは映像1ストリーム+音声1ストリームしか多重化できませんでした。もし音声を2ストリーム以上多重化したい場合は、別のツールを使った方が良いと思います。
今回使ったのはtsMuxeRです。映像、音声1、音声2をInput filesと書いてあるリストボックスに放り込みます。
Tracksから映像、音声1、音声2の設定をします。映像の方の設定はデフォルトで大丈夫なはずですが、音声は設定が必要です。特に音声のディレイを正確に指定しないと、未来の音が聞こえたり、音が遅れて腹話術みたいになります。
ちなみに昨日紹介した方法で作成したMPEG4 AVCの映像ストリームは、映像の設定をデフォルトのまま多重化すると再生時の画がおかしくなることがあります。
もし映像ストリームのみを再生すると正常なのに、多重化したストリームを再生すると画が崩壊している場合は、「Add picture timing info」と「Continually insert SPS/PPS」のチェックを外して多重化してみてください。
第一弾のDVDをTSUTAYAに送り返したら、即スチュアート・リトル2とファンタスティック・フォーが送られてきました。やたら早い。
スチュアート・リトル2は子供向けってほどではないにせよ、アラサーのおっさんが見るもんではないです。見ているこっちが恥ずかしくなるというか…そんな映画。この手の映画を見ていると背中が痒くなるよ。
ファンタスティック・フォーはもっと切った張ったの世界かと思っていたのですが、恋愛話がかなりの部分を占めていました。決して映画自体は悪くないです。以前見たX-MENのような展開を(私が勝手に)想像していたせいで、アクションがちょっと物足りなかったな。
そんでもって予約リストの順番を忘れてしまったので、次に何が来るかわからない。確認するのも野暮だ、来てのお楽しみということにしましょう。
いつものようにPCを起動して、メールを見ようと思ってThunderbirdを起動したら、メールの振り分けフィルタが「〜〜がない」とエラーを出して怒っています。
何事かと思って確認すると、メインのプロバイダ(WAKWAK)のメールボックスが綺麗さっぱり消えていました。んん?んんんん??
メールボックスには今まで受け取ったメールが全て入っていたのですが、全て跡形もなく消し飛びました。気のせいかな?メーラーの画面が広く感じるよ、アハーハ〜。
Thunderbirdよ、俺に一体何の恨みが…ほんと勘弁してください…。
フルセットとまでは行きませんが、メジャーどころのコーデックライブラリを追加したffmpegのビルドの手順です。
具体的には追加ライブラリは以下の通り。
ビルド作業は以下の通りです。事前準備としてaptitudeでyasmとnasmを追加していますが、環境によってさらに追加すべきパッケージが出てくると思います。
どちらかというとビルド作業よりライブラリを揃える作業が面倒でしたので、ライブラリ置き場のURLも併記(※)してあります。ご活用ください。
$ aptitude install yasm nasm $ git clone git://git.videolan.org/x264.git $ cd x264 $ ./configure --prefix=/home/username/usr/ \ --enable-shared \ --enable-pic \ --enable-pthread \ --enable-mp4-output $ make $ make install $ wget http://downloads.xvid.org/downloads/xvidcore-1.2.1.tar.gz $ tar xzvf xvidcore-1.2.1.tar.gz $ cd xvidcore/build/generic/ $ ./configure --prefix=/home/username/usr/ \ --enable-shared $ make $ make install $ wget http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz $ tar xzvf libogg-1.1.3.tar.gz $ cd libogg-1.1.3 $ ./configure --prefix=/home/username/usr/ \ --enable-shared $ make $ make install $ wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.0.tar.gz $ tar xzvf libvorbis-1.2.0.tar.gz $ cd libvorbis-1.2.0 $ ./configure --prefix=/home/username/usr/ \ --enable-shared \ --with-ogg=/home/username/usr \ --with-vorbis=/home/username/usr $ make $ make install $ wget http://downloads.xiph.org/releases/theora/libtheora-1.0.tar.bz2 $ tar xjvf libtheora-1.0.tar.bz2 $ cd libtheora-1.0 $ ./configure --prefix=/home/username/usr/ \ --enable-shared $ make $ make install $ wget http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.2.tar.bz2 $ tar xjvf amrnb-7.0.0.2.tar.bz2 $ cd amrnb-7.0.0.2 $ ./configure --prefix=/home/username/usr/ $ make install $ wget http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.3.tar.bz2 $ tar xjvf amrwb-7.0.0.3.tar.bz2 $ cd amrwb-7.0.0.3 $ ./configure --prefix=/home/username/usr/ $ make install $ wget http://nchc.dl.sourceforge.net/sourceforge/lame/lame-398-2.tar.gz $ tar xzvf lame-398-2.tar.gz $ cd lame-398-2 $ ./configure --prefix=/home/username/usr/ $ make install $ wget http://nchc.dl.sourceforge.net/sourceforge/faac/faac-1.28.tar.gz $ tar xzvf faac-1.28.tar.gz $ cd faac-1.28 $ ./bootstrap $ ./configure --prefix=/home/username/usr/ \ --enable-shared $ make install $ wget http://nchc.dl.sourceforge.net/sourceforge/faac/faad2-2.7.tar.gz $ tar xzvf faad2-2.7.tar.gz $ cd faad2-2.7 $ ./configure --prefix=/home/username/usr/ \ --enable-shared $ make install $ cd ffmpeg $ ./configure --prefix=/home/katsuhiro/usr/ \ --enable-nonfree --enable-gpl \ --enable-pthreads --enable-shared \ --extra-cflags="-I/home/username/usr/include" \ --extra-libs="-L/home/username/usr/lib" \ --enable-libx264 --enable-libxvid \ --enable-libamr-nb --enable-libamr-wb \ --enable-libtheora --enable-libvorbis \ --enable-libmp3lame \ --enable-libfaac --enable-libfaad $ ffmpeg FFmpeg version git-74371d6, Copyright (c) 2000-2009 Fabrice Bellard, et al. configuration: --prefix=/home/username/usr/ --enable-nonfree --enable-gpl --enable-pthreads --enable-shared --extra-cflags=-I/home/username/usr/include --extra-libs=-L/home/username/usr/lib --enable-libx264 --enable-libxvid --enable-libamr-nb --enable-libamr-wb --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-libfaac --enable-libfaad libavutil 50. 3. 0 / 50. 3. 0 libavcodec 52.29. 0 / 52.29. 0 libavformat 52.33. 0 / 52.33. 0 libavdevice 52. 2. 0 / 52. 2. 0 libswscale 0. 7. 1 / 0. 7. 1 built on May 22 2009 21:38:40, gcc: 4.3.2 At least one output file must be specified
(※)ライブラリのURLはそのうち移動されるかもしれません。あくまでも現時点での情報ということでよろしくお願いいたします。
部屋のファイルサーバはIntel D945GCLF2というマザーボードです。ここにDebian GNU/Linux 5.0(Lenny) を入れ、カーネルだけLinux 2.6.28に入れ替えて使っています。
しかしこのボード、買った当初からどうにもネットワークが不安定で、通信中に突然リンクダウンしたり、NETDEV WATCHDOG: transmit timed outというOopsが出てNICごと撃沈します。
あまりに調子が悪くていい加減イライラしてきたので、解決に向けて調べることにしました。
調べてみるとD945GCLF2のNICはRealtek RTL8168BというPCI Express接続(※)のギガビットイーサネットインタフェースです。
それに対して今使っているドライバは、Realtek RTL816「9」SというPCI接続のギガビットイーサネットのドライバです。つまり不調の原因はドライバが間違っていたせいだったのです。しかし間違ったドライバなのに中途半端に動いてしまうのでタチが悪いです。
なんで動いちゃうの?という疑問はさておき、正しいドライバ(RTL8111/8168シリーズ用のドライバ)はRealtekのサイトのこの辺からダウンロードできます。
トップページからの行き方は [上のメニューDownloads] - [左のメニューCommunications Network ICs] - [Network Interface Controllers] - [10/100/1000M Gigabit Ethernet] - [PCI Express] - [Software] - [LINUX driver for kernel 2.6.x and 2.4.x (Support x86 and x64) 8.012.00] です。長い。
ビルドの仕方やインストールの仕方はアーカイブを展開したときにできるreadmeファイルに詳しく書いてあります。下記に一例を示します。
# rmmod r8169 # cd /usr/src # tar xjvf r8168-8.012.00.tar.bz2 # make clean make -C src/ clean make[1]: Entering directory `/usr/src/r8168-8.012.00/src' rm -rf *.o *.ko *~ core* .dep* .*.d .*.cmd *.mod.c *.a *.s .*.flags .tmp_versions Module.symvers Modules.symvers Module.markers *.order make[1]: Leaving directory `/usr/src/r8168-8.012.00/src' # make modules make -C src/ modules make[1]: Entering directory `/usr/src/r8168-8.012.00/src' make -C /lib/modules/2.6.28-r8168/build SUBDIRS=/usr/src/r8168-8.012.00/src modules make[2]: Entering directory `/usr/src/linux-2.6.28-r8168' CC [M] /usr/src/r8168-8.012.00/src/r8168_n.o /usr/src/r8168-8.012.00/src/r8168_n.c:5076: warning: 'rtl8168_reinit_task' defined but not used CC [M] /usr/src/r8168-8.012.00/src/r8168_asf.o LD [M] /usr/src/r8168-8.012.00/src/r8168.o Building modules, stage 2. MODPOST 1 modules CC /usr/src/r8168-8.012.00/src/r8168.mod.o LD [M] /usr/src/r8168-8.012.00/src/r8168.ko make[2]: Leaving directory `/usr/src/linux-2.6.28-r8168' strip --strip-debug r8168.ko make[1]: Leaving directory `/usr/src/r8168-8.012.00/src' # make install make -C src/ install make[1]: Entering directory `/usr/src/r8168-8.012.00/src' install -m 744 -c r8168.ko /lib/modules/2.6.28-r8168/kernel/drivers/net/ make[1]: Leaving directory `/usr/src/r8168-8.012.00/src' # depmod -a # modprobe r8168
手順はRTL8169用のドライバを削除してから、RTL8111/8168用のドライバをインストールしているだけです。
(※)個人的にはギガビットイーサをPCI接続にして、PCI Expressを拡張スロットに出して欲しかったなあ…と思う。
< | 2009 | > | ||||
<< | < | 05 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | - | 1 | 2 |
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 | - | - | - | - | - | - |
合計:
本日:
管理者: Katsuhiro Suzuki(katsuhiro( a t )katsuster.net)
This is Simple Diary 1.0
Copyright(C) Katsuhiro Suzuki 2006-2023.
Powered by PHP 8.2.15.
using GD bundled (2.1.0 compatible)(png support.)