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