ビデオファイルを再エンコードせずに正しいアスペクト比


18

次のプロパティを持つビデオストリームがあります。

Stream #0:0: Video: mpeg4 (Advanced Simple Profile) (XVID / 0x44495658), yuv420p, 720x416 [SAR 1:1 DAR 45:26], 1908 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc

VLCで実行する場合、「A」を押してアスペクト比を「4:3」に変更し、正しいアスペクト比でビデオを表示する必要があります。

ビデオの事実を見ると、a)実際のビデオがピクセルデータで誤って引き伸ばされている、またはb)誤って設定されているメタデータ値が単にあるというエラーですか?

前者の場合は、ビデオを再エンコードして幅と高さを変更できることを知っています。しかし、後者の場合、ビデオ自体を再エンコードせずにメタデータを修正するために実行するffmpegコマンドは何ですか?

回答:


36

サンプルアスペクト比(SAR)とディスプレイアスペクト比(DAR)には違いがあります。4:3で表示するようにビデオを変更する場合は、画像の実際のピクセルを変更する(ピクセルをスケーリングしてSARを変更する)か、コンテナレベルで外部に通知するメタデータフラグを設定する必要があります。メディアプレーヤーを使用して、画像を目的のDARに拡大します。

ビデオフィルターを適用しないと、ピクセルをスケーリングしてSARを変更することはできません。この方法を選択した場合、ビデオフィルターを適用している間はビデオストリームを「ストリームコピー」できないため、ファイルをトランスコードする必要があります。

画像をスケーリングし、(トランスコーディング中に)SARを変更するには、次のことを試してください。

ffmpeg -i <INPUT_FILE> -vf scale=720:540 -c:v <Video_Codec> <OUTPUT_FILE>

一方、メタデータフラグを変更してDARを調整するだけの場合は、ビデオをストリーミングコピーできます。これを行うには、次のことを試してください。

ffmpeg -i <INPUT_FILE> -aspect 720:540 -c copy [OUTPUT_FILE]

優秀な!アスペクトの変更はすぐに機能しました!
フォースリン2015

1
-c copy同時に使用してスケーリングすることはできません。ただし、を使用-aspectして、コンテナレベル(ストリームレベルではない)でアスペクト比を変更できます。
llogan

@ LordNeckbeard、usingはでの-aspect再生には機能しますffplayが、WMPまたはMPC-HCでは機能しません。追加のSAR / DARアイテムをStream #…情報行に追加FFmpeg/probe/playしますが、一般的な再生の解決策にはならないようです。ウィンドウでビデオをストレッチすることは、MPC-HC再生の最も簡単な解決策のようです。
Lumi

再エンコードせずにMPEG2で動作しませんでした
Mikhail V

なぜうまくいかなかったのか分かりません。同じビデオを出力するだけです!
Tina J

4

Delgadoの答えはMP4Boxがこれを行うことができることは正しいですが、-parオプションは説明されているように完全には機能しません。-outパラメータ(ように元のファイルを邪魔しないように):

mp4box source.mp4 -out target.mp4 -par stream-number=width:height

を使用する-par stream-number=width:height場合は、ピクセルのアスペクト比、つまりデバイスのアスペクト比をストレージのアスペクト比で除算した結果を定義します。(同等に、ソースピクセルのアスペクト比を説明しています。)たとえば、720x480のDVDソースがあり、正しいディスプレイアスペクト比が4:3であるとします。この場合、次のものが必要です。

mp4box source.mp4 -out target.mp4 -par 1=8:9

(4/3)/(720/480)= 8/9だからです。

ソースが真のSD NTSCピクセルを表す場合(この場合、中央の704×480ピクセルのみが4×3画面にマップされ、両側に8ピクセルのオーバースキャンがあると想定されます)、正しいコマンドは次のとおりです。

mp4box source.mp4 -out target.mp4 -par 1=10:11

(4/3)/(704/480)= 10/11 –標準精細NTSCビデオの正確な参照ピクセルアスペクト比。

質問で与えられたケースでは、それが本当に4:3である場合、それは非常に奇妙なピクセルアスペクト比を与えます:(4/3)/(720/416)= 104/135。幅は720で、DVDソースを示唆しています。これは25 fpsのビデオであり、PALを示唆していますが、PARは1未満になり、NTSCを示唆しています。それは4:5かもしれません(104:135に非常に近いと思います)が、そのピクセル縦横比を生成するものは何も知りません。たぶん最初にそれを試して、それでも水平に少し伸びすぎるように見える場合は3:4を試してください。もちろん、正確に4:3であることがわかっている場合は、104:135を使用してください。


3

ffmpegのは、再エンコードせずにMP4Box(の一部ビデオストリームのパラメータを変更することができないGPAC)とはmkvmerge缶。1つのビデオストリームと4:3の実際の/正しいアスペクト比の場合、次のことを試してみてください。

MP4Box -par 1=3:4 VideoFile.mp4

    "-par" : PixelAspectRatio (adjusts DAR + SAR with respect to the video resolution)
    "1"=   : stream number
    "3:4"  : aspect ratio (lower number 1st!)
    Changes are directly applied to "VideoFile.mp4", no copy

前後を確認するには: ffmpeg -i VideoFile.mp4


0

変更SARをしても、作品を再エンコードせずffmpeg.mp4使用してh264_metadataギャンように指摘し、ここで

ffmpeg -i in.mp4 -c copy -bsf:v "h264_metadata=sample_aspect_ratio=4/3" out.mp4

これは理論的には質問に答える可能性がありますが、答えの本質的な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
MMM
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.