iPhoneだけでiOS対応の「動画変換」や「音声の抜き出し」をやってみる! [JB]

(9)

最近、海外の方が撮影した風景映像を観るのがマイブームなのですが、flvmkv形式の動画で配布されていたりする事が意外と多くて、困惑!
ダウンロードしてiPhoneやiPadで観る分には、AcePlayerなどのAppStoreにあるアプリを使えば可能です。
ただ、AirPlayを使ってテレビで観たいとなると、mp4動画などのiOS対応形式でなければダメ。
でもでも、iPhone・iPadで直接ダウンロードしているので、わざわざパソコンで作業を行いたくない…!

そこで、iPhone・iPadで「動画変換」をやってしまおう!という、マイブームなお話。
ついでに、BGMが心地よかったので動画から音声だけを抜き出すなんてこともやってみようかなと思います。

スポンサーリンク

iPhoneで動画変換は可能?

動画変換・音声変換といれば、【FFmpeg】なんて超有名ソフトウェアがありますよね。様々なOS、様々な場面で使われているため、名前を見かけた事がある方も多いのではないでしょうか。

そんな【FFmpeg】さん、じつはCydiaからインストール出来るのです。ちょっとバージョンが古いですが、今回やりたいこと程度であれば問題なし。

howto-ios-video-convert-ffmpeg-jailbreak-cydia-02

ということで、動画関連はサッパリ分からない私ですが、とりあえず基本的な部分を触りつつ遊んでみました。(動画は奥が深すぎます…)

FFmpegを使う

FFmpegはアプリではなく、ターミナルなどから使うコマンドになります。
ということで、iPhone単体で行う場合はモバイルターミナルから実行します。(ちなみに、私は【WhiteTerminal】をメインに使っています)

また、今回はrootにログインし、/var/mobile/以下に動画ファイルを配置して作業を行っています。

① mp4動画に無劣化変換

「flv」や「mkv」動画を、iOSが再生出来る「mp4」形式の動画に変換します。とりあえず、今回私がやりたかった事がコレ。
元動画で使われている映像と音声のコーデックが、h264(映像)やaac(音声)といったmp4形式でも使える物の場合は、以下のコマンドにて無劣化変換を行うことが可能。

ffmpeg -i 入力ファイル -vcodec copy -acodec copy 出力.mp4
例:ffmpeg -i aa.flv -vcodec copy -acodec copy bb.mp4

howto-ios-video-convert-ffmpeg-jailbreak-cydia-03

-i 入力ファイル』 = 変換元の動画ファイルを指定
-vcodec copy』 = 映像形式の変換を行わずにコピー
-acodec copy』 = 音声形式の変換を行わずにコピー
出力.mp4』 = 変換後に出力される動画ファイルの名前を指定(拡張子は.mp4)

この場合、映像・音声の変換作業が行われず、コンテナ変更だけになっているため、約1時間のflvやmkv動画を1分30秒ほどでmp4動画に変換する事が出来ました。

howto-ios-video-convert-ffmpeg-jailbreak-cydia-04

② mp4動画に変換

最近はh264(映像)&aac(音声)の様な組み合わせの動画が多いため、基本的には前項の手法で大丈夫だったのですが、昔の動画ではmp4形式では使えないコーデックになっていたりします。(AVIなどの動画ファイルも)

そういった際には映像・音声の変換作業が必要。以下のコマンドでは、映像(h264)&音声(aac)への変換が行われ、mp4動画が作成されます。(aacへの変換なので-strict -2を付けないとエラーが出るみたい)

ffmpeg -i 入力ファイル -strict -2 出力.mp4
例:ffmpeg -i aa.flv -strict -2 bb.mp4

前項と違い、変換作業が含まれるため元動画のサイズや長さなどにより、変換時間がかなり掛かる場合があります。正直、パソコンを起動した方が早い!

③ 音声を抜き出す

動画から音声だけを抜き出したい場合もありますよね。そんなときは以下のコマンドで可能。

ffmpeg -i 入力ファイル -vn -acodec aac -strict -2 -ab 128kb -ac 2 -ar 44100 出力.mp4

例:ffmpeg -i aa.mkv -vn -acodec aac -strict -2 -ab 128kb -ac 2 -ar 44100 bb.mp4

-vn』 =
-acodec aac』 = aacコーデックで音声を変換。aacをcopyにすると変換無しで抜き出し可能(その後のオプション不要)
-strict -2』 = aacにする場合、これを付けないとエラーになる
-ab 128k』 = ビットレートを指定
-ac 2』 = 1 モノラル、2 ステレオ
-ar 44100』 = サンプリング周波数を指定

とりあえず、私のやりたいことは、この程度のコマンドで大丈夫みたいです!
ただ、FFmpegはもっと色々な事が出来るので、オプションを突き詰めながら遊ぶと、もっと面白い事が出来ちゃったりするかも! (動画関連は専門用語やら数値やらが多すぎて、私はパニックでしたが・・・)
FFmpegを組み込んでいるアプリも多いですし、探せばAppStoreアプリからも実行出来そうですが、どうなのかな?

ちなみに、動画変換はすごくバッテリー消費が激しくなるので、オススメはしません!①の手法で出来る場合は楽ちんでオススメですが、②の方法は時間が掛かる上にガンガン充電が減っていくので、注意しましょう!

コメント

  1. なんでFlash未対応なんだよ

  2. App storeにある
    CloudConvertの方がいい気がするw

    • そうですね、CloudConvertもひとつの手ですね!
      ただいくつか制限があったり、細かな設定が不可という点で、今回やっている程度の事であればローカルで出来る手法の方が向いているかもしれません。

  3. 無劣化っていうのがポイントですかね。
    また1つ勉強になりました。

  4. nPlayerというアプリを使えばmp4でなくてもAirplayに映せますよ〜

  5. Video Converter Appを数年前から使ってます。

  6. Kodi使えばflvもmkvも再生できますよ

  7. 動画変換をする際、このコマンドの方があまり負担がかからないのでおすすめします

    ffmpeg -i 入力ファイル.拡張子 -vcodec copy -acodec aac -strict -2 出力ファイル.拡張子

    また、この際mkvファイル(特に高画質の)からmp4もしくはmovへの変換だと映像が乱れることが時々あるのでそれを修正するには-vcodecの後をcopyからlibx264にして変換するとiDevice上できれいに再生することができます

  8. あとコマンド入力例のところ
    -ab 128kbではなく
    -ab 128kですね
    下の部分ではちゃんと128kとなっている為きちんと見ればわかると思いますが一応気になったので指摘させていただきました