关于视频画面裁切功能
2017-05-09 11:48
120 查看
想要将大的h264画面裁切为里面小的某一部分当做新的视频,大部分人的想法是先将h264解码,然后yuv拷贝为小画面,然后再重新编码。
然后解码和编码都非常耗资源,即便是可以使用GPU硬件加速,但有时候项目使用的是vm虚拟机,这时候硬件加速也用不上了。那怎么办呢?
这里有个好的办法。首先h264里面sps有以下变量
bool frame_cropping_flag;
int frame_crop_left_offset;
int frame_crop_right_offset;
int frame_crop_top_offset;
int frame_crop_bottom_offset;
那么修改这些变量是否有效呢?
通过代码先解析原视频h264sps各个变量,然后重新生成新的sps
这里要注意的是sps的分辨率计算
然后解码和编码都非常耗资源,即便是可以使用GPU硬件加速,但有时候项目使用的是vm虚拟机,这时候硬件加速也用不上了。那怎么办呢?
这里有个好的办法。首先h264里面sps有以下变量
bool frame_cropping_flag;
int frame_crop_left_offset;
int frame_crop_right_offset;
int frame_crop_top_offset;
int frame_crop_bottom_offset;
那么修改这些变量是否有效呢?
通过代码先解析原视频h264sps各个变量,然后重新生成新的sps
这里要注意的是sps的分辨率计算
width = ((pic_width_in_mbs_minus1 +1)*16) - frame_crop_left_offset*2 - frame_crop_right_offset*2; height= ((2 - frame_mbs_only_flag)* (pic_height_in_map_units_minus1 +1) * 16) - \ (frame_crop_top_offset * 2) - (frame_crop_bottom_offset * 2); 第二注意的是解析和编码sps时的指数哥伦布编码 修改后结果是window media player 和vlc,QQ播放器,potplayer都是正常播放的,但是浏览器(chrome)等等播放的画面是原图像左上角的,也就是
frame_crop_left_offset无效,可以看看附件的dd.mp4,浏览器播放明显不正常,这应该是chrome没处理好crop信息
相关文章推荐
- 关于视频编码有刀切感觉画面的原因
- 视频播功能及画面协同操作注意事项
- 关于在系统中插入视频聊天的功能问题
- 关于优酷开放SDK视频播放功能的解析
- 有关于图片组合成视频的功能
- 关于视频转码后只有声音没有画面的问题
- 关于Android 使用MediaRecorder实现录制视频开始暂停和结束功能的说明
- 关于在系统中插入视频聊天的功能问题
- iOS 关于启动app循环播放视频功能(常用于登录时)
- vc++学习篇(二)——打印和视频功能的实现
- 关于在ehlib的DBGridEh控件中使用过滤功能的方法
- 关于某些用户恶意利用Blog功能的公告
- 请教关于视频播放的问题
- 用DirectShow实现QQ的音视频聊天功能
- vc++学习篇(二)——打印和视频功能的实现
- 关于DOM Explorer插件的功能和问题
- 基于AjaxHelper0.41的相册范例程序演示及一个关于博客园的功能建议
- 关于视频直播的技术
- 关于OA功能的一点看法
- 关于myEclipse3.8.1以上JSP format功能取消