「みんなの翻訳」は、世界中の文書をみんなで協力して翻訳するサイトです。

みんなの翻訳ロゴ
ブクタブ
翻訳サイト

カテゴリ一覧

このサイトについて 新規登録はこちら お試し翻訳

一覧

2017/07/28

メンテナンス終了のお知らせ

2017/7/25-2017/7/28に実施したメンテナンスは、2017/7/28/14:20に終了いたしました。 ご協力をいただき、ありが…

List

shikimi

English⇒Japanese

Hnoss

English⇒Japanese

sysInfo

English⇒Japanese

tkkobe

English⇒Japanese

ホーム > 翻訳記事

翻訳記事

FFmpegでメディア変換!クイックガイド | from Opensource.com / Tim Nugent

2017年1月5日 | Tim Nugent
 

  最近は本当に便利なオープンソースツールが多くて、マルチメディアを編集したり、手直ししたり、変換することもできるんですよね。AudacityHandbrakeなど、素晴らしいツールも世に出ています。
 しかし、変換ツールってなんだかすぐに思い浮かびますか?マルチメディアのファイル形式を変えるツールです。まあ、いくつかありますけど、今回はその中からFFmpegを使って変換していきますよ。
 

  余談ですが、FFmpegという単語は本来、「マルチメディアファイルを扱う様々なプロジェクト」の総称です。だから、我々の内輪では、ざっと「マルチメディア関連プロジェクト」を意味している言葉なんですよ。

 紛らわしい話ですが、数多くのマルチメディアファイル形式を規定してきたMoving Picture Experts Group(エムペグ)日本語版)と、FFmpegプロジェクトはまったく関係がありません。
 

  本題に戻ります。この記事は、コマンドラインツールとしてのffmpegを簡単に使ってみようという話です。
 あくまで、「FFmpeg(マルチメディア系)プロジェクトの全貌に迫る」とかそういう内容ではないのであしからず。

 コマンドツールとしてのffmpegは、さまざまなOSで使用でき、場合によってはデフォルトに設定されている程のものです。FFmpegウェブサイトからダウンロードすることもできますが、普通にパッケージマネージャーからダウンロードできるはずですよ。

  おそらくあなたが考え付くマルチメディアファイルは全て取り扱えるくらいパワフルです。ここでは簡単な使い方の説明だけしますから。機能の全体とか、深くまで突っ込んだ話とかはするつもりはありません。

 ただ、その使い方を見る前に、メディアファイルとは何なのかを大まかに説明する必要があります。

 

  メディアファイルとは

  超大まかに説明しますと、マルチメディアファイルとは、何らかのメディアを、少々破壊してでも1つの規格に無理矢理詰め込んで、保存し、あとで再生する目的で使う道具です。
 再生するものは、もちろんオーディオやビデオですね。それらを専用のメディア・エンコーディングやコーデック日本語版)なるものを使ってコード化してしまうんです。

 それぞれのコーデックには個性があり、長所と短所があります。
 たとえば、FLACコーデック日本語版)はロスレス音源としては高品質です。
 一方で、Vorbis日本語版)というコーデックがあります。これはファイルサイズはMP3とほとんど変わらないのに、MP3より高い音質を実現します。
 たしかに、FLACの方がVorbisより高音質なのはいうまでもないでしょう。そのかわりファイルサイズも大きめです。そして、ファイルサイズの軽量さと、音質を両立したいならば、Vorbisのほうが妥当といえます。

 このように、コーデックは特徴に合わせて、使い道が違ってきます。
 

  コーデックで形作られたファイルは、メディアの容器(コンテナ)であるとイメージしてください。
 この容器はメディアを入れているだけではありません。再生の方法にも影響を与えます。メディアを包んでいる容器が、再生機器とメディアの間を埋めて、1つのインターフェイスとしての役割を果たすこともあります。
 高機能な容器になると、ビデオ音楽関係なく、どんなメディアも詰められます。
 さらに、独自性を追い求めた容器なら、メディアにサブタイトルや、チャプター、通知、メタデータなどを付け加えることもできます。
 容器の特性次第で、単にメディアを再生するだけでなく、いくつものことができるようになるんです。
 

  メディアファイルとそれらの個性を大まかに示すとこんな感じです。実際には、メディア再生やメタデータの参照には様々な制約があり、そう思い通りになるものではありませんが、だいたいどんな働きをする道具なのかについてはお分かりいただけたでしょう。
 さらに詳しく知りたい人は、先ほど文中に出てきたリンクをご覧ください。
 

  ビデオ・オーディオのエンコードにはとても手間がかかるというイメージをお持ちの方も、FFmpegを使えば、色々と楽になるはずですよ。

 

  基本的な変換

  オーディオやビデオを別形式に変換する場合、たいていの人が既に変換したいファイル形式を決めていることでしょう。
 FFmpegでの、単純なファイル変換はとても簡単です。通常は、ファイル形式を指定するだけで、正しいコーデックをある程度自動で判別し、きちんと変換してくれます。細かい設定は要りません。

 

  ではまず、MP3ファイルをOGG(Vorbis)ファイルに変換してみましょう。

  ffmpeg -i 入力ファイル.mp3 出力ファイル.ogg 

 このコマンドでは、MP3ファイルを仮に「入力ファイル.mp3」、OGGファイルを「出力ファイル.ogg」と呼んでいます。
 これで、MP3形式ファイルを、Vorbis形式に変更できたはずです。
 「変換前のファイル➡変換後のファイル」と並べるだけなので簡単ですね。
 

  同じような使い方で、ビデオも変換できます。

  ffmpeg -i 入力ファイル.mp4 出力ファイル.webm 

 WebMウィキペディアはこちら)はとても使い出のあるフォーマットです。ビデオもオーディオも収容可能で、再生もきちんとできます。

 

  しかし、中にはこの方法では変換されないファイル形式もあるんです。
 たとえば、Matroskaという再生フォーマットの場合、次のようにコマンドを打てば変換できると思うでしょう。

  ffmpeg -i 入力ファイル.mp4 出力ファイル.mkv 

 ところが、何も起こりません。入力ファイル.mp4が出てくるだけで、変換が起こりません。こういうときには、どうすればよいのか。それが次の話題です。

 

  コーデックを指定したい

  Matroskaも様々なメディアを入れられる良作コンテナで、使えたら便利です。しかし、どうして出力されないのでしょう。原因として、FFmpegが自動対応しないコーデックだったことが考えられます。
 そんなときには、「-c」フラグを使ってコーデックをきちんと指定する必要があります。 

  このフラグを使うと、コーデックを手動で変更することができます。たとえば、オーディオファイルで「libvorbis」コーデックを使う場合には、次のように指定します。

  ffmpeg -i 入力ファイル.mp3 -c:a libvorbis 出力ファイル.ogg 

 これはビデオも同じで、

  ffmpeg -i 入力ファイル.mp4 -c:v vp9 -c:a libvorbis 出力ファイル.mkv 

 これで、Matroskaコンテナが出力されたはずです。
 Matroska形式にすると、VP9ビデオ再生、Vorbis音声再生が使えるようになります。
 WebMと再生のしやすさはおよそ同じです。変換の手軽さはWebMの方が勝りますけどね。
 

  FFmpegで使用できるコーデックをすべて表示するには、「ffmpeg -codecs」というコマンドを使ってください。FFmpegはバージョンによって使用できるコーデックに差があります。ぜひチェックしてください。

 

  変換したものを戻す

  万が一、変換する形式を間違えてしまったという場合は、再エンコードすることで対応してください。ただし時間がかかります。

  ffmpeg -i 入力ファイル.webm -c:v copy -c:a flac 出力ファイル.mkv 
 このコマンドは、まず「入力ファイル.webm」をコピーして、音声のエンコードに「FLAC」を使って、「出力ファイル.mkv」を出すという操作ができます。
 「-c:a flac」ですが、実は放っておくとVorbisで音声ファイルが出力されます。そこをFLACに変更することができるんです。

 このように、「-c」フラグは本当に便利です。

 

  コンテナを変える

  先ほどの例で、音と映像は別々にエンコードできることがわかりましたね。これといってオプションを追加しなければ、次のようにすれば十分です。

  ffmpeg -i 入力ファイル.webm -c:av copy 出力ファイル.mkv 



 品質を指定する 

 コーデックの指定方法はわかりましたね。それでは次の段階です。再生品質の調整はできるのかという話です。

  もっとも単純な方法は、ビットレートを調整するという方法ですね。
 人間の耳で聞いてそんなにわかるものではありませんが、しいて言うなら、ビットレートを上げると音のクリーンさやキレの良さが上がる出る気がします。あくまで個人の感想ですが、音源によっては大きな差が出ます。
 しかし、効果はものによりけりです。ファイルサイズばかりが膨れ上がって、何も変化が見られないということもあります。
 この手のものは試してみないと、何とも言えないものです。
 

  ビットレートの指定は、「-b」フラグを使います。コーデックオプションを指定する代わりに、ビットレートを指定するのもよいかもしれません。

  たとえば、ビデオのビットレートを変えるには、

  ffmpeg -i 入力ファイル.webm -c:a copy -c:v vp9 -b:v 1M 出力ファイル.mkv 

 これは、「入力ファイル.webm」から「-c:a copy」でオーディオをコピーして、「-c:v vp9」でビデオ変換にVP9を使う。そして、「-b:v 1M」でビットレートを指定し、最終的にはそれを「出力ファイル.mkv」としてまとめて出力する。という意味があります。

 

  他にも、フレームレートを変更して、品質を変えるという方法がありますね。これには「-r」オプションを使います。 

  ffmpeg -i 入力ファイル.webm -c:a copy -c:v vp9 -r 30 出力ファイル.mkv 

 これで新しくフレームが違うMatroskaを作りましたよ。
 「-r 30」で30フレーム毎秒とビデオの品質を指定しています。


 

  ビデオの大きさを変えるという方法もありますね。
 

  ffmpeg -i 入力ファイル.mkv -c:a copy -s hd720 出力ファイル.mkv 

 「-s hd720」とは、ビデオを1280x720サイズ用に出力するという意味です。このさい1280は、hdで省略できるんです。

 もちろん、横×縦を指定することもできますよ。

  ffmpeg -i 入力ファイル.mkv -c:a copy -s 1280x720 出力ファイル.mkv 

 これでさっきと同じものが出来上がります。幅(1280)を最初に、間にエックス(x)を入れて、高さ(720)を後に指定してください。


  品質の変更はだいたいこれらの要素でなんとかなるでしょう。
 1つ注意しておきますが、もともと品質が低い音源に、とても高いビットレートやフレーム数を与えても、品質が上がるわけではありません。

  あくまで、ここで紹介した方法は、高音質な音源をいかに小さなサイズにして持ち運ぶか、という場面でお使いください。

 同じような話ですが、一度品質を下げたメディアの品質が上がることはありません。640x480 のビデオを4K化したって、何もよくなりませんから。
 ただし、サイズを小さくした方が、タブレットに対応しやすくなったりと、様々な機器で扱いやすくなる場合があります。
 

  いかに高品質に容量を下げるか、ということはとても主観的な問題です。それぞれの要素の基本的な性質がわかっているだけで、これといった方法はないんですね。
 部分ごとに変更したものを、ご自分で比べてみるのが良いでしょう。

 

  メディアファイルを編集する

  ファイルがいくら完璧であっても、必要なところだけを抜き出して、別のファイルにしたいこともあるでしょう。あんまり凝った編集作業は、他のソフトの方が便利かもしれませんが、単純な抜き出しくらいなら、FFmpegで簡単に行えます。

  ffmpeg -i 入力ファイル.mkv -c:av copy -ss 00:01:00 -t 10 出力ファイル.mkv 

 コピーしたビデオから( -c:av copy)、映像を部分的に切り取っています。
 「-ss」オプションで、ビデオを切り取るタイミングを指定します。
 「-ss 00:01:00」とは、最初から1分間経ったところから切りぬくという意味です。この数値から分かるように、何時間、何分、何秒、何ミリ秒という単位で指定することもできます。
 「-t 10」はそこから10秒間を切りぬくという意味です。
 

  音声を取り出す

  映像から音声だけを取り出したいという場合、FFmpegならすぐ完成しますよ。「-vn」フラグを使います。

  ffmpeg -i 入力ファイル.mkv -vn 音声だけファイル.ogg 

 このコマンドで、「入力ファイル.mkv」から音声だけを抜き出し、Vorbisファイルにエンコードして、「音声だけファイル.ogg」として出力できます。
 同じようなことができるオプションに、「-an」フラグと「-sn」フラグとがあります。これらを使うと、音声とサブタイトルとを取り出せます。


  GIFを作る

  最近のバージョンで、GIFアニメ機能が返り咲いたという話を聞きました。
 私個人としては、ビデオのなかでは最も低品質なフォーマットだと考えています。無声だし、色数も少なければ、フレームレートも粗く、メタデータもほんのちょっとしかつけられない。
 なのに、何故だかいまだに人気あるよね。だから、一応そのやり方紹介するけど。
 

  音が出ないだけのビデオを作りたいのなら、さっき紹介した「-an」フラグが使えるけれど、GIFにおいては、GIFというフォーマットだから、もっとも単純な使い方でなんとかなる。
 ただし、一度品質を落としたメディアは、戻せない。同じことがGIFにもいえるので、その辺は注意してね。

  ffmpeg -i 入力ファイル.mkv 出力ファイル.gif 

 はい。これで「入力ファイル.mkv」と同じ大きさのGIF画像が出来上がっているはず。
 GIFを他のビデオフォーマットと同じ画質にすることだけは、やめた方がいいですよ。
 (私の経験上、ソースビデオより8倍くらい大きなファイルになります。)
 「-s」オプションなどを使ってリサイズするなどして、容量を抑えましょう。元々のファイルが、HDビデオなどの大きなサイズのものだったときはなおさらです。


  その他ツール

  このように、FFmpegを使うとある程度簡単な加工が素早く行えます。しかし、それ単体ではあともうちょっと機能が足りない。そこでFFmpegといっしょに使うと便利なツールを紹介します。
 

  YouTubeから映像を持ってくるには

  Youtubeにアップされている映像を、ダウンロードすることは可能です。ただし、あくまでYoutubeにアップされている品質のものしか得られません。それでも必要とあらば。

  Youtube-dlというツールが便利です。Youtubeのみならず、いくつか他のビデオ・ストリーミングサービスから映像をとることができます。使い方はこうです。

  youtube-dl https://www.youtube.com/watch?v=2m5nW9CQLJ0 

 これで、URL先の映像をローカル保存できます。

  Youtube-dlにも、品質を変更したり、フォーマットを指定するオプションが用意されていますが、私が見る限り、それらの操作はFFmpegでした方が無難です。
 だから、他の機能は使わないかな。
 まずは、映像をなるべく高画質・高音質でダウンロードして、圧縮やフォーマット変換は後から行うことをおすすめします。 

 

  もっとメディア形式について知ろう

  メディアコンテナの知識で、いくつもの問題を解決できる場合が度々あります。
 なので、それらの情報を得られるサイトなどに行ってみるといいですよ。ちなみに私のおすすめは、「 MediaInfo」というツールです。これには全てのメディアコンテナについての解説や、比較などの情報が書いてあります。メタデータの見方や入れ方などもここから学ぶことが多くあります。本当に情報量が豊富で、本当に参考になります。

  それから、これはコマンドラインで「mediainfo 入力ファイル.mkv」などと入力すると、そのファイル形式の情報がリストアップされるので、それもざっと確認する時などに便利です。

 

  終わりに…

  さて、これにてFFmpegの使い方はざっと説明できたと思います。
 さらに詳しい情報は、FFmpegプロジェクトのドキュメントをご覧ください。色々と使える技や、やってみたいことにぴったりな使い方が見つかるかもしれません。

  「やっぱりグラフィカル・インターフェイスで変換したい」という方には、 Handbrakeをおすすめします。Linux、Mac OS X、Windowsで使えて、とても便利です。Handbrake(他のソフトも案外そうですが、)は、内部のプログラムにFFmpegが入っていて、それを使ってメディアを変換しています。

 
PDF
更新日:2017-08-04 22:44:12 Hnoss 0  del.icio.usに追加   はてなブックマークに追加   twitterに投稿   facebookでshare
[ 原文 ] https://opensource.com/article/17/6/ffmpeg-convert-media-file-formats?utm_campaign=intrel Creative Commons License この作品は、クリエイティブ・コモンズ・ライセンスの下でライセンスされています。
クリエイティブ・コモンズ・ライセンス
翻訳者ページをみる

この記事の翻訳者

Hnoss さんの翻訳記事

Brunch - プラグイン

プラグイン    ➡ まとめページで見る  新しくプラグインを導入したいときは、「npm install --save-dev プラグイン名」でインストールできます。インストールした.jsフ…2017-08-20 13:01:01

AsciiDocでブログを作るには | from Opensource.com

 AsciiDocマークアップ言語とHugoパブリッシング・プラットフォームを組み合わせると、動作が軽く、メンテナンスが簡単なウェブサイトやブログを作れるんです。 2017年8月11日 |  …2017-08-20 12:57:20

僕がHugo静的サイト・ジェネレータをGitLabで使うときにしたCl設定 | from Leow Kah Man - Tech Blog

 週末にかけて、GitHubに構えていた私のブログをGitLabに移転しました。GitLabだとClビルドが自動的にできるところが便利です。  僕はGitLabのレポジトリにNodeJS Dockerイメージを構…2017-08-19 13:12:29

Brunch - スケルトン

スケルトン     ➡ まとめページで見る  Brunchのスケルトンは基本的に、アプリケーションの定型文セットになっています。アプリケーションの開発がより一層捗ることで…2017-08-18 19:25:30