私はAndroidビデオ:
$ mediainfo 20140324_192544.mp4
General
Complete name : 20140324_192544.mp4
Format : MPEG-4
Format profile : Base Media
Codec ID : isom
File size : 7.65 MiB
Duration : 19s 861ms
Overall bit rate : 3 232 Kbps
Encoded date : UTC 2014-03-24 18:26:05
Tagged date : UTC 2014-03-24 18:26:05
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : [email protected]
Format settings, CABAC : No
Format settings, ReFrames : 1 frame
Format settings, GOP : M=1, N=30
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 19s 780ms
Bit rate : 3 112 Kbps
Width : 640 pixels
Height : 480 pixels
Display aspect ratio : 4:3
Frame rate mode : Variable
Frame rate : 30.283 fps
Minimum frame rate : 18.211 fps
Maximum frame rate : 30.405 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.334
Stream size : 7.33 MiB (96%)
Title : VideoHandle
Language : English
Encoded date : UTC 2014-03-24 18:26:05
Tagged date : UTC 2014-03-24 18:26:05
Material_Duration : 19802
Material_StreamSize : 7693757
Material_FrameCount : 599
Audio
ID : 2
Format : AAC
Format/Info : Advanced Audio Codec
Format profile : LC
Codec ID : 40
Duration : 19s 861ms
Bit rate mode : Constant
Bit rate : 128 Kbps
Nominal bit rate : 96.0 Kbps
Channel(s) : 1 channel
Channel positions : Front: C
Sampling rate : 48.0 KHz
Compression mode : Lossy
Stream size : 310 KiB (4%)
Title : SoundHandle
Language : English
Encoded date : UTC 2014-03-24 18:26:05
Tagged date : UTC 2014-03-24 18:26:05
今、私はいくつかの積極的なサイズ変更を行います:
$ avconv -i 20140324_192544.mp4 -c:v libx264 -c:a copy -s:v 24x18 -b:v 3k 20140324_192544_2.mp4
avconv version 0.8.10-4:0.8.10-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
built on Feb 6 2014 20:56:59 with gcc 4.6.3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '20140324_192544.mp4':
Metadata:
major_brand : isom
minor_version : 0
compatible_brands: isom3gp4
creation_time : 2014-03-24 18:26:05
Duration: 00:00:19.86, start: 0.000000, bitrate: 3231 kb/s
Stream #0.0(eng): Video: h264 (Baseline), yuv420p, 640x480, 3108 kb/s, PAR 65536:65536 DAR 4:3, 30.25 fps, 90k tbr, 90k tbn, 180k tbc
Metadata:
creation_time : 2014-03-24 18:26:05
Stream #0.1(eng): Audio: aac, 48000 Hz, mono, s16, 128 kb/s
Metadata:
creation_time : 2014-03-24 18:26:05
File '20140324_192544_2.mp4' already exists. Overwrite ? [y/N] y
[buffer @ 0x1bb3000] w:640 h:480 pixfmt:yuv420p
[scale @ 0x1baf7a0] w:640 h:480 fmt:yuv420p -> w:24 h:18 fmt:yuv420p flags:0x4
[libx264 @ 0x1bcb180] using SAR=1/1
[libx264 @ 0x1bcb180] using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64 SlowCTZ SlowAtom
[libx264 @ 0x1bcb180] profile Main, level 4.2
[libx264 @ 0x1bcb180] 264 - core 120 r2151 a3f4407 - H.264/MPEG-4 AVC codec - Copyleft 2003-2011 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=0 b_adapt=1 b_bias=0 direct=1 weightb=0 open_gop=1 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=3 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.25 aq=1:1.00
Output #0, mp4, to '20140324_192544_2.mp4':
Metadata:
major_brand : isom
minor_version : 0
compatible_brands: isom3gp4
creation_time : 2014-03-24 18:26:05
encoder : Lavf53.21.1
Stream #0.0(eng): Video: libx264, yuv420p, 24x18 [PAR 1:1 DAR 4:3], q=-1--1, 3 kb/s, 180k tbn, 90k tbc
Metadata:
creation_time : 2014-03-24 18:26:05
Stream #0.1(eng): Audio: libvo_aacenc, 48000 Hz, mono, 128 kb/s
Metadata:
creation_time : 2014-03-24 18:26:05
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> libx264)
Stream #0:1 -> #0:1 (copy)
Press ctrl-c to stop encoding
frame=1779206 fps=2348 q=-1.0 Lsize= 44331kB time=19.77 bitrate=18370.2kbits/s dup=1778607 drop=0
video:23072kB audio:310kB global headers:0kB muxing overhead 89.594479%
[libx264 @ 0x1bcb180] frame I:7117 Avg QP:51.00 size: 25
[libx264 @ 0x1bcb180] frame P:441244 Avg QP:51.00 size: 17
[libx264 @ 0x1bcb180] frame B:1330845 Avg QP:51.00 size: 12
[libx264 @ 0x1bcb180] consecutive B-frames: 0.0% 0.8% 0.0% 99.2%
[libx264 @ 0x1bcb180] mb I I16..4: 100.0% 0.0% 0.0%
[libx264 @ 0x1bcb180] mb P I16..4: 0.0% 0.0% 0.0% P16..4: 0.0% 0.0% 0.0% 0.0% 0.0% skip:100.0%
[libx264 @ 0x1bcb180] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 0.0% 0.0% 0.0% direct: 0.0% skip:100.0%
[libx264 @ 0x1bcb180] final ratefactor: 128.61
[libx264 @ 0x1bcb180] coded y,uvDC,uvAC intra: 0.0% 38.5% 0.0% inter: 0.0% 0.0% 0.0%
[libx264 @ 0x1bcb180] i16 v,h,dc,p: 50% 0% 50% 0%
[libx264 @ 0x1bcb180] i8c dc,h,v,p: 100% 0% 0% 0%
[libx264 @ 0x1bcb180] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x1bcb180] kb/s:9560.28
その結果、45MBのファイルになります。
$ mediainfo 20140324_192544_2.mp4
General
Complete name : 20140324_192544_2.mp4
Format : MPEG-4
Format profile : Base Media
Codec ID : isom
File size : 43.3 MiB
Duration : 19s 862ms
Overall bit rate mode : Variable
Overall bit rate : 18.3 Mbps
Encoded date : UTC 2014-03-24 18:26:05
Tagged date : UTC 2014-03-24 18:26:05
Writing application : Lavf53.21.1
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : [email protected]
Format settings, CABAC : Yes
Format settings, ReFrames : 3 frames
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 19s 769ms
Bit rate : 9 563 Kbps
Nominal bit rate : 3 000 bps
Width : 24 pixels
Height : 18 pixels
Display aspect ratio : 4:3
Frame rate mode : Constant
Frame rate : 90 000.000 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.246
Stream size : 22.5 MiB (52%)
Writing library : x264 core 120 r2151 a3f4407
Encoding settings : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x1:0x111 / me=hex / subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=3 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=0 / b_adapt=1 / b_bias=0 / direct=1 / weightb=0 / open_gop=1 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=abr / mbtree=1 / bitrate=3 / ratetol=1.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.25 / aq=1:1.00
Language : English
Encoded date : UTC 2014-03-24 18:26:05
Tagged date : UTC 2014-03-24 18:26:05
Audio
ID : 2
Format : AAC
Format/Info : Advanced Audio Codec
Format profile : LC
Codec ID : 40
Duration : 19s 862ms
Bit rate mode : Variable
Bit rate : 128 Kbps
Channel(s) : 1 channel
Channel positions : Front: C
Sampling rate : 48.0 KHz
Compression mode : Lossy
Stream size : 310 KiB (1%)
Language : English
Encoded date : UTC 2014-03-24 18:26:05
Tagged date : UTC 2014-03-24 18:26:05
私のパラメータに何か問題があるはずですよね!?何が恋しい?ありがとうございました。
サイズの増加は、出力ビデオのフレームレートが90fpsを超えるためです。なぜこれが起こるのか私に聞かないでください—それはavconvのバグである可能性が非常に高く、それはすでにより新しいバージョンで利用可能です。彼らはすでにそれを修正しているかもしれません。
元のビデオのファイルサイズを縮小したい場合は、ビットレートを明示的に設定しながら解像度を(適切なものに)ダウンスケーリングするか、一定の品質モードで再コーディングすることをお勧めします( [〜#〜] crf [〜#〜] in x264)、例:
avconv -i input.mp4 -c:v libx264 -crf 28 -c:a copy output.mp4
CRF値が28以上の場合、「品質が低下」します。もちろん、これらの設定で遊ぶ必要があります。
Ffmpeg/avconvはVFRh.264をMP4コンテナに入れる方法を知らないので、多くのフレームを複製する必要があると思います。これは、入力ビデオのすべてのフレームに対して出力ビデオにフレームを含めることができるように十分に高いフレームレートを使用します。何らかの理由で電話は2つのフレームレートを切り替えるだけでなく、真のVFRを実行するため、avconvは90 THOUSAND fpsを選択します。実際、90kはタイムベース分子から来たように見えます。 (90k tbn
)ffmpeg/avconvがタイムスタンプを内部的に保存する方法を忘れたので、もう一度確認する必要があります。そして、それがmp4の設計方法と一致する場合はIDK。
これが、ビデオの平均QPが51になる理由です。これは、ほぼすべてのフレームが前のフレームと完全に重複しており、x264が何を実行しても、フレームに少なくとも数バイトかかるほど多くのフレームがあるためです。すべてのマクロブロックですべての重複フレームをスキップとして(つまり、以前と同じように)コーディングするだけで、すべての理由を超えてビットレートが膨らみます。
ffmpeg(そして私はavconvを想定しています)はVFRh.264をMatroskaコンテナに出力できます。ファイル名が.mkvで終わる同じコマンドラインは、期待どおりに機能するはずです。他のツールを使用してVFRmkvをmp4にリマックスすることが可能な場合はIDK。 mkvは素晴らしいコンテナフォーマットです。迷惑なほどサポートされていないものとの互換性が必要な場合を除いて、それを使用してください。
一定のフレームレートの出力ビデオを作成してフレームタイミング情報の一部を失うことを主張する場合は、別のアプローチを見つける必要があります。多分libavフィルター?または、avconvオプションを使用して、必要な出力FPSを指定することもできます。 x264はわずか数バイトで重複フレームをコーディングできますが、FPSが非常に高く、重複が多い場合、潜在的な参照フレームのほとんどが重複し、実際には役に立ちません。 x264入力に多数の重複フレームを供給する場合は、連続するbフレームの数を増やすことをお勧めします。 bフレームを使用して重複をコーディングするため、スペースが少なくて済み、重複しないものを参照フレームとして保持するのに役立つと思います。