最简单的让IjkPlayer自动旋转带有rotation视频的方法
问题
在项目里面我们使用了ijkplayer0.8.8版本去播放网络视频,发现有一些视频播放时被拉伸了。如下图:
把视频抓下来查明原因,发现是视频metadata里面带了rotation信息,而视频的宽高被调换了。
解决方法
官方的解决方法是给一个ROTATION_CHANGE的回调给上层,然后上层去把View做旋转。这样实在是太麻烦。我但是很奇怪的是ijkplayer本身是基于ffplay做的,而ffplay本身是支持这一类视频的旋转播放的。看了一下ijkplayer的代码,在ff_play.c里面发现如下代码:
if (ffp->autorotate) {double theta = get_rotation(is->video_st);if (fabs(theta - 90) < 1.0) {INSERT_FILT("transpose", "clock");} else if (fabs(theta - 180) < 1.0) {INSERT_FILT("hflip", NULL);INSERT_FILT("vflip", NULL);} else if (fabs(theta - 270) < 1.0) {INSERT_FILT("transpose", "cclock");} else if (fabs(theta) > 1.0) {char rotate_buf[64];snprintf(rotate_buf, sizeof(rotate_buf), "%f*PI/180", theta);INSERT_FILT("rotate", rotate_buf);}}
原来ffplay本身确实有手动做过transpose的逻辑,但是这个逻辑在ijkplayer里面并没有生效,在ijkmedia/ijkplayer/config.h
文件里面CONFIG_AVFILTER
选项被关闭了。于是把这个选项打开之后重新编译,视频的播放终于自动旋转了。需要注意的是如果ffmpeg选项里面没有打开avfilter,则需要先去编译打开avfilter的ffmpeg到项目中才行。
总结
本来我一开始是准备在渲染的部分去对MVP做矩阵旋转。这样基本不会增加任何的CPU消耗,不过修改成本比较高一些,而且需要自己维护,考虑到这一类视频本身很少,所以这个成本也就忽略了。
最简单的让IjkPlayer自动旋转带有rotation视频的方法相关推荐
- IOS应用开发之自动旋转与调整大小
苹果的产品iPad和iPhone都是支持自动旋转的,因而我们写的程序也要支持两种视图:纵向和横向. 默认情况下,我们写的程序都是纵向的,就像前边的几个例子中那样.如果运行以前写的程序,当把模拟器旋转, ...
- iOS开发:自动旋转与调整大小
苹果的产品iPad和iPhone都是支持自动旋转的,因而我们写的程序也要支持两种视图:纵向和横向. 默认情况下,我们写的程序都是纵向的,就像前边的几个例子中那样.如果运行以前写的程序,当把模拟器旋转, ...
- iphone自动旋转与调整大小
转自http://my.oschina.net/plumsoft/blog/47289 苹果的产品iPad和iPhone都是支持自动旋转的,因而我们写的程序也要支持两种视图:纵向和横向. 默认情况下, ...
- iOS开发7:自动旋转与调整大小
iOS开发7:自动旋转与调整大小 收藏 分享到 发表于 2012-08-31 • 16285 次查看 苹果的产品iPad和iPhone都是支持自动旋转的,因而我们写的程序也要支持两种视图:纵向和 ...
- iOS开发屏幕自动旋转与调整大小
原文链接地址: http://ytwhw.iteye.com/blog/1767465 在此谢谢原博主的精心整理! 关注小白,共同成长! 苹果的产品iPad和iPhone都是支持自动旋转的,因而我们写 ...
- iPhone之横竖屏与自动旋转
iPhone的自动旋转功能一共有三种方法: 使用自动调整属性处理旋转,利用系统自动生成的代码. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIIn ...
- IOS6屏幕旋转详解(自动旋转、手动旋转、兼容IOS6之前系统)
转自 http://blog.csdn.net/zzfsuiye/article/details/8251060 概述: 在iOS6之前的版本中,通常使用 shouldAutorotateToInte ...
- windows禁用屏幕旋转_如何在Windows 10中禁用屏幕自动旋转
windows禁用屏幕旋转 Windows 10 can automatically rotate your display if you have a convertible PC or table ...
- 浏览器自动旋转图片问题的解决方式
我们在上传拍摄照片的时候 由于手机拍摄角度问题,照片有orientation属性存储旋转角度,在显示照片时,html标签不会对旋转做处理,会导致照片自动旋转了,而使用浏览器打开,由于浏览器会对旋转属性 ...
- iOS的横竖屏切换旋转(禁自动旋转)
这次做了视频的播放器,坑啊 ,好多,这不,刚刚爬上来,就来帮后来者填坑... 首先先说下横竖屏切换旋转的坑吧,,, 1. 在AppDelegate.h文件中 声明一个变量, @property (no ...
最新文章
- python字典去重
- html省市联动插件,jquery实现的交互体验更友好省市区三级联动插件
- 3.1.5 动态分区分配算法
- 汇编-子程序参数传递的三种方式-寄存器法,堆栈法,参数赋值法【详述后两者】
- Linu解决oracle连接不稳定
- 【转】MySQL中select * for update锁表的问题
- C#串口SerialPort常用属性方法
- 数学里的π究竟牛在哪里
- java瞎子_Java学习路线,及各方面知识点
- 前端每日实战:151# 视频演示如何用纯 CSS 创作超能陆战队的大白
- 2020统计局的行政划分表_湖州市有几个区和县?湖州市2020年县级以上区划名单...
- AD9361 介绍 (上)
- 推送微信公众号模板消息通知(Java版)
- 基于Python的南京二手房数据采集及可视化分析设计
- 2021好看小说推荐(持续更新中)
- 水果店毛利点计算公式,水果店月度毛利怎么算
- 【解决】mac移动硬盘只读错误,不丢失资料
- Java实现扑克牌程序(数据结构)
- STM32入门(十二)----RCC
- Emacs org 转换成freemind
热门文章
- 51cto python数据分析系列课程 55g_Python 3 数据分析与挖掘系列课程完整版
- CodeForces - 407C C - Curious Array 高阶差分序列
- Unity Remote5 使用
- 是否应该删除Windows 7 Service Pack备份文件以节省空间?
- xp iis访问元数据库失败
- 计算机维护费可以跨年吗,税控技术维护费跨年可以抵扣吗_增值税
- iapp禁止抓包软件代码
- 深度学习与神经网络之 反卷积/转置卷积 (deconvolution/transposed convolution/fractional strided convolution) (upsample)
- 51单片机按键:短按,长按,按下执行松开停止
- [操作系统] elementary os系统美化插件