hibitekitou
手持ちのaviファイルをmp4に変換しようと思う
mac |2017-07-18
aviファイルがいくつかあります。過去に手に入れた動画ファイルなんだけど、これを見ようとすると、色々入れないといけない。QuickTime 7時代ならPerianあたりを入れておおけば概ねオッケーなんだけど、そういう便利なものが今はないわけです。
ということで、先日ffmpegを入れたんで、せっかくなのでそいつで変換してやろうと思いました。
ffmpeg -i input.avi -pic_fmt yuv420p output.mp4
で良いようです。ネットを見ると、pix_fmtを指定しないとMacでうまく再生できない動画になるらしい。エンコーダーに渡すピクセルフォーマットの指定、だそうです。
コーデックを指定する場合は
-vcodec:h264
libx264で直接エンコーダーを指定しても良さそう。hevcにするとH.265となるらしい。Hight Sierra になったらこっちに徐々に移行していくのだろうか。
もしコーデックを変えないなら。例えば、H.264のaviファイルからmp4のH.264に変えるなら、これは copy とすると良いようです。
-b でビットレートの指定となり、kbpsの値を記す感じ。 -b:v "1800k" とか。
-acodec:aac_at
もちろん、オーディオのコーデックも指定可能ですな。この場合はAACにする表記で、alacにすると Apple Lossless Audioにできたりします。ちなみにですけど、うちの環境だと単に aac にすると通らなかったです。
-ab でビットレートの指定。-ab "192k" とか書きます。
-ar でサンプリングレート。44.1KHzなら -ar 44100 となるみたい。
-ac でチャンネル数の指定かな。-ac 1だとモノラル。 -ac 2だとステレオ。
この辺の動画・音声のコーデックについては、 ffmpeg -codecs でリストアップされてきますが、400行以上のリストが出てくるので大変ですね。
2pass エンコードしたい場合には、二回エンコードをするようです。
1回名は -pass 1。2回目は -pass 2。
ということで、例えば、
ffmpeg -i input.avi -b:v "1800k" -b:a "128k" -pix_fmt yuv420p -vcodec h264 -acodec aac_at -pass 1 output.mp4 && \
ffmpeg -i input.avi -b:v "1800k" -b:a "128k" -pix_fmt yuv420p -vcodec h264 -acodec aac_at -pass 2 -y output.mp4
って感じ。-y は強制上書きということで。
これでうまく変換されるものが多いんですけど、出力されたものがよろしくない感じのもありまする。んが、とりあえずはこれで多くは行けそうなので、まとめて変換できるような仕組みを考えまする。
ということで、先日ffmpegを入れたんで、せっかくなのでそいつで変換してやろうと思いました。
ffmpeg -i input.avi -pic_fmt yuv420p output.mp4
で良いようです。ネットを見ると、pix_fmtを指定しないとMacでうまく再生できない動画になるらしい。エンコーダーに渡すピクセルフォーマットの指定、だそうです。
コーデックを指定する場合は
-vcodec:h264
libx264で直接エンコーダーを指定しても良さそう。hevcにするとH.265となるらしい。Hight Sierra になったらこっちに徐々に移行していくのだろうか。
もしコーデックを変えないなら。例えば、H.264のaviファイルからmp4のH.264に変えるなら、これは copy とすると良いようです。
-b でビットレートの指定となり、kbpsの値を記す感じ。 -b:v "1800k" とか。
-acodec:aac_at
もちろん、オーディオのコーデックも指定可能ですな。この場合はAACにする表記で、alacにすると Apple Lossless Audioにできたりします。ちなみにですけど、うちの環境だと単に aac にすると通らなかったです。
-ab でビットレートの指定。-ab "192k" とか書きます。
-ar でサンプリングレート。44.1KHzなら -ar 44100 となるみたい。
-ac でチャンネル数の指定かな。-ac 1だとモノラル。 -ac 2だとステレオ。
この辺の動画・音声のコーデックについては、 ffmpeg -codecs でリストアップされてきますが、400行以上のリストが出てくるので大変ですね。
2pass エンコードしたい場合には、二回エンコードをするようです。
1回名は -pass 1。2回目は -pass 2。
ということで、例えば、
ffmpeg -i input.avi -b:v "1800k" -b:a "128k" -pix_fmt yuv420p -vcodec h264 -acodec aac_at -pass 1 output.mp4 && \
ffmpeg -i input.avi -b:v "1800k" -b:a "128k" -pix_fmt yuv420p -vcodec h264 -acodec aac_at -pass 2 -y output.mp4
って感じ。-y は強制上書きということで。
これでうまく変換されるものが多いんですけど、出力されたものがよろしくない感じのもありまする。んが、とりあえずはこれで多くは行けそうなので、まとめて変換できるような仕組みを考えまする。
コメント ( 0 )|Trackback ( )
« 艦艇公開 in ...・壊れたー »
コメント |
コメントはありません。 |
![]() |
コメントを投稿する |
![]() |
ブログ作成者から承認されるまでコメントは反映されません |