ffprobe vs mediainfo

みなさんは、どっちを使っていますか。


❯ ffprobe movie.mov
[aac @ 0x7fa2d9f05f40] Assuming an incorrectly encoded 7.1 channel layout instead of a spec-compliant 7.1(wide) layout, use -strict 1 to decode according to the specification instead.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'movie.mov':
  Metadata:
    major_brand     : qt
    minor_version   : 0
    compatible_brands: qt
    creation_time   : 2023-01-12T09:51:58.000000Z
    com.apple.quicktime.make: Apple
    com.apple.quicktime.model: iMac19,1
    com.apple.quicktime.software: macOS 13.1 (22C65)
    com.apple.quicktime.creationdate: 2023-01-12T18:51:56+0900
  Duration: 00:00:03.05, start: 0.000000, bitrate: 998 kb/s
  Stream #0:0[0x1](und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], 627 kb/s, 60 fps, 60 tbr, 6k tbn (default)
    Metadata:
      creation_time   : 2023-01-12T09:51:58.000000Z
      handler_name    : Core Media Video
      vendor_id       : [0][0][0][0]
      encoder         : H.264
  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, 7.1, fltp, 8 kb/s (default)
    Metadata:
      creation_time   : 2023-01-12T09:51:58.000000Z
      handler_name    : Core Media Audio
      vendor_id       : [0][0][0][0]
[aac @ 0x7fa2db00f3c0] Assuming an incorrectly encoded 7.1 channel layout instead of a spec-compliant 7.1(wide) layout, use -strict 1 to decode according to the specification instead.


❯ mediainfo movie.mov
General
Complete name                            : movie.mov
Format                                   : MPEG-4
Format profile                           : QuickTime
Codec ID                                 : qt   0000.00 (qt  )
File size                                : 372 KiB
Duration                                 : 3 s 50 ms
Overall bit rate mode                    : Variable
Overall bit rate                         : 998 kb/s
Encoded date                             : UTC 2023-01-12 09:51:58
Tagged date                              : UTC 2023-01-12 09:52:01
Writing library                          : Apple QuickTime
com.apple.quicktime.make                 : Apple
com.apple.quicktime.model                : iMac19,1
com.apple.quicktime.software             : macOS 13.1 (22C65)
com.apple.quicktime.creationdate         : 2023-01-12T18:51:56+0900

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : Main@L3.2
Format settings                          : CABAC / 2 Ref Frames
Format settings, CABAC                   : Yes
Format settings, Reference frames        : 2 frames
Format settings, GOP                     : M=2, N=60
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 3 s 50 ms
Source duration                          : 4 s 50 ms
Bit rate mode                            : Variable
Bit rate                                 : 663 kb/s
Maximum bit rate                         : 768 kb/s
Width                                    : 1 280 pixels
Height                                   : 720 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 60.000 FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.012
Stream size                              : 247 KiB (66%)
Source stream size                       : 310 KiB (83%)
Title                                    : Core Media Video
Encoded date                             : UTC 2023-01-12 09:51:58
Tagged date                              : UTC 2023-01-12 09:52:01
Color range                              : Limited
Color primaries                          : BT.709
Transfer characteristics                 : BT.709
Matrix coefficients                      : BT.709
Codec configuration box                  : avcC

Audio
ID                                       : 2
Format                                   : AAC LC
Format/Info                              : Advanced Audio Codec Low Complexity
Codec ID                                 : mp4a-40-2
Duration                                 : 3 s 50 ms
Source duration                          : 3 s 971 ms
Bit rate mode                            : Constant
Bit rate                                 : 8 247 b/s
Nominal bit rate                         : 960 kb/s
Channel(s)                               : 8 channels
Channel layout                           : C L R Ls Rs Lw Rw LFE
Sampling rate                            : 44.1 kHz
Frame rate                               : 43.066 FPS (1024 SPF)
Compression mode                         : Lossy
Stream size                              : 3.07 KiB (1%)
Source stream size                       : 4.01 KiB (1%)
Title                                    : Core Media Audio
Encoded date                             : UTC 2023-01-12 09:51:58
Tagged date                              : UTC 2023-01-12 09:52:01

どっちがいいんですかね。


👉 FFmpeg/ffprobe.c at master · FFmpeg/FFmpeg hatena-bookmark

 


👉 MediaArea/MediaInfo: Convenient unified display of the most relevant technical and tag data for video and audio files. hatena-bookmark


Twitter 動画をツイートできず - 公式「YUV 4:2:0 ピクセルフォーマット にのみ対応しています」

YouTube ではアップロードして公開できました。



しかし、Twitter で動画アップロード時、完了できてるのに、ダイアログがグレーアウトしたまま。

ツイートができない。戻るとエラーの表示。

エラー
長い動画はアップロードされるまで時間がかかります。アップロードが中断されないように、ブラウザのタブは開いたままにしてください

アップロードはできてるのに。

なんでかな。

 

🎞️ ffmpeg で .mov → .mp4 に変換するときの注意点

ffmpeg では、以下のようにすれば Twitter でもいけます。

画質は -crf で設定するだけです。0 はロスなし、18 は実際はロスしていますが見た目では問題ありません。

もし、FFmpeg以外のプレイヤーで再生できるようにしたい場合は、-vf format=yuv420p を追加してください。

色の再現性が若干低下することがありますが、広い互換性のために必要です。


ffmpeg -i input.mov -crf 18 -vf format=yuv420p output.mp4

YouTubeにアップロードする場合は、-vf format=yuv420p を省略することができます。

👉 video - ffmpeg convert mov to mp4 without reduction of bit rate - Stack Overflow hatena-bookmark

それぞれのコマンドオプションで作成された output.mp4 を ffprobe で確認。


# -vf format=yuv420p なし
ffmpeg -i input.mov -crf 18 output.mp4 

Stream #0:0[0x1](und): Video: h264 (High 4:2:2) (avc1 / 0x31637661), yuv422p10le(tv, bt709, progressive), 720x1280 [SAR 1:1 DAR 9:16], 216 kb/s, 59.94 fps, 59.94 tbr, 60k tbn (default)


ffmpeg -i input.mov -crf 18 -vf format=yuv420p output.mp4

Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 720x1280 [SAR 1:1 DAR 9:16], 212 kb/s, 59.94 fps, 59.94 tbr, 60k tbn (default)

となり、ピクセルフォーマットが


yuv422p10le

  ↓

yuv420p

と変化していることが分かります。

この話、Twitter 公式にもきちんと書いてました。

YUV 4:2:0 ピクセルフォーマットにのみ対応しています。

👉 メディアのベストプラクティス | Docs | Twitter Developer Platform hatena-bookmark

その他、分かったことメモ。

※ ffmpeg で .mov → .mp4 にすれば コーデックは H.264 になる。

※ mov のコーデックは ProRes も H.264 も存在する。

動画ファイルって、いろんなきまりがあるんですね!

 

🎞️ まとめ

ffmpeg で、広く互換性を優先して、.mov.mp4 に変換する。


# .mov → .mp4
ffmpeg -i input.mov -crf 18 -vf format=yuv420p output.mp4

👉 Encode/H.264 – FFmpeg hatena-bookmark
👉 Encode/VP9 – FFmpeg hatena-bookmark

👉 YouTubeに縦長動画をどうアップするべきか? hatena-bookmark
👉 【Google フォト対策】ffmpeg で動画軽量化 hatena-bookmark


【macOS】「⌫ (delete)」 と「⌦ (forward delete)」の キーボードショートカット設定

カーソルの左右の文字を消す

「⌫(delete)」「⌦(forward delete)」

の操作。

両手がキーボードのホームポジションから離したくないので、各エディタアプリごとの設定でキーボードショートカットやキーマップを設定しようとして困惑。

まあ、だるい。

設定できても衝突の話もある。

 

■ どうしたいのか

それぞれを 「⌃(control)」 を使ったショートカットに振り分けたい。


カーソルの左を消す delete-backward-char (Windows Backspace)
delete

→ ⌃(control) + H


カーソルの右を消す delete-char (Windows Delete)
fn (function) + delete

→ ⌃(control) + D

 

■ キーマップアプリで設定する

macOS 上で動くキーマップアプリでショートカットとして登録しちゃいます。

👉 ⌘英かな hatena-bookmark
👉 Karabiner-Elements hatena-bookmark

これだけです。

 

■ まとめ

macOS 上で動くテキストのエディタ系の操作はこれですべて統一できます。

もし、すでに 「⌃(control) + H/D」をショートカットすでに使用している場合は使えなくなりますが、最も頻繁に直感的に使うエディタ操作を優先します。

👉 【macOS】キーマップとキーボードショートカットの変更設定 hatena-bookmark
👉 Deletion (GNU Emacs Manual) hatena-bookmark