나는 안드로이드 비디오를 가지고있다 :
$ 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 : Baseline@L1.0
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 : Main@L4.2
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의 버그 일 수 있습니다. 그들은 이미 그것을 고쳤을 것입니다.
원본 비디오의 파일 크기를 줄이려면 비트 전송률을 명시 적으로 설정하는 동안 해상도를 적절한 수준으로 낮추거나 일정 품질 모드 ( x264의 CRF) 로 다시 코딩하는 것이 좋습니다 .
avconv -i input.mp4 -c:v libx264 -crf 28 -c:a copy output.mp4
CRF 값이 28 이상이면 “품질이 떨어집니다.” 물론 이러한 설정을 사용해야합니다.
답변
ffmpeg / avconv는 VFR h.264를 MP4 컨테이너에 넣는 방법을 모르기 때문에 많은 프레임을 복제해야합니다. 입력 비디오의 모든 프레임에 대해 출력 비디오에 프레임을 가질 수있을만큼 높은 프레임 속도를 사용합니다. 전화기는 몇 가지 프레임 속도 사이를 전환하는 것이 아니라 진정한 VFR을 수행하기 때문에 90 THOUSAND fps를 선택합니다 . 실제로 90K는 타임베이스 분자에서 나온 것 같습니다. ( 90k tbn
) ffmpeg / avconv가 타임 스탬프를 내부적으로 저장하는 방법을 잊어 버렸습니다. 다시 살펴 봐야합니다. 그리고 IDK가 mp4의 설계 방식과 일치하면
그렇기 때문에 비디오의 평균 QP가 51로 나오는 이유는 거의 모든 프레임이 이전 프레임의 정확한 복제본이므로 x264의 기능에 관계없이 프레임에는 최소 몇 바이트가 걸리기 때문입니다. 모든 매크로 블록으로 모든 dup 프레임을 스킵 (즉, 이전과 동일)으로 코딩하는 것만으로도 모든 이유로 비트 전송률을 높일 수 있습니다.
ffmpeg (및 avconv라고 가정)는 VFR h.264를 Matroska 컨테이너에 출력 할 수 있습니다. 파일 이름이 .mkv로 끝나는 동일한 명령 줄이 예상대로 수행됩니다. 다른 도구를 사용하여 VFR mkv를 mp4로 리 뮤싱하는 것이 가능하다면 IDK. mkv는 훌륭한 컨테이너 형식입니다. 성가 시게 지원하지 않는 것과 호환되지 않으면 사용하십시오.
일정한 프레임 속도의 출력 비디오를 만들어서 일부 프레임 타이밍 정보를 잃어 버리려면 다른 방법을 찾아야합니다. libav 필터일까요? 또는 avconv 옵션을 사용하여 원하는 출력 FPS를 지정할 수도 있습니다. x264는 단 몇 바이트만으로 dup 프레임을 코딩 할 수 있지만, FPS가 높고 많은 dups가있는 경우 대부분의 잠재적 인 참조 프레임이 복제되므로 실제로는 유용하지 않습니다. 많은 중복 프레임으로 x264 입력을 공급하는 경우 연속적인 b- 프레임 수를 늘리는 것이 좋습니다. b 프레임을 사용하여 복제본을 코딩하므로 공간이 덜 걸리며 중복되지 않는 참조 프레임을 유지하는 데 도움이됩니다.