QuickTime系再生ソフトでカクカクになる動画を修復する。

主題
インターネットからダウンロードした動画(mp4)で、QuickTime系のソフトで再生すると、カクカクして見るに堪えないものを、修復する方法について述べる。

背景
動画(mp4)をインターネットからダウンロードすると、拡張子がQuickTime互換のmp4であるにもかかわらず、再生時に、動きがカクカクして見るに堪えないケースに出くわすことがある。
これは、QuickTime系のソフトで再生した時のみ発生し、VLCやMPVなどでは発生しない。したがって、再生ソフトの変更も対策の1つではある。しかし、その場合、mp4にも関わらずQuicklookによる動画プレビューができなくなる。
閑話休題、カクカクした動画の治し方を検索すると、インターレース解除とか、VLCのストリーミングオプションとかが出てくるが、これらは多分間違いだと考える。これらが動画を修復できる理由は、再エンコードするからである。
前置きが長くなったが、本稿では、再エンコードなしで、画質を損なわずにカクカクした動画を修復する方法を紹介する。

手順
以下に手順を述べる。

  1. MP4Box(Git版)の導入
    動画の修復には、MP4Boxを用いる。ただし動画のFPSを維持するため、リリースバージョンの1.0.1ではなく、Git版を導入する。

    git clone https://github.com/gpac/gpac.git
    cd gpac
    ./configure --static-bin
    make
    sudo install -s bin/gcc/MP4Box /usr/local/bin
  2. 動画の情報取得
    以下を実行する。

    MP4Box -info Bad_Movie.mp4

    以下の出力(例)が得られる。この作業の目的は、映像と音声のtrack IDを確認することにある。

    AVCC: invalid syntax for REXT profile, patching.
    # Movie Info - 3 tracks - TimeScale 1000
    Duration 00:25:03.167
    Fragmented: no
    Progressive (moov before mdat)
    Major Brand isom - version 512 - compatible brands: isom iso2 avc1 mp41
    Created: UNKNOWN DATE
    
    Chapters:
        Chapter #1 - 00:00:00.052 - ""
    
    iTunes Info:
        tool: Lavf58.29.100
    1 UDTA types: meta (1)
    
    # Track 1 Info - ID 1 - TimeScale 11988
    Media Duration 00:25:03.103
    Track has 1 edits: track duration is 00:25:03.037
    Media Info: Language "Undetermined (und)" - Type "vide:avc1" - 45048 samples
    Visual Sample Entry Info: width=1280 height=720 (depth=24 bits)
    Visual Track layout: x=0 y=0 width=1280 height=720
    AVC/H264 Video - Visual Size 1280 x 720
        AVC Info: 1 SPS - 1 PPS - Profile High @ Level 3.1
        NAL Unit length bits: 32
        Pixel Aspect Ratio 8001:8000 - Indicated track size 1280 x 720
        Chroma format YUV 4:2:0 - Luma bit depth 8 - chroma bit depth 8
        SPS#1 hash: 519B33DA8F2EB14AB495D44A9BA4EFBE378856F3
        PPS#1 hash: 19E5FD9C54250B4972A947FCF005D1CDD9782F40
        RFC6381 Codec Parameters: avc1.64081F
        Average GOP length: 210 samples
        Max sample duration: 400 / 11988
    
    # Track 2 Info - ID 2 - TimeScale 44100
    Media Duration 00:25:03.166
    Track has 1 edits: track duration is 00:25:03.114
    Media Info: Language "Undetermined (und)" - Type "soun:mp4a" - 32368 samples
    MPEG-4 Audio AAC LC (AOT=2 backward compatible) (HE-AAC v1) - 2 Channel(s) - SampleRate 22050 - SBR: SampleRate 44100 Type MPEG-4 Audio SBR
        RFC6381 Codec Parameters: mp4a.40.2
    Alternate Group ID 1
        All samples are sync
        Max sample duration: 2048 / 44100
    
    # Track 3 Info - ID 3 - TimeScale 1000
    Media Duration 00:25:03.167
    Track has 1 edits: track duration is 00:25:03.167
    Track is disabled
    Media Info: Language "Undetermined (und)" - Type "text:text" - 1 samples
    Unknown Text Stream
    Size 0 x 0 - Translation X=0 Y=0 - Layer 0
        RFC6381 Codec Parameters: text
        All samples are sync
        Max sample duration: 1503167 / 1000
  3. 動画のDemux
    前項の情報を元に、動画を映像と音声に分離する。

    映像

    MP4Box -raw 1 Bad_Movie.mp4

    出力ファイル名(例):Bad_Movie_track1.264

    音声

    MP4Box -raw 2 Bad_Movie.mp4

    出力ファイル名(例):Bad_Movie_track2.aac

  4. 動画のMux
    前項で分離した映像と音声を合体させる

    MP4Box -add Bad_Movie_track1.264 \
    -add Bad_Movie_track2.aac \
    -new Fixed_Movie.mp4

以上の通り、MP4Boxを使って、動画をdemuxし、再度muxすることで、再エンコードすることなく、カクカクした動画を修復できる。

以上。

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL