G10,才刷的4.0。下pps播放任何视频跳出“系统无法播放H.264 Highh.264 main profilee编码的高清视频。”有没有补丁?

高品质 H.264 编码器
H.264 / MPEG-4 AVC 是优秀的视讯编码格式
就目前已成熟的视讯编码格式而言,H.264的压缩率是最佳的。
压缩率极高,可以只用很低 bitrate 提供堪用画质。
而 x264 为免费开放原始码的 H.264 / MPEG-4 AVC 编码器,
是目前编码效率最高的开放原始码 H.264 编码器。
此文只是基础知识,说明只是大略而已。
#1F: 下载、基本参数设定
#2F: GUI - 图形接口 工具接口介绍
#3F: CLI - 命令列接口 使用教学
#4F: CLI - FFmpeg with libx264
#5F: 其他 x264 (CLI) 编译版
#6F: 常见设备的相容编码参数
H.264 Profiles
Baseline Profile (BP)
主要用于低成本应用,对播放设备的性能要求不高,此 profile 常见用于早期性能较低的行动设备 (如 Apple iPod)。现今行动设备性能比起以前强大许多,此 profile 已经没有什么必要性了。
Main Profile (MP)
此 profile 原本是用于 SD 分辨率数码电视广播,虽然没有实行,然而被用于 HD 分辨率的电视广播。在 2004 年 High Profile 被开发之后,此 profile 已经没有什么必要性了。
早期的高性能行动播放设备(如 Sony PSP),也是使用此 profile。
High Profile (HiP)
目前使用最广泛的 profile,由其是 HD 分辨率电视应用 (如 Blu-ray / AVCHD 光盘储存、游戏机等电视多媒体播放器、HDTV DVB 广播服务)。
现今的行动播放设备都可以流畅播放用此 profile 的 SD 分辨率影片,中阶等级可以上 720p 分辨率,高阶甚至可上 FullHD (软解可能会有点吃力,硬解完全没问题)。
High 10 Profile (Hi10P)
超越目前主流的消费型产品能力,此 profile 建立在 High Profile 之上,多了支援 10 bit 的精度,色彩更精准。
以影片压制而言,将 High Profile (8 bit) 影片重新编码输出为 H.264 High 10 Profile ,虽然色彩精度不会变,但至少压缩率比输出 High Profile (8 bit) 还要高。
High 4:2:2 Profile (Hi422P)
针对专业领域应用,此 profile 建立在 High 10 Profile 之上,多了支援 4:2:2 色彩取样,位元深度达 10 bit。
High 4:4:4 Predictive Profile (Hi444PP)
此 profile 建立在 High 4:2:2 Profile 之上,多了支援 4:4:4 色彩取样,位元深度达 14 bit,并且支援高效率无损重新编码,且每张画面编码为三个独立的色彩平面。
ps. 目前 x264 的 H.264 Hi444P 仅支援 8-10 bit
H.264 Frame
影片是由许多连续的 Frames 所组成,但并不是所有 Frames 都是完整的画面,那些 Frames 需要参考其他 Frames 才能解码出一张完整的画面。
H.264 的 Frame types 有 I、B、P 三种。
不需要参考其他 Frames,是一张完整的画面。
I-frame (IDR):
不需要参考其他 Frames,是一张完整的画面。
IDR frame 为真正的 关键划格 (keyframes),
P-frame & B-frame 不会越过 IDR frame 去参考其他 Frames,
所以可以随意跳转到任意 IDR frame 开始播放/解码,而不会发生问题。
只纪录了与之前的 Frames 相异的区块,最多可以参考 "16 张" 之前的 Frames
播放/解码时需要参用到之前的 Frames 的部分资料,才能解码出完整画面。
在 x264 中,你不能控制 P-frame 数量,但你可以控制一个 P-frame 所能参考的 Frame 数量,
也就是 Reference frame (ref) 的数值。
只纪录了与前一张与后一张的 Frames 相异的区块,压缩率高(由其是在低动态/低变化的影片),
播放/解码时需要用到前后两张的 Frames 的部分资料,才能解码出完整画面。
(登入后即可检视图片)
从此图你可以发见 B-Frame 有用到前一张与后一张 Frame 的资料。
播放 Farme 的顺序是依照 Frame 的时间点,但解码顺序则不一定,
当 B-Frame 有用到后一张 Frame 的资料时,就必须预先解码后一张 Frame。
以上图为例
解码(处理)顺序: 1-2-4-3
显示(播放)顺序: 1-2-3-4
由于 P-/B-frame 不是完整的画面,解码时必须参考其他 Frames,
所以你不能随意跳转到 P-/B-frame 上播放/解码。
也就是说你如果播放 MPEG 视讯格式,当你跳播放时间点时,
正常而言,并不会跳到你所选的时间点上,而是最近的 IDR / I-frame。
就压缩率而言...
由于 P-/B-frame 并不是完整的画面,所以占用的资料量较少,
提高这类 Frame 使用量可以有效提升压缩率,但对画质几乎不会降低,
这代表可以使用较少的 bitrate (位元率)达到维持一定画质。
由以上得知,在 bitrate 充足的情况下,则不需要使用较多 B-frame、Reference frame (ref) ,
多少 bitrate 为充足依影片内容为定,高动态影片需要较多 bitrate,低动则较少。
至于使用时机...
提高 B-frame/ref 使用量可以降低 bitrate 的需求,使用较少 bitrate 达到目标品质。
低动态的影片可以使用较多的 B-frame,高动态或是纯静态则是 P-frame 效果较好。
对于相容性与硬件负担...
提高 B-frame/ref 使用量的副作用是降相容性以及提高硬件负担,请先保证相容性再来追求压缩率。
而 ref 的副作用要比 B-frame 强,例如 ref=16 这代表解码一个 P-frame 必须要连跳回 1~16 张之前的 Frames 取用资料。
x264 参数设定
Maximun B-frame:
当设定 B-frame 时,重复部分比较多/变化较少的 Frames 会被编码为 B-frame
此值限制 B-frame 的最大连续数量。
Reference frame (ref):
设定一个 P-frame 所能参考的 Frames 数量。
ref 会影响播放相容性,请参考下文 H.264 Level 部分
?Reference frame (ref): 3 - 5
?Maximun B-frame: 3 - 6
一个 keyframe (IDR frame) 到下一个 keyframe 的范围。
所以将 GOP 设为无限大虽然可以大幅增加压缩率,但这样就不能随意跳转到其他时间点播放/解码。
建议维持 default 即可。
H.264 Profile (x264)
Profile 越高 压缩率 也越高,但编码复杂度也越高,对播放硬件性能要求较高
x264 支援输出的 H.264 Profile:
baseline, main, high, high10, high422, high444
没有特殊需求使用 High Profile 即可。
无法直接指定输出 Profile 的话,可以手动设定参数值。
H.264 Profile
对应的参数
ps. 空字段代表无限制
参数说明:
bframes (Number of B-frames):
设定 I-frame P-frame 之间连续 B-frames 的最大数量。
cqm (custom quantization matrices):
设定所有自订量化矩阵(custom quantization matrices)为内建的默认之一。内建默认有 flat 和 JVT。
weightp (explicit weighted prediction):
使 x264 能够使用明确加权预测(explicit weighted prediction)来改善 P-frame 的压缩率。亦改善淡入/淡出的品质。模式越高越慢。
8x8dct (Adaptive 8x8 DCT):
弹性 8x8 离散余弦转换(DCT)使x264能够弹性使用 I-frame 的 8x8 转换。
cabac (CABAC: Context Adaptive Binary Arithmetic Coder):
弹性内容的二进制算数编码资料流压缩,禁用 CABAC 会切换回效率较低的弹性内容的可变长度编码(CAVLC:Context Adaptive Variable Length Coder)系统。大幅降低压缩效率(通常10~20%)和解码的硬件需求。
interlaced:
支援编码输出
x264 preset
Preset 是一个选项集合,这设定一编码速度来决定压缩比。速度越慢则会得到更好的压缩编码效率 (画质-位元率比 或 画质-档案大小比)。也就是说,若你设定一个目标位元率或是档案大小,则越慢的 Preset 将会得到更好的输出品质。而对于设定一个恒定品质 (CRF) 或是恒定量化值 (QP),你可以透过选择更慢的 Preset 来简单的节省位元率 (也就是得到更小的档案大小)。
一般而言是使用你所能忍受的最慢 Preset。目前 Presets 依速度递减排序是: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo。该默认 Preset 是 medium。忽略 placebo 因为它会比 veryslow 浪费更多时间而且效果差异太小。
而越慢的 Preset 其 Reference frame (ref) 值也越高,例如 veryslow preset 的 ref 为 16。由于通常不需这么高的 ref,你可以透过指定一个 Level 来限制 ref,或是手动指定一个合理的 ref 值 (1 ~ 6)。
针对特定类型的影片微调参数设定值,以获得更好的品质或压缩率。
Film (电影): 胶片电影。
Animation (动画): 例如卡通/日本动画。
Grain (胶片颗粒): 颗粒感很重的影片。
Still Image (静止影像): 例如幻灯片效果的影片。
PSNR: 优化 PSNR 值。
SSIM: 优化 SSIM 值。
Fast Decode (快速解码): 用于低性能播放设备。 (※ 压缩率极低)
Zero Latency (零延迟): 处里时间低延迟。主要用于直播等。 (※ 压缩率极低)
H.264 Level
Level 、 MaxDpbMbs 直接表示了对播放设备的解码性能要求
值越高,代表播放设备解码性能要求越高,相对的输出影片的压缩率也越越高
MaxDpbMbs 对应的 Level
举例说明:
Level 3.2: MaxDpbMbs 20480 以下
Level 4.1: MaxDpbMbs 32768 以下
关系方程式:
强制指定 Level (限制 MaxDpbMbs),则
ref = Min(Floor(MaxDpbMbs / (PicWidthInMbs * FrameHeightInMbs)), 16)
ps. 1. Floor(x): 取整数,小数码直接舍去。 ex. Floor(1.9) = 1
ps. 2. Min(x, y): 取比较小的数值。 ex. Min(2, 5) = 2
强制指定 ref,则
MaxDpbMbs = PicWidthInMbs * FrameHeightInMbs * ref
PicWidthInMbs = Width / 16
FrameHeightInMbs = Height / 16
(小数直接进制)
当我设定输出为
?Resolution:
?Level: 不指定(自动)
?Reference frame (ref): 4
则 MaxDpbMbs = 80 * 45 * 4 = 14400
对照上表,得 Level = 3.1
当设定输出为
?Resolution:
?Level: 3.1
?Reference frame (ref): 不指定(自动)
ref = Min(Floor(18000 / (80 * 45)), 16) =
Min(Floor(5.0), 16) =
Min(5, 16) = 5
则输出 H.264 的 ref 可能为 4 或 5
同上,如果要同时强制指定 ref 与 level
设定值不能大于 5
(强制指定 ref 不能大于 Level 的限制)
x264 Bitrate Control
指定输出品质: QP (VBR) 、 CRF (VBR)
指定输出 Bitrate / 档案大小: Single pass (ABR) 、 2-pass (VBR)
通常只会使用两种速率控制: Constant Rate Factor (CRF) 或 2-Pass Bitrate。速率控制是指决定多少位元将被用于每个划格的方法。这将决定档案大小且品质如何分布。而 CRF 的位元率分配效果是最佳的,若无控制输出大小的需求则使用 CRF 即可。
Constant Quantizer (QP)
设定x264以恒定量化值(Constant Quantizer)模式来编码视讯。此方法可以让每一个划格获得相同品质 (设定值)。
设定值范围为 0–69,0 为最无损,默认值为 23。比较低的数值会得到比较高的品质,合理的范围 21 - 28。
Constant Ratefactor (CRF)
此方法允许编码器自动分配位元速率来试着达到一定输出品质。让每个划格得到它需要的位元数来保持所需的品质等级。CRF 会得到最佳的位元速率分配结果,缺点是你不能直接指定一个目标位元率或是档案大小。
设定值范围为 0–51.0,0 为最高品质,默认值为 23。比较低的数值会得到比较高的品质,合理的范围 18 - 28。考虑 18 为视觉无损 (或接近),所以它看起来应该与输入相同 (或接近) 但它技术上不是无损。
自订 Bitrate 控制输出 Size,直接编码输出视讯。由于没有先扫描过一次,x264 无法得知影片各时间点的复杂程度。所以 x264 只能在编码中不断猜后之后的复杂程度,这样将不能精准依各时间点的复杂程度等比例分配位元率,因为如果之前分配了过多流量,那么之后就必下修流量来使输出位元率平均值等于使用者设定值。
Bitrate, 2-Pass
此方法令编码器 1st-Pass 将会得知影片各个划格的复杂程度,2nd-Pass 时依照输入视讯各个划格的复杂程度等比例分配位元数输出,并且最终平均位元速率会等于设定值。2-Pass 位元速率分配结果会接近 CRF,缺点是耗费大量时间。
1st-Pass CRF + 2-Pass Bitrate
此方法令编码器在 1st-Pass 时将会得知影片各个划格所需要的位元数,2nd-Pass 时依照各个划格所需要的位元数等比例分配使最终位元速率总平均值会等于设定值。2-Pass 位元速率分配结果会接近 CRF,缺点是耗费大量时间。
x264 设定优先级
preset -& tune -& 使用者设定选项 -& fast first pass -& profile -& level
当参数冲突时,后者会取代前者或是影响前者
preset slower 的参数为:
--b-adapt 2 --direct auto --me umh
--partitions all --rc-lookahead 60
--ref 8 --subme 9 --trellis 2
? x264 Preset: Slower
? Reference frame (ref): 4
--b-adapt 2 --direct auto --me umh
--partitions all --rc-lookahead 60
--ref 4 --subme 9 --trellis 2
输出 H.264 的 Reference frame (ref) 为 4
?x264 Preset: Slower
?Level: 3.2
输出 H.264 的 Reference frame (ref) 为 5
(请参考上文 "H.264 Level" 部分)
GUI (图形接口) 工具接口介绍
以下依推荐程度排序 (越前面越推荐)
1. VidCoder
(登入后即可检视图片)
2. Handbrake
(登入后即可检视图片)
(登入后即可检视图片)
CLI (命令列接口) 使用教学
使用 CLI 接口必须要会用基本的 CMD
CLI 使用说明:
CMD 入门教学:
----------------------------------------------------------------
x264 [设定选项] -o &输出& &输入&
可以用 raw 输入,
或 YUV4MPEG (*.y4m)
或 Avisynth (*.avs, 需要有支援的编码版)
或 lavf / ffms 支援的输入格式
依指定附档名选择输出档案格式:
.264 -& Raw bytestream
.mkv -& Matroska
.flv -& Flash Video
.mp4 -& MP4 (需要有 GPAC 的编译版)
x264 --crf 20 -o output.mkv input.m2ts
x264 --profile high --preset veryslow --crf 18 --ref 4 --bframes 5 -o output.mp4 input.m2ts
----------------------------------------------------------------
Bitrate Control
指定 bitrate: --bitrate, -B
指定 quality (crf): --crf
指定 quality (qp): --qp
Custom Bitrate (ABR):
x264 [设定选项] -B 1000 -o &输出& &输入&
Custom Bitrate, 2-Pass (VBR):
x264 [设定选项] -p 1 -B 1000 -o &输出& &输入&x264 [设定选项] -p 2 -B 1000 -o &输出& &输入&
Constant Quantizer (QP):
x264 [设定选项] --qp 20 -o &输出& &输入&
Constant Ratefactor (CRF):
x264 [设定选项] --crf 20 -o &输出& &输入&
1st pass crf + 2nd pass bitrate:
x264 -p1 --stat "XXX.stat" --crf 20 --slow-firstpass [设定选项] -o &输出& &输入&x264 -p2 --stat "XXX.stat" -B 1000 [设定选项] -o &输出& &输入&
如果不满意输出档案大小,再用 2-pass bitrate 修正
档案大小符合需求的话,则不须进行 2-pass bitrate
※ 1-pass 必需要用 --slow-firstpass
----------------------------------------------------------------
--vf, --video-filter &filter0&/&filter1&/...
Filter options may be specified in &filter&:&option&=&value& format.
目前官方版只有以下三种 filters
crop:left,top,right,bottom
resize:[width,height][,sar][,fittobox][,csp][,method]
select_every:step,offset1[,...]
其他编译版常见 filters
hqdn3d:ls,cs,lt,ct
pad:[left][,top][,right][,bottom][,width][,height][,red][,green][,blue]
yadif:[mode][,order]
详细请参考
x264 -- fullhelp
--vf crop:0,140,0,140/resize:width=1280,fittobox=width,method=lanczos
--vf crop:0,140,0,140/resize:1280,,,width,,lanczos
Resize 范例:
(PAR 1:1, DAR 16:9)
--vf resize:width=720,height=480,sar=1:1
ex. 1280xH (mod 2)
--vf resize:width=720,fittobox=width
ex. Letterbox, 720x480, PAR 40:33
--vf resize:width=720,height=480,sar=40:33,fittobox=both/pad:width=720,height=480
---------------------------------------------------------------
Frame Rate
x264 改变 fps 并不会舍弃或填补 Frames 维持 时间长度与影音同步
需要此功能的话可以使用 AviSynth 输入 or FFmpeg
如果确定输入是 CFR,强制输出 CFR
x264 [设定选项] --force-cfr -o &输出& &输入&
强制指定 fps (CFR: 23.976 fps)
x264 [设定选项] --fps 23.976 -o &输出& &输入&
强制指定 fps (CFR:
x264 [设定选项] --fps
-o &输出& &输入&
承上,强制指定 timebase
x264 [设定选项] --timebase
-o &输出& &输入&
使用 timecode 控制输出 fps
x264 [设定选项] --tcfile-in timecode.txt -o &输出& &输入&
承上,指定 timecode 的 timebase
x264 [设定选项] --timebase 1001 --tcfile-in timecode.txt -o &输出& &输入&
如果输入为 VFR,输出视讯为 Raw bytestream 时
可以汇出输入影片的 timecode 给 Muxer / Remuxer 使用
输出 timecode
x264 [设定选项] --tcfile-out timecode.txt -o &输出& &输入&
---------------------------------------------------------------
pipe A to B
A程式 [参数] | B程式 [参数]
A 的输出参数 与 B 的的输入参数 的 "值" 写 "-"
※ 要注意边解码工具是否支援 piping
如果需要使用 ffmpeg 的 Decoder / Filters
pipe ffmpeg to x264
ffmpeg -i input.mkv [设定选项] -f yuv4mpegpipe - | x264 [设定选项] --demuxer y4m -o &输出& -
FFmpeg 有含 x264 的编译版,瑞无特殊需求直接使用单一 FFmpeg 即可
x264 64bit 版无法使用 AviSynth (32bit)
改用 AviSynth 64bit 或是尝试以下方法
pipe ffmpeg(32bit) to x264
ffmpeg -i &输入AVS档& -f yuv4mpegpipe - | x264 [设定选项] --demuxer y4m -o &输出& -
pipe avs2yuv to x264
avs2yuv &输入AVS档& - | x264 [设定选项] --demuxer y4m -o &输出& -
---------------------------------------------------------------
CLI - FFmpeg with libx264
基本上,FFmpeg 内建的 x264 与 x264.exe 相同参数的名称相同
只是写法/规则稍有差异
----------------------------------------------------------------
x264 范例参数: profile high, preset veryslow, crf 18, ref 4, bframes 5
ex1. 内建 x264 编码
ffmpeg -i input.mkv -an -c:v libx264 -profile:v high -preset:v veryslow -crf 18 -x264opts ref=4:bframes=5 output.mp4
ex2. 内建 x264 编码 + copy audio
ffmpeg -i input.mkv -c:v libx264 -profile:v high -preset:v veryslow -crf 18 -x264opts ref=4:bframes=5 -c:a copy output.mp4
ex3. pipe ffmpeg to x264 (用在需要x264_10bit时,否则多此一举)
ffmpeg -i input.mkv -f yuv4mpegpipe - | x264 --profile:v high --preset:v veryslow --crf 18 --ref 4 --bframes 5 --demuxer y4m - -o output.mp4
x264 无损压缩
ex4. 内建 x264 无损压缩 RGB24
-i rgb24.mkv -pix_fmt bgr24 -c:v libx264rgb -qp 0 output.mp4
----------------------------------------------------------------
Libx264 位元率控制
推荐 crf,如果需要控制输出大小则用 1-pass crf + 2-pass bitrate
1. Constant Ratefactor (CRF):
ffmpeg -i blu_ray.m2ts -c:v libx264 -crf 20 -c:a copy output.mkv
关键参数: -c:v libx264 -crf xx
2. Custom Bitrate (ABR):
ffmpeg -i blu_ray.m2ts -c:v libx264 -b:v 1000k -c:a copy output.mkv
关键参数: -c:v libx264 -b:v xxxk
3. Custom Bitrate, 2-Pass (VBR):
ffmpeg -i blu_ray.m2ts -an -pass 1 -passlogfile text.log -fastfirstpass 0 -c:v libx264 -b:v 1000k -f null -
ffmpeg -i blu_ray.m2ts -pass 2 -passlogfile text.log -c:v libx264 -b:v 1000k -c:a copy output.mkv
关键参数: -pass n -passlogfile xxx.log -c:v libx264 -b:v xxxk
4. 1st pass crf + 2nd pass bitrate:
因为 crf 的 bitrate 分配方式是最佳的
这么做为了让 2-pass 参考 crf 的 bitrate 分配方式
效果与 crf 相同,多了 2-pass 可修正输出大小
步骤 1: 1-pass crf
ffmpeg -i blu_ray.m2ts -an -pass 1 -passlogfile text.log -fastfirstpass 0 -c:v libx264 -crf 20 -f null -
步骤 2: 2-pass bitrate
ffmpeg -i blu_ray.m2ts -pass 2 -passlogfile text.log -c:v libx264 -b:v 1000k -c:a copy output.mkv
关键参数(1): -pass 1 -passlogfile xxx.log -c:v libx264 -crf xx
关键参数(2): -pass 2 -passlogfile xxx.log -c:v libx264 -b:v xxxk
在 "步骤 1: 1-pass crf" 可以设定输出档案
如果不满意输出档案大小,再用 2-pass bitrate 修正
档案大小符合需求的话,则不须进行 2-pass bitrate
其他 x264 编译版
详情请下载后用 x264 --fullhelp
1. x264.nl
2. x264kMod
3. POP@4bit
封锁日本国外IP,需要使用代理服务器
4. x264tMod
此编译版多了 VSFilter
以下参数组以设备的极限播放能力为准,请搭配 x264 preset 使用
--profile high --level 4.1 --bluray-compat --open-gop --slices 4 --vbv-bufsize 14000 --vbv-maxrate 14000
--profile high --level 4.1 --bluray-compat --open-gop --slices 4 --vbv-bufsize 30000 --vbv-maxrate 30000
DivX Plus HD
--profile high --level 4.0 --vbv-bufsize 25000 --vbv-maxrate 20000
--profile high --level 4.1 --vbv-bufsize 78125 --vbv-maxrate 62500
--profile baseline --level 1.3 --ref 1 --vbv-bufsize 2000 --vbv-maxrate 768
iPhone 3G/3GS, iPod dassic, iPod touch 1/2/3, iPod nano
--profile baseline --level 3.0 --ref 1 --vbv-bufsize 10000 --vbv-maxrate 10000
iPhone 4, iPad 1/2, iPod touch 4/5
--profile main --level 3.1 --vbv-bufsize 14000 --vbv-maxrate 14000
iPhone 4S/5, iPad 3/4/mini, WDTV
--profile high --level 4.1 --vbv-bufsize 78125 --vbv-maxrate 62500
iPod nano 7
--profile high --level 3.0 --vbv-bufsize 12500 --vbv-maxrate 12500
--profile high --level 4.1 --vbv-bufsize 31250 --vbv-maxrate 31250
--profile main --level 3.0 --b-pyramid none --vbv-bufsize 10000 --vbv-maxrate 10000
--profile high --level 4.1 --vbv-bufsize 24000 --vbv-maxrate 24000
※ 参考自 MeGUI
PSV (Version 1.80)
--profile high --level 4.1 --vbv-bufsize 17500 --vbv-maxrate 17500
感谢你的教学
我经常会剪裁影片(去头去尾)
ffmpeg -hide_banner -i "test.MOV" -ss 00:55 -t 00:10 -c:v libx264 -
x264-params crf=22 -an "test.mp4"
要剪10秒的影片我会设crf=22
要剪15秒的影片我会设crf=23
这样有点麻烦
我一直想改成控制输出大小不大于20MB
但一直不成功
不知该如何修改
I love Vancouver!
kobenein wrote:
要剪10秒的影片我会设crf=22
要剪15秒的影片我会设crf=23
这样有点麻烦
我一直想改成控制输出大小不大于20MB
首先 1st-pass crf
ffmpeg -i input.mkv -an -ss 00:55 -t 00:10 -pass 1 -passlogfile text.log -codec:v libx264 -x264opts crf=22 output.mp4
如果输出小于 20MB,则到此为止
如果输出大于 20MB,则删除输出影片,再跑 2nd-pass 指定位元率来强制输出大小
20 MiB = 8 * 20 Mib = 8 * 20 * 1024 * 1024 bits =
P.S. 这边 Ki = 1024, Mi = 1024 K, 1 byte (B) = 8 bits (b)
bits / 10 sec =
bps = ( / 1000) * K bps ~= 16777 K bps
P.S. 这边 K = 1000, M = 1000 K
ffmpeg -i input.mkv -an -ss 00:55 -t 00:10 -pass 2 -passlogfile text.log -codec:v libx264 -b:v 16777k output.mp4
这样 2nd-pass 会参考 crf
22 的 bitrate 分配方式 等比例缩小到 16777 K bps
kingdragon wrote:
首先 1st-pas...(恕删)
不过我实际上是用 165000K / 秒数
不然还是蛮容易超过20MB的
I love Vancouver!&>>&&>>&&>>&H.264 High Profile在视频监控领域的应用前景
H.264 High Profile在视频监控领域的应用前景
来源:安防知识网
[摘要] 现在,视频监控架构主要有三种方式:模拟监控、数字监控和网络监控。模拟监控多采用模拟摄像机+监控矩阵的方式,数字监控多采用模拟摄像机+DVR的方式,就具体应用来说,模数混合架构,即模拟摄像机+监控矩阵+DVR的方式较常见,并已被广泛采用;随着图像压缩存储技术和网络传输技术的发展...
  现在,架构主要有三种方式:模拟监控、数字监控和网络监控。模拟监控多采用模拟摄像机+监控矩阵的方式,数字监控多采用模拟摄像机+DVR的方式,就具体应用来说,模数混合架构,即模拟摄像机+监控矩阵+DVR的方式较常见,并已被广泛采用;随着图像压缩存储技术和网络传输技术的发展,能够满足大多数市场需求的网络监控模式(网络摄像机+平台/NVR)已成为市场主流。
  对于视频监控而言,图像清晰度是一个至关重要的指标。只有图像清晰度上去了,才能使用户体验更好,智能应用等业务准确性更高。而今,高清这个概念已经在市场的角逐中广为使用。近年来,视频压缩技术的发展(以H.264为代表)和网络带宽的不断提升为高清在视频监控领域的普及提供了契机。
  高清的实现,必然要求视频监控解决方案的各环节:视频采集、视频编码压缩、视频传输、视频存储、视频数字信号的控制与交换、视频浏览、录像文件的回放等都支持高清,并且这些环节几乎都对视频编解码有所要求。视频采集,考虑到高清的数据量,很多时候会选择将采集下来的图像进行一定程度的近似无损的压缩(JPEG或M-JPEG多被采用);视频传输和视频序列的数据量有着直接的关系,分辨率越大、清晰度越高,意味着在进行数据传输的时候码流也会增大,因而视频压缩效率越高越能够提高传输的QoS;数据流量的增大也增加了视频存储的压力,视频的编码压缩率直接影响到视频的存储容量;视频的浏览和视频编解码的质量直接关联,清晰度越高,可以容忍的瑕疵也会越少;录像文件的回放和网络适应性、视频编解码的质量挂钩。可见,高清在视频监控中普及的关键在于视频编解码的质量、压缩率以及网络适应性。其中,对编解码最核心的需求是:在尽可能降低码率的同时,使获得尽可能好的图像质量。
  2003年,由IEO/IEC和ITU—T两大国际标准化组织联手推出的视频标准H.264能更好地满足了这一要求。H.264也称为MPEG4-Part10,相较于以前的视频编解码,可以达到更低的码率,更好的图像质量,更好的IP和无线信道适应性。H.264性能得到大幅提升的同时,计算复杂度也大大增加。
  H.264较其他视频编解码标准的优势
  1、支持更小的块(最小可到4×4)和更细的运动矢量(Y分量为1/4像素)。宏块被切分成更多尺寸更小的小块,这样使细小的运动可以更容易地被区分出来,使得运动矢量的精度得以提高,提高了编码质量与效率,节省了码流。
  2、帧内预测。不适合运用运动估计的地方,就采用帧内估计用来消除空间冗余。帧内预测并不是H.264所独有的,但是相对其它编码标准中的帧内变换是在变换域中进行,而H.264的帧内预测是在空间域中进行的。首先根据其周围的宏块内部估计通过在一个预定义的集合上的不同方向的邻近块推测相邻像素来预测当前块。然后预测块和真实块之间的不同点被编码。这种方法对于经常存在空间冗余的平坦背景特别有用,可以节省码流和提高编码质量。
  3、整数DCT4x4变换与量化。MPEG-2、MPEG-4、H.263使用浮点DCT8X8变换。H.264使用更小的4×4块,可以减少块效应和明显的人工痕迹。整数系数消除了在MPEG-2、MPEG-4、H.263中进行浮点系数运算时导致的精度损失。在量化上,量化步长的变化不象以前视频编解码标准中的每次递增一个常量,而是将量化步长的变化幅度控制在12.5%左右,即可以改善编码质量,又提高对码率的控制能力。
  4、熵编码。H.264提供了两种可选方式的熵编码模式:全局UVLC(即UVLC:Universal
VLC)和基于语法的上下文自适应二值算术编码CABAC(Context Adaptive Binary Arithmetic
Coding)。UVLC使用一个相同的码表进行编码,而解码器很容易识别码字的前缀,UVLC
在发生比特错误时能快速获得重同步。UVLC计算复杂度较低,主要针对对编码时间要求很严格的应用,缺点就是效率低,压缩率不高;CABAC其编码性能比
UVLC有提升,但复杂度较高。
  5、多参考帧的运动补偿和加权预测。使用多帧运动补偿可以提高编码质量和效率,且有利于恢复丢包。加权预测可用于修正P帧或B帧内中的运动补偿预测像素的方法,可以提高编码质量。
  6、环内滤波。视频编解码器中加入滤波器的方法有两种:环外滤波器和环内滤波器。环外滤波器只处理编码环路外的显示缓冲器中的数据,所以它不是标准化过程中的规范内容,在标准中只是可选项。相反,环路滤波器处理编码环路中的数据。在编解码器中,被滤波的图像帧作为后续编解码帧运动补偿的参考帧;在解码器中,滤波后的图像输出显示。这要求所有与本标准一致的解码器采用同一个滤波器以与编码器同步。当然如果有必要,解码器也还可以在使用环路滤波器的同时使用后置滤波器。由于考虑了块数据的边界等信息,环内滤波器的效果要好于环外滤波器。H.264采用了环内滤波器,通过对宏块边缘的平滑滤波,
减轻视频编码中的块效应,既减弱“块效应”的影响又避免滤掉图像的客观特征, 同时在相同主观质量下使比特率减少 5%-10%。[nextpage]
  2005年增加的H.264 high
profile,由于其更高的编码压缩率和网络适应性,被很多应用领域关注,其中包括高清视频监控、高清网络摄像机、、无线监控等。
  H.264 High Profile是目前H.264各种profile中编码最高效的Profile。在H.264 Main
Profile的基础上增加了8×8帧内预测、自定义量化矩阵、无损视频编码、支持输入图像为YUV400格式。与其它标准相比,在相同失真率条件下H.264 High
Profile的编码效率提高了50%左右。其中对提升编码压缩率的主要有:CABAC编码、多参考帧、8×8帧内预测、8×8DCT变换。
  H.264能更好地适应网络的多样性
  在概念上可以分为两层:视频编码层(VCL: Video Coding Layer)和网络提取层(NAL : Network Abstraction
Layer)。VCL和NAL分层编码设计的目标就是使H.264标准对各种网络协议有更广泛的适应性,并在一定的网络特性条件下实现最优压缩性能。VCL和NAL在功能上是分工协作的关系,VCL负责基于块的运动补偿混合编码。而NAL专门负责网络的适配,包括为视频编码信息提供文件头信息,以适当的方式对视频数据进行打包和传送。即以NAL包为单位的方式来做为VCL编解码的基本单元,这样网络层拿到NAL包之后只需附加该传输协议的头信息就可以传送出去。可以将NAL当成是一个专做数据封装的模块,用来将VCL压缩过的H.264码流封装成适当大小的数据包,并在数据包头记载数据包的类型,每种类型分别对应到VCL中不同的编解码工具。
  在H.264标准中引入NAL层,其码流结构对网络的适应性更强,增加了差错恢复能力。在这种分层结构中,高编码效率和网络友好性的任务分别由VCL和NAL来完成。利用这种特性,还可以实现对数据的封装和对数据进行更好的优先控制。
  NAL层的另一个重要功能是当网络状况发生恶化时,导致NAL包丢失或者接受次序错乱时,接收方可以根据预设的方案,进行相应的纠错处理。H.264规范中一共规定了12种NAL单元的类型,来定义不同的NAL内容,这样当发生错误时,调度层就可以根据不同的NAL类型做不同的处理操作。这一功能在可靠性较低的网络中,特别有用。
  考虑到H.264 High Profile较诸其他编解码协议在图像质量、数据压缩性能和网络适应性的压倒性的优势,采用H.264 High
Profile的产品会有更大的竞争力,在不远的将来,H.264 High
Profile必然成为视频监控、高清网络摄像机的事实标准。这也对监控行业提出了新的要求,去深入理解并引入H.264 High Profile。
[责任编辑:郭小青]
《安防知识网》新增三个订阅号 微信服务全面升级
转载声明:凡文章来源标明“安防知识网”的文章版权均为本站所有,请不要一声不吭地来拿走,转载请注明出处,违者本网保留追究相关法律责任的权利;所有未标明来源为“安防知识网”的转载文章均不代表本网立场及观点,“安防知识网”不对这些第三方内容或链接做出任何保证或承担任何责任。
赞助商新闻
在2015年霍尼韦尔与中国节能协会和中国标准化研究院资源与环境分院联合推出的《中国智...
2015年9月,财政部推出《财政支持稳增长的政策措施》,认定PPP模式是&稳增长&的重要...
别了2015,也别了民用安防1.0时代……
看过此文章的还看过
安防知识网服务号
深度报道产品、提供解决方案
专家解读技术、最新行业资讯
举办线上线下活动/研讨会
下次自动登录

我要回帖

更多关于 h264 profile 的文章

 

随机推荐