手刹CLI裁员问题

时间:2013-03-06 15:37:28

标签: math video html5-video

我喜欢Handbrake CLI,并将其用于我创建的内部工具,以帮助将大型未压缩视频转换为HTML5就绪MP4。

这对您的普通高清电影(1920x1080 / 1280x720)非常有效,但是当您从YouTube添加720p视频时效果不佳,例如黑色条已被编码器自动删除。

这意味着输入视频的分辨率为1280x528(而不是720高度,因为它缺少黑条)。

所以,为了适应我的预览面板,我必须做的是缩放视频以适应面板的高度,然后裁剪多余的宽度。

基本的逻辑,基本的数学,但是手刹会扭曲整个事情并让我疯狂。

这是我正在使用的行:

  

./ HandBrakeCLI -i Man_of_Steel.mp4 -e x264 -a none -q 25 -f mp4 -o   test.mp4 --optimize -w 714 -l 402 --start-at duration:1 --stop-at duration:3 --crop 0:0:130:130

这样可以节省3秒的预览时间。

  

数学是:

     

int scaledWidth;
  int scaledHeight;

     

int targetWidth = 714;

     

int targetHeight = 402;

     

float scaleFactor =(float)targetHeight / videoHeight; //缩放以适应高度

     

scaledWidth =(float)videoWidth * scaleFactor; //出现为974

     

scaledHeight =(float)videoHeight * scaleFactor; //结果为402

     

int offset =(scaledWidth - targetWidth); //以130px的形式出现   需要在每一侧裁剪

然而,视频出现了扭曲! 通过反复试验,我找出了正确的偏移,使它看起来很好 169 ,只是我不知道为什么这是正确的价值。

任何人都可以帮我弄清楚出了什么问题吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您的数字表明offset适用于原始视频,即首先移动然后缩放。此外,你必须除以2,因为你希望整个边距在两边均匀分布。

int offset = (scaledWidth - targetWidth)/(2 * scaleFactor)
     170   = (    974     -     714    )/(2 * (402 / 528))