So-net無料ブログ作成
検索選択

Raspberry Pi 2 mp4 ハードウェアエンコード [Raspberry Pi]

Raspberry Pi 2 にはmp4のハードウェアエンコーダーが入ってるので、動画変換が速くなるはず、
を試してみました。

ffmpegではまだ対応していないようなので、libav を試してみた。

まずは、faac,fdk-aacエンコーダーとx264エンコーダーのインストールはffmpegの時にインストールしているので、こちらを参照 。

libav ソースのダウンロードコンパイル
 git clone git://github.com/libav/libav
 cd libav
 ./configure --prefix=/usr/local --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libfaac --enable-libx264 --enable-omx-rpi --enable-mmal
 make -j 2

 ./avconv -codecs > codecs.txt
 で codecs.txt ファイルに h264_omx が入っていることを確認した。
 DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_mmal ) (encoders: libx264 h264_omx )

動画変換テスト
 変換テストに用意した元データは約1分のtest.ts

 まずは、libx264 での変換は、
 CPU400%使って13分以上かかった。
  time ../src/libav/avconv -i test.ts -c:v libx264 -b:v 2000k -c:a libfdk_aac -b:a 48k -ac 2 -y test_libx264.mp4
  real 13m16.522s
  PID PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
  2590 20 0 640m 368m 8128 S 394.7 39.8 1:35.10 avconv

 次はハードウェアデコーダーを使う h264_omx で変換してみたところ、
 CPU130%しか使っていないのに1分半で変換が終わった。
 ただし、TVでこのファイルを再生するとアスペクト比がおかしくて、4:3で再生している。
  time ../src/libav/avconv -i test.ts -c:v h264_omx -b:v 2000k -c:a libfdk_aac -b:a 48k -ac 2 -y test_h264_omx.mp4
  real 1m31.210s
   PID PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
  2634 20 0 219m 39m 7728 S 130.2 4.2 0:28.47 avconv

 アスペクトの調整をしようと -sar 4:3 を追加してみる。
 結果変わらず。
  time ../src/libav/avconv -i test.ts -sar 4:3 -c:v h264_omx -b:v 2000k -c:a libfdk_aac -b:a 48k -ac 2 -y test_sar_h264_omx.mp4
  real 1m35.739s
  PID PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
  2667 20 0 217m 37m 7844 R 123.3 4.0 0:14.24 avconv

 -aspect 16:9 を試してみるが、結果変わらず。
  time ../src/libav/avconv -i test.ts -aspect 16:9 -c:v h264_omx -b:v 2000k -c:a libfdk_aac -b:a 48k -ac 2 -y test_aspect_h264_omx.mp4
  real 1m33.503s
   PID PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
  2705 20 0 221m 41m 7832 R 128.8 4.5 0:20.26 avconv

 いつものiPhone用 1280x720 16:9 に変換してみると、 -aspect 16:9 -s 1280x720
 TVで見るとアスペクト比がちゃんと表示された。
 ただし、時間が8分半かかってしまう。
 -s オプションを指定すると時間が延びるというブログを見たが、その通りになった。
  time ../src/libav/avconv -i test.ts -aspect 16:9 -c:v h264_omx -b:v 2000k -s 1280x720 -c:a libfdk_aac -b:a 48k -ac 2 -y test_aspect_h264_omx.mp4
  real 8m25.143s
   PID PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
  2744 20 0 217m 37m 7868 R 104.5 4.0 0:41.68 avconv

他に -sar 16:9 や -sar 1:1 を試してみるが、TVで見るとアスペクト比があってない結果となった。
ハードウェアエンコーディングはうまく動いているように見えるけど、
いまいちアスペクト比が合わないので、もう少し調整が必要そう。
-s オプションのサイズ変換をして変換時間がもう少し速ければいいんだけどな。

iPhoneのVLCで再生してみると、全部のファイルが問題なく再生出来ることを確認した。
再生するソフトの問題なのかな?

タグ:Raspberry Pi
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この記事のトラックバックURL:
※言及リンクのないトラックバックは受信されません。
メッセージを送る

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。