Help us understand the problem. What is going on with this article?

Raspberry Pi で MPEG-2 TS の動画を H.264 にハードウェアエンコードする(ffmpeg版)

More than 1 year has passed since last update.

この記事について

Raspberry Piを使って、どのご家庭にもある.tsなファイルを圧縮してディスクの空き容量を増やし、
さらに溜め込んでいくぞという試みです。

以下の2モデルで確認しています。

  • Raspberry Pi(初代) Model B+
  • Raspberry Pi3 Model B

従来、Raspberry PiでのハードウェアエンコードではGStreamerを使って行うのが一般的でした。
しかし、GStreamerはそもそもこのような単純な動画エンコードを目的としたツールではないため、

  • オプションなどがわかりにくい
  • 情報が少ない

などの問題がありました。
そこで、本記事では皆さんが使い慣れたFFmpegを使ってハードウェアエンコードを行っていきます。
なお、FFmpegがRaspberry Piのハードウェアエンコードに対応したのは2016年中頃のようです。

事前準備

  • Raspbianの初期設定
  • MPEG-2ライセンスの入手と設定

この辺りの説明は割愛します。各自お好きなようにしてください。

FFmpegのビルド

ここから本編です。

$ wget https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
$ tar jxvf ffmpeg-snapshot.tar.bz2
$ cd ffmpeg
$ ./configure --enable-static --enable-omx-rpi --enable-mmal

# 使用している Raspberry Pi のCPU数に応じて変更 (Pi=>1, Pi3=>4 あたり)
$ make -j4
# Piだと6時間弱, Pi3でも40分程度かかります

$ sudo make install

エンコード

ビルドしたffmpegを使ってエンコードしていきます。
ハードウエアエンコードにありがちですが、以下の操作をしようとすると、エンコード速度が落ちます。

  • 解像度を変更する
  • インターレースを解除する

あくまでファイル容量削減程度に考え、割り切ってエンコードしていくのが良さそうです。

hoge.tsをH.264に変換する例です。h264_omxがポイントです。

$ ffmpeg -fflags +discardcorrupt -i hoge.ts -bsf:a aac_adtstoasc -c:a copy -b:v 5000k -c:v h264_omx -y hoge.mp4

-fflags +discardcorrupt -bsf:a aac_adtstoasc あたりはaudioのコピーをするためのオプションです。
audioをそのままコピーすることによってエンコード速度低下を防いでいます。

-b:v 5000k でmovieのビットレートを指定できます。
元の解像度や好みによって変えると良いと思います。

上記オプションの場合、
- Raspberry Pi: 動画長さの3倍程度の時間
- Raspberry Pi3: 動画の長さとほぼ同じ時間
でエンコードできるようです。

あとは各自でスクリプト書くなりして、どんどんエンコードしていきましょう。💪

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away