出来ました。
■環境
・OS:ArchLinux x64
・CPU:Intel(R) Core(TM) i7-4500U
・gstreamer-vaapi:0.5.8
■ポイント
Ubuntu 14.04 でもライブラリが古くて gstreamer-vaapi のコンパイルが通りません。
最新ソースから環境を整えたかったので、ArchLinuxを選択。
$ gst-launch-1.0 filesrc location=/tmp/test.mpg ! decodebin ! videoparse format=i420 width=720 height=480 framerate=30/1 ! vaapiencode_h264 ! qtmux ! filesink location=test.mp4
DVD画質のエンコードで約150FPS
MPEG2へのエンコードならもう少し早くて200FPSぐらい。
エンコード環境整いました。CPUはSandyBridge。
vaapiのドライバにエンコード機能がついていないから、サンプルが動かなかった。
http://lists.freedesktop.org/archives/libva/2013-June/001766.html
昨日リリースされたドライバで、エンコード機能が実装されたので、
ubuntu-13.04に以下のパッケージをコンパイルして入れて、
libdrm-2.4.45
libva [git]
libva-intel-driver-1.2.0
$ ./h264encode
INPUT:Try to encode H264...
INPUT: RateControl : VBR
INPUT: Resolution : 176x144, 60 frames
INPUT: FrameRate : 30
INPUT: Bitrate : 182476
INPUT: Slieces : 1
INPUT: IntraPeriod : 30
INPUT: IDRPeriod : 60
INPUT: IpPeriod : 1
INPUT: Initial QP : 26
INPUT: Min QP : 0
INPUT: Source YUV : AUTO generated
INPUT: Coded Clip : /tmp/test.264
INPUT: Rec Clip : Not save reconstructed frame
libva info: VA-API version 0.34.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/local/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_34
libva info: va_openDriver() returns 0
Use profile VAProfileH264High
Support rate control mode (0x12):CBR CQP
Support VAConfigAttribEncPackedHeaders
Support packed sequence headers
Support packed picture headers
Support packed misc headers
Support 1 RefPicList0 and 1 RefPicList1
Loading data into surface 15.....Complete surface loading
\00000059(004504 bytes coded)
PERFORMANCE: Frame Rate : 304.57 fps (60 frames, 197 ms (3.28 ms per frame))
PERFORMANCE: Compression ratio : 8:1
PERFORMANCE: UploadPicture : 148 ms (2.47, 75.13% percent)
PERFORMANCE: vaBeginPicture : 0 ms (0.00, 0.00% percent)
PERFORMANCE: vaRenderHeader : 1 ms (0.02, 0.51% percent)
PERFORMANCE: vaEndPicture : 18 ms (0.30, 9.14% percent)
PERFORMANCE: vaSyncSurface : 18 ms (0.30, 9.14% percent)
PERFORMANCE: SavePicture : 5 ms (0.08, 2.54% percent)
PERFORMANCE: Others : 7 ms (0.12, 3.55% percent)
(Multithread enabled, the timing is only for reference)
動きました。
ようやくスタートラインに立てました。
http://www.phoronix.com/scan.php?page=news_item&px=MTM3MTU
どうやらLinuxでもIntel HD graphic のロジックを使うと出来るらしいのですが、
ffmpegにもlibx264にも実装されてないような感じです。
これは実装して楽しんでみるチャンス。
と、とらえて環境構築から色々とあがいてみる。
https://01.org/linuxgraphics/downloads/2013/2013q1-intel-graphics-stack-release
このあたりのモジュールを更新すると、
サンプルが動かせそうな気がするので、挑戦している。
http://cgit.freedesktop.org/libva/tree/test/encode/h264encode.c
http://definitions.symantec.com/defs/
に定期的にファイルを取りに行くと、
「変」な事象が発生する場合がある。
定期的に監視して、動きを見てみたい。
試験用スクリプトは以下の通り。
#!/bin/sh
OLD="/dev/null"
while [ 1 ]; do
wget --no-cache http://definitions.symantec.com/defs/ > /dev/null 2>&1
diff $OLD index.html > /dev/null
if [ $? -ne 0 ] ; then
NEW=index_`date +%Y%m%d%H%M`.html
mv index.html $NEW
OLD=$NEW
else
rm index.html
fi
sleep 60
done
一つ残せました。
http://lists.mplayerhq.hu/pipermail/mplayer-cvslog/2011-October/042989.html
計算機科学者とは、壊れていないものを修理する人々のことである