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


【AndroidStudio】Wi-Fiワイヤレスデバッグ ペアリング済み端末の再接続

パソコンから接続していたAndroid端末に、気がつくと切断されている時がある。


パソコンや端末の電源を一度落としたり、OS の再起動や AndroidStudio の再起動は時間がかかるのでしたくない。

なるべくかんたんに素早く再接続する方法。


1. Connection Assistant「Restart ADB server」

2. ターミナルから「adb kill-server」

3. ワイヤレスデバック OFF → ON

4. 再ペアリング

上のどれかで再接続できるので操作が少ない 1. から順にやっていくと良い。

それぞれ操作後は、3〜10秒程度待つと再接続される。

Event log を見ながらやると分かりやすい。

 

📶 1. Connection Assistant「Restart ADB server」

AndroidStudio 上部から、Troubleshoot device connections を選択して、

NextNext で2画面を飛ばして以下画面から Restart ADB server

数秒待つと、端末と再接続されます。

 

📶 2. ターミナルから「adb kill-server」

ターミナルを開いて adb kill-server と打つだけ。

数秒後、再接続されます。

ADB server は kill されると、自動で起動し、ペアリング済み端末に接続にいくようです。

1. の機能もこのことを利用しているように思えます。



 

📶 3. ワイヤレスデバック OFF → ON

私、ずっとこの方法でやってました。

いちいち端末を手にとって、通知バーに入れたタイルから、一度 OFF して ON にする。

 

📶 4. 再ペアリング

上記の3つの方法で接続できない場合は、もう再ペアリングしちゃいます。

AndroidStudio 上部 Pair Devices using Wi-Fi からどうぞ。

 

📶 注意点

端末側がロック画面やスリープ状態だと再接続できないようです。

👉 Jake Wharton さん「Android12、ロック画面 / 常時表示の時計が良い。」 hatena-bookmark

あと、AndroidStudio の設定として、ADB 周りがデフォルト設定になっていることが必要です。

mDNS という仕組みを使って接続してるようです。

👉 【謎?】QRコードによるデバイスのペア設定 - Android11 hatena-bookmark

 

📶 まとめ

一度、ペアリング済みのWiFiワイヤレスデバッグの再接続は、Android Studio 画面上部から、


No Devices 

 ↓

Troubleshoot device connections

 ↓

Next

 ↓

Next

 ↓

Restart ADB server

とするだけでよい。上記 1. の方法です。


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