ffmpegで色々弄ってみたお話
ども、BobbyQuineです。昨日sshサーバー作って、リモートにある動画ファイルをローカルのvlcで見る方法を書きましたが、ものによっては見ることのできないファイルがありました。例えばyoutube-dlでダウンロードしたmp4形式のファイルでも、1280*720は再生できましたが、1920*1080は再生できませんでした。通信速度が足りないのか何なのかはよくわかりません。もうちょっと調べてみます。さて、で、今回はリモートにある随分昔び作ったmkvファイルを再生しようとしたのですが、まぁ案の定無理。んじゃこっからはやったことをダラダラと。
前回の記事↓↓
http://bobbyquine.hatenablog.com/entry/2018/01/26/233604
ファイルの情報を
で見てみるとビデオコーデックがmpeg2、オーディオコーデックがac3でした。
とりあえず音声部分だけ分離、aacに変換。(一回分離してるのはmp4でac3が対応してると思ってたから。)
$ ffmpeg -i filename.mkv filename.ac3
$ ffmpeg -i filename.ac3 filename.aac
次に動画の方だがとりあえずh264にしてみた。
$ ffmpeg -i filename.mkv filename.h264
で、あとは
$ ffmpeg -i filename.h264 -i filename.aac filename.mp4
ってやってみて、ほんじゃストリーミング再生してみましょってなったんだけど、どうにも読み込まない。原因不明、もうちょっと勉強しないとわからないのでとりま放置。
でも早く再生できるようにしたい。flvならできんじゃね?となったので
$ ffmpeg -i filename.mp4 filename.flv
ってやってみたんだけどなんか画像が汚い上にアスペクト比が変わっちゃってる。
まぁそりゃ二重エンコードしてんだからそうよねー、と今度は
$ ffmpeg -i filename.mkv filename.flv
でもこれもなんでか画像が汚い。(ついでにまだこの時点でもアスペクト比がおかしい).
で、だ。ちょっと調べてみたらh264 + aacはmp4でもflvでもサポートされてんのよ。んじゃさっき作ったmp4ファイルのコンテナ形式だけ変えてみてついでにアスペクト比も固定すっか、ってことで
$ ffmpeg -i filename.mp4 -vcodec copy -acodev copy -aspect 16:9 filename.flv
んで完成。画像もちゃんとしてるしローカルのvlcを使った再生もできるし。
メモ書き程度のクソ記事でした。バーイ!!