Mac で、異様にカクカクする動画を修正する
下記リンクの記事で、「カクカク動画はインターレースとかじゃないよ」と指摘された。
QuickTime系再生ソフトでカクカクになる動画を修復する。 – 桃源老師のつぶやき
上記の記事では、再エンコードなしでカクカク動画を直す方法が紹介されている。
そうかな、似たようなことしたけど直らなかったぞ、と思いながら紹介された方法を試したところ、本当にカクカク動画がなめらかに動くようになった。上記リンクのブログさまにお礼をいうしかない。ありがとうございます。
思い返すと、「インターレースだろ、どうせ」みたいな結論ありきでこのページを書いた気がする。どうであれ、以下の記述は間違いです。「こいつ間違えてるな」と思いながら見てください。どうもすみません。
カクカク、というかもうブルブル震えていて、まともに再生できない動画。
コマ落ちとかではなく、動いているものが震えながら戻るような動画、でも Windows では普通に再生できるような動画は、ハードウェアがどうこうとかじゃなく、動画ファイルのインターレースを疑ったほうがいい。
mpv で インターレース解除
mpv には、デインターレースして再生してくれるオプションがある。
mpv --deinterlace=yes ファイルパス/動画ファイル
これでカクカクが直っているなら、原因はインターレースと断じていいことになる。
時間はかかるが、ffmpeg でエンコードしなおして、インターレース解除するのがいいと思う。
ffmpeg でインターレース解除
ffmpeg は Homebrew でインストールできる。
brew install ffmpeg
デインターレースは以下のように書くらしい。
ffmpeg -i ファイルパス/input.mp4 -vf bwdif=0:-1:1 -c:v libx264 保存先/output.mp4
以下のサイトさまで学ばせていただきました。
試してみると、ちゃんと修正される。
2018 年にアップデートされた Mac mini など、Apple T2 のハードウェアエンコードが利用できる機種では、libx264 ではなく、-c:v hevc_videotoolbox
とやれば HEVC で書き出せる。h264 の場合は -c:v h264_videotoolbox
。
多少早いし、なによりファンが回らなくて最高。
ただし、-v:b 1500k
などとビットレートを決めてやらないと、仕上がりが汚くなる。
ffmpeg -i ファイルパス/input.mp4 -vf bwdif=0:-1:1 -c:v h264_videotoolbox -b:v ビットレート 保存先/output.mp4
適切なビットレートは、ffprobe -v quiet -i ファイルパス/input.mp4 -show_entries format=bit_rate
で出てくる数字を参考にするのがいいと思う。
そもそもインターレースとは
昔、テレビがブラウン管だった時代。
1 ドットずつなのか、1 ピクセルずつなのかわからないが、画面は左から右へ、上から順番に描画されていった。これを走査といい、一段目の走査が終わると、二段目の左端からまた走査を開始し、画面の一番下の段まで描画し終えてやっとフレームをひとつ動かせたことになっていた。
これじゃ時間がかかるというので、インターレース(飛ばし走査)というものが考案された。
最初の一周は、一、三、五、七……と奇数段だけ描画し、偶数段を飛ばすのである。
赤から青に変わる画面があったとして、奇数段だけ青、偶数段だけ赤のままというシマシマの画面になった場合、全体として紫っぽく見えるはずだ。
二周目に偶数段が青く描画されて青一色になる。赤から、ふわっと紫になってから青くなるので、なんとなくフレームの遷移が滑らかになるのだと思う、たぶん。
このインターレースは、最初の段を 0 とするか、1 とするかが、あまり定まっていないようなのである。最初を間違うと、奇数として描画される段と偶数の段が、逆になってしまう。噛みあわなくなってしまうのだろう。当然、画面は乱れる。カクカクの原因はこの辺なのではないかと思われる。違うかもしれないけど。
ディスカッション
ピンバック & トラックバック一覧
[…] プレビューができなくなる。 閑話休題、カクカクした動画の治し方を検索すると、インターレース解除とか、VLCのストリーミングオプションとかが出てくるが、これらは多分間違いだと […]