通过ffplay实现摄像头preview

硬件平台:Jetson TK1 开发板(NVIDIA Tegra K1 Mobile Processor 32bit),宁波舜宇光电SP103A(OV16825)模组
软件平台:Ubuntu/Linaro 4.8.2-16ubuntu4(Linux version 3.10.40 32bit)

摄像头驱动已经实现,支持v4l2的接口。

首先安装SDL库,第一次通过源代码安装的SDL-1.2.14版本,使用时总是提示SDL初始化失败。第二次先输入命令“sudo apt-get remove libsdl1.2debian”,“sudo apt-get install libsdl1.2-dev”,再通过源代码安装SDL-1.2.15问题解决了。

然后安装x264,步骤比较简单
$git clone git://git.videolan.org/x264.git
$cd x264
$./configure
$make
$sudo make install

最后安装ffmpeg,通过git下载官网最新的版本,当前版本是2.8版本,通过configure --enable-memalign-hack --enable-static,make, sudo make install安装就可以了。

我们的驱动输出的是sensor的原始数据,为bayer raw10格式,每个颜色占用16bit,只有低10位是有效数据,顺序为bggr。ffmpeg的原始代码是不支持raw10的,需要做一定的修改。原始代码支持bayer raw8和bayer raw16, 因为bayer raw10和bayer raw16一样都是占用两个字节,所以我们参考bay raw16修改。首先在libavdevice/v4l2-common.c中的ff_fmt_conversion_table中增加一项,这里我们直接借用raw16格式,在应用看来raw10作为raw16处理,在v4l2接口调用时使用V4L2_PIX_FMT_SBGGR10。

{ AV_PIX_FMT_BAYER_BGGR16LE, AV_CODEC_ID_RAWVIDEO, V4L2_PIX_FMT_SBGGR10 },

对于raw16,目前的代码在libswscale/bayer_template.c中BAYER_SHIFT设置为8,表示低位的8位直接舍弃,因为raw10只能舍弃低2位,所以我们将BAYER_SHIFT设置为2。

为了方便调试可以将libavutil/log.c中av_log_level从AV_LOG_INFO改成AV_LOG_TRACE,输出更多信息。

做完以上修改后重新编译,安装ffmpeg,然后使用命令"ffplay -f v4l2 -input_format bayer_bggr16le -video_size 4608x3456 -i /dev/video0"就可以实现预览了,如果还是提示SDL初始化失败,可以在shell中输入DISPLAY=:0和export DISPLAY命令设置一下DISPLAY。

通过ffplay实现摄像头preview的更多相关文章

  1. Android 用MediaCodec实现视频硬解码(转)

    本文向你讲述如何用android标准的API (MediaCodec)实现视频的硬件编解码.例程将从摄像头采集视频开始,然后进行H264编码,再解码,然后显示.我将尽量讲得简短而清晰,不展示 那些不相 ...

  2. Android 用MediaCodec实现视频硬解码

    http://blog.csdn.net/halleyzhang3/article/details/11473961 http://www.360doc.com/content/14/0119/10/ ...

  3. 基于flash的web视频对讲直播测试

    由于项目的需求,要在web上实现视频通话的需求.现成的方案有WebRTC,基于浏览器的成熟方案,但是这个方案和公司项目需求有几个点冲突.后来考虑到基于flash的方案.参考雷神的博客 simplest ...

  4. FFmpeg采集音视频数据命令

    文章转自:https://www.jianshu.com/p/4709ccbda3f9 1.ffmpeg 把文件当做直播推送至服务器 (RTMP + FLV) ffmpeg - re -i demo. ...

  5. ffplay 播放网络摄像头视频

    shell脚本如下,无须加port ffplay rtsp://cameral_ip

  6. 摄像头视频捕捉(简单通用--通过IsampleGrabberCB实现)

    前言 DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布.DirectShow为多媒体流的捕捉和回放提供了强有力的支持.用Direct ...

  7. linux下motion摄像头监控编译与配置

    利用linxu下的开源的motion搭建嵌入式视频动态监控系统 所谓移动图像监测,简单来说就是利用摄像头定点监测某个区域,当有移动物体经过时,摄像头便自动抓拍(要监测多大物体.按拍照速率都是可调的), ...

  8. matlab2015b调用摄像头

    参考链接:http://blog.csdn.net/lyqmath/article/details/7307429 本人电脑是宏碁T5000 调用代码: % By lyqmathclc; clear ...

  9. MTK 平台上查询当前使用的摄像头模组及所支持预览分辨率

    1,MTK 平台如何查询当前使用的是哪颗摄像头及相关的模组信息? 在该目录下可以查到当前平台及相关项目的配置文件 ProjectConfig.mk \ALPS.JB.MP.V1_W_20120919\ ...

随机推荐

  1. Python中文分词 jieba

    三种分词模式与一个参数 以下代码主要来自于jieba的github,你可以在github下载该源码 import jieba seg_list = jieba.cut("我来到北京清华大学& ...

  2. Java代码实现单例模式

    public class Single { /*private static final Single single=new Single(); private Single(){} public s ...

  3. spark job运行参数优化

    http://www.cnblogs.com/LBSer/p/4129481.html 一.问题 使用spark join两张表(5000w*500w)总是出错,报的异常显示是在shuffle阶段. ...

  4. MYSQL根据字段名查询所属表

    MYSQL里面需要根据某个字段名,查询该字段名所在的表.这种情况主要是出现在比如你忘了表名,只知道有这样一个字段名,想找出那张表.第二种情况可能是,同一个字段名属于外键,你想找出例如  ID 这个字段 ...

  5. 在Eclipse中,用XFire发布web服务

    配置及相关说明见http://www.cnblogs.com/xshy3412/archive/2007/09/29/910848.html 仅确定发布xfire需要的最基本的jar activati ...

  6. QlikView sheet权限

    最近遇到了个新问题,需要针对不同的sheet设置不同的权限,具体是用户登录不同账户,可以看到统一文档的不同sheet 对于Qlikview权限设置就不做描述,下面直接进行sheet操作 第一步,打开脚 ...

  7. [转]C#综合揭秘——Entity Framework 并发处理详解

    本文转自:http://www.cnblogs.com/leslies2/archive/2012/07/30/2608784.html 引言 在软件开发过程中,并发控制是确保及时纠正由并发操作导致的 ...

  8. sql语句中出现笛卡尔乘积 SQL查询入门篇

    2014-12-29  凡尘工作室   阅 34985  转 95 本篇文章中,主要说明SQL中的各种连接以及使用范围,以及更进一步的解释关系代数法和关系演算法对在同一条查询的不同思路. 多表连接简介 ...

  9. IE浏览器版本的判断

    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 && userAgent.indexOf(; //判断是否IE< ...

  10. clipboard.js实现复制功能

    项目地址:https://github.com/zenorocha/clipboard.js 现代化的“复制到剪切板”插件.不包含 Flash.gzip 压缩后仅 3kb. 为什么使用它 复制文字到剪 ...