通过ffplay实现摄像头preview
通过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的更多相关文章
- Android 用MediaCodec实现视频硬解码(转)
本文向你讲述如何用android标准的API (MediaCodec)实现视频的硬件编解码.例程将从摄像头采集视频开始,然后进行H264编码,再解码,然后显示.我将尽量讲得简短而清晰,不展示 那些不相 ...
- Android 用MediaCodec实现视频硬解码
http://blog.csdn.net/halleyzhang3/article/details/11473961 http://www.360doc.com/content/14/0119/10/ ...
- 基于flash的web视频对讲直播测试
由于项目的需求,要在web上实现视频通话的需求.现成的方案有WebRTC,基于浏览器的成熟方案,但是这个方案和公司项目需求有几个点冲突.后来考虑到基于flash的方案.参考雷神的博客 simplest ...
- FFmpeg采集音视频数据命令
文章转自:https://www.jianshu.com/p/4709ccbda3f9 1.ffmpeg 把文件当做直播推送至服务器 (RTMP + FLV) ffmpeg - re -i demo. ...
- ffplay 播放网络摄像头视频
shell脚本如下,无须加port ffplay rtsp://cameral_ip
- 摄像头视频捕捉(简单通用--通过IsampleGrabberCB实现)
前言 DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布.DirectShow为多媒体流的捕捉和回放提供了强有力的支持.用Direct ...
- linux下motion摄像头监控编译与配置
利用linxu下的开源的motion搭建嵌入式视频动态监控系统 所谓移动图像监测,简单来说就是利用摄像头定点监测某个区域,当有移动物体经过时,摄像头便自动抓拍(要监测多大物体.按拍照速率都是可调的), ...
- matlab2015b调用摄像头
参考链接:http://blog.csdn.net/lyqmath/article/details/7307429 本人电脑是宏碁T5000 调用代码: % By lyqmathclc; clear ...
- MTK 平台上查询当前使用的摄像头模组及所支持预览分辨率
1,MTK 平台如何查询当前使用的是哪颗摄像头及相关的模组信息? 在该目录下可以查到当前平台及相关项目的配置文件 ProjectConfig.mk \ALPS.JB.MP.V1_W_20120919\ ...
随机推荐
- Web服务端性能提升实践
随着互联网的不断发展,日常生活中越来越多的需求通过网络来实现,从衣食住行到金融教育,从口袋到身份,人们无时无刻不依赖着网络,而且越来越多的人通过网络来完成自己的需求. 作为直接面对来自客户请求的Web ...
- Java Graphics 图形绘制
Graphics类提供基本绘图方法,Graphics类提供基本的几何图形绘制方法,主要有:画线段.画矩形.画圆.画带颜色的图形.画椭圆.画圆弧.画多边形.画字符串等. 画线段 drawLine pub ...
- 基于json-lib-2.2.2-jdk15.jar的JSON解析工具类大集合
json解析之前的必备工作:导入json解析必须的六个包 资源链接:百度云:链接:https://pan.baidu.com/s/1dAEQQy 密码:1v1z 代码示例: package com.s ...
- MongoDB之数据库管理
前面补充过把MongoDB作为服务,今天主要了解数据库管理,在操作之前先把MongoDB服务打开. 一.显示数据库清单 如果想查看数据库列表可以使用show dbs. 二.切换数据库 通过使用Mong ...
- Task.Factory.StartNew和Task.Run
在系统中单开线程进行操作,经常用到Task,发现Task主要有以下两种方法 Task.Factory.StartNew(() => { }); Task.Run(() => { }); 初 ...
- Iframe内联框架
iframe:内联框架标签,用于在网页中任意的位置嵌入另一个网页 <iframe src="url地址"> </iframe> iframe标签的常用属性 ...
- [转] 疯狂的JSONP
何为跨域?何为JSONP?JSONP技术能实现什么?是否有必要使用JSONP技术? 跨域 就是由于JavaScript同源策略的限制,使得a.com域名下的js无法操作b.com或c.a.com域 ...
- 添加List集合覆盖问题
今天在做一个项目的时候,发现了这样一个问题,为了让大家看得更直接明了,我直接放代码: public void InsertObjectToList(){ List<NewsProtetype&g ...
- 三角形-->九九乘法表
使用嵌套循环打印九行*组成的三角形: * ** *** ...... *********(9个) public class Triangle { /** * 使用嵌套循环打印九行*组成的三角形 */ ...
- 为 HTTP/2 头压缩专门设计的 HPACK
HTTP/2 对消息头采用 HPACK 进行压缩传输,能够节省消息头占用的网络的流量.如何理解 HPACK 压缩呢? 如果我们约定将常用的请求头的参数用一些特殊的编号来表示,比如 GET ...