在mini2440上移植使用ffmpeg录像
最近想在板子上插个摄像头,录个像,搞了两三天,算是能用人家的ffmpeg程序在自己的板子上摄像,然后将文件.avi格式保存到PC机上了。过程有些曲折,但是也算乱撞了。
(1)编译x264
官网上下了个最新的x264,地址http://www.videolan.org/developers/x264.html。解压之后,参考【1】用了个./configure --disable-asm,改写了下config.mak,改写ARCH=ARM SYS=LINUX CC=arm-linux-gcc,其中CC写成你自己的交叉编译环境位置,相应的AR、RANLIB也是,我的部分修改的config.mak如下:
prefix=/usr/local
exec_prefix=${prefix}
bindir=${exec_prefix}/bin
libdir=${exec_prefix}/lib
includedir=${prefix}/include
ARCH=ARM
SYS=LINUX
CC=arm-linux-gcc
CFLAGS=-Wshadow -O3 -ffast-math -Wall -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize
DEPMM=-MM -g0
DEPMT=-MT
LD=arm-linux-gcc -o
LDFLAGS= -lm -lpthread
LIBX264=libx264.a
AR=arm-linux-ar rc
RANLIB=arm-linux-ranlib
然后,make make install一下。
(2)编译ffmpeg
官网上下载FFmpeg 0.8.2,地址:http://ffmpeg.org/download.html,然后参考【2】编译使用。将下载的包解压之后运行./configure,后面的记不清了,从config.log中复制出来,如下:
./configure --cross-prefix=arm-linux- --enable-cross-compile --target-os=linux --cc=arm-linux-gcc --arch=arm --prefix=/usr/local/ffmpeg --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-ffmpeg --disable-ffplay --enable-ffserver --enable-swscale --enable-pthreads --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-yasm --disable-stripping
这里没有使用ffplay,需要的可以自己加上,参考【2】中说要用到SDL库,可以试试。在--cc --prefix根据自己的目录修改,然后就是make 和 make install ,之后在--prefix下找到自己要用到的lib include文件夹。
(3)使用ffmpeg录像
将生成的ffmpeg库拷贝到mini2440上,我是用nfs的TCP(参数上加个-o -tcp就可以了,默认是UDP的会断)拷贝的,还好板子闪存够大,近30M东西啊(有空了看能不能精简下)!我是把lib目录下的库文件拷到了板子的默认lib下,所以也就省了export。当然还有ffmpeg程序,保持着nfs,用如下命令试下:#./ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 /mnt/test.avi
补充说明下,我用的是USB摄像头,mini2440支持,生成的是/dev/video0,nfs到主机的跟目录,所以/mnt/test.avi是在主机根目录下生成的。
好了,运行之后看以看到传输,终止程序,能看到生成的test.avi,播放一下(我的是复制到windows下播放的),没调镜头,模糊的图凑合看下吧!
直接在板子上也使用了(没用nfs连接),输出结果如下:
[root@FriendlyARM /]# ./ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 /test.avi
ffmpeg version 0.8.2.git, Copyright (c) 2000-2011 the FFmpeg developers
built on Sep 7 2011 18:15:56 with gcc 4.3.2
configuration: --cross-prefix=arm-linux- --enable-cross-compile --target-os=li
nux --cc=arm-linux-gcc --arch=arm --prefix=/usr/local/ffmpeg --enable-shared --d
isable-static --enable-gpl --enable-nonfree --enable-ffmpeg --disable-ffplay --e
nable-ffserver --enable-swscale --enable-pthreads --disable-armv5te --disable-ar
mv6 --disable-armv6t2 --disable-yasm --disable-stripping
libavutil 51. 16. 0 / 51. 16. 0
libavcodec 53. 13. 0 / 53. 13. 0
libavformat 53. 11. 0 / 53. 11. 0
libavdevice 53. 3. 0 / 53. 3. 0
libavfilter 2. 37. 0 / 2. 37. 0
libswscale 2. 1. 0 / 2. 1. 0
libpostproc 51. 2. 0 / 51. 2. 0
[video4linux2 @ 0x2eae0] Estimating duration from bitrate, this may be inaccurat
e
Input #0, video4linux2, from '/dev/video0':
Duration: N/A, start: 1331454393.212519, bitrate: 4915 kb/s
Stream #0.0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 320x240, 4915 kb/
s, 4 fps, 4 tbr, 1000k tbn, 4 tbc
Incompatible pixel format 'yuyv422' for codec 'mpeg4', auto-selecting format 'yu
v420p'
[buffer @ 0x314f0] w:320 h:240 pixfmt:yuyv422 tb:1/1000000 sar:0/1 sws_param:
[buffersink @ 0x2ffa0] auto-inserting filter 'auto-inserted scaler 0' between th
e filter 'src' and the filter 'out'
[scale @ 0x302d0] w:320 h:240 fmt:yuyv422 -> w:320 h:240 fmt:yuv420p flags:0x4
Output #0, avi, to '/test.avi':
Metadata:
ISFT : Lavf53.11.0
Stream #0.0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 320x240, q=2-31, 200
kb/s, 4 tbn, 4 tbc
Stream mapping:
Stream #0.0 -> #0.0 (rawvideo -> mpeg4)
Press [q] to stop, [?] for help
frame= 3 fps= 0 q=2.0 size= 13kB time=00:00:00.75 bitrate= 137.2kbits/s
frame= 5 fps= 3 q=2.0 size= 17kB time=00:00:01.50 bitrate= 91.5kbits/s
frame= 7 fps= 3 q=2.0 size= 21kB time=00:00:02.25 bitrate= 74.9kbits/s
frame= 9 fps= 3 q=2.0 size= 25kB time=00:00:02.75 bitrate= 74.0kbits/s
frame= 11 fps= 3 q=2.0 size= 29kB time=00:00:03.50 bitrate= 68.0kbits/s
frame= 13 fps= 3 q=1.6 size= 37kB time=00:00:04.00 bitrate= 75.2kbits/s
frame= 13 fps= 3 q=1.6 Lsize= 37kB time=00:00:04.00 bitrate= 75.8kbits/
s
video:31kB audio:0kB global headers:0kB muxing overhead 19.076962%
Received signal 2: terminating.
[root@FriendlyARM /]# ls
bin home mnt sbin udisk
dev lib opt sys usr
etc linuxrc proc test.avi var
ffmpeg lost+found root tmp www
可能有些摄像头不支持v4l2或者板子本身不支持造成无法使用,希望注意,找到解决方法的留言告知,十分感谢!
最后想说下的是,我下的ffmpeg中怎么没有网上说的Output_example.c等例程,希望知道的人告诉我一下,谢谢!有问题的请留言!
参考文章:
【1】http://club.topsage.com/thread-2127234-1-1.html
【2】http://blog.csdn.net/liaozc/article/details/6025610
【3】http://blog.csdn.net/dongliqiang2006/article/details/5869002
在mini2440上移植使用ffmpeg录像相关推荐
- 在arm linux mini2440上移植ntp服务,RTEMS 4.9.5 在 QEMU MINI2440 上的移植发布啦……
(本文原创,转载请注明出处,谢谢) 这两天抽了个空,在rickleaf移植的 qemu mini2440 的rtems 4.9.5 bsp 上做了一些修改: 1.原来mini2440的 bsp是基于 ...
- linux内核添加usb键盘驱动,配置USB外设 - linux-2.6.32在mini2440开发板上移植_Linux编程_Linux公社-Linux系统门户网站...
linux-2.6.32在mini2440开发板上移植 配置USB外设 [日期:2013-04-08] 来源:Linux社区 作者:ssdsafsdsd [字体:大 中 小] 编者:因为LINUX内核 ...
- 在android上移植ios
2019独角兽企业重金招聘Python工程师标准>>> Android与IOS是最受人们欢迎的两大移动平台,Android与IOS之争是一个永久的话题.接下来笔者就结合自己的知识和网 ...
- OpenCV在G-API上移植各向异性图像分割
OpenCV在G-API上移植各向异性图像分割 在G-API上移植各向异性图像分割 介绍 快速入门:使用OpenCV后端 检查calcGST() 运行G-API图 G-API初始版本:完整列表 检查初 ...
- ucos-ii在ARM7上移植
随着嵌入式技术的快速发展,实时多任务操作系统作为一种软件平台已逐步成为国际嵌入式系统的主流,目前世界上已经有一大批成熟的实时嵌入式操作系统,通常,对嵌入式软件的基本要求是体积小.指令速度快.具有较好的 ...
- STM32F407+CubeMX+Keil上移植RTX5实时系统
文章目录 一.前言 二.CubeMX 2.1.RCC 与 Clock Configuration 2.2.SYS 2.3.GPIO 2.4.Project Manager 三.Keil 3.1.Tar ...
- stm32移植paho_如何在STM32上移植Linux?超详细的实操经验分享
原标题:如何在STM32上移植Linux?超详细的实操经验分享 刚从硬件跳槽为嵌软时,没有任何一丝的准备.一入职,领导就交代了一项特难的任务--在stm32上移植linux! 瞬间我就懵了,没办法硬着 ...
- 如何使用Screenflick在Mac上创建延时屏幕录像?
如何使用Screenflick在Mac上创建延时屏幕录像?Screenflick使用相对少量的磁盘空间和性能,可以使长时间录制的录音非常高效,同时还消耗了笔记本电脑的电量.这种效率为实际记录的应用留下 ...
- 基于mini2440嵌入式linux上整合一套Domoticz智能家居系统(八)使用domoticz+mosquitto+Android客户端实现控制mini2440上的LED(一)
本篇将在上一篇交叉编译paho.mqtt.embedded-c官方的源代码例程基础上,稍作修改,尝试实现domoticz+mosquitto联合做服务器,使用Android客户端APP或浏览器对min ...
最新文章
- iOS上获取iTunes音乐权限
- 保护模式及其编程——8086系统寄存器和系统指令
- PMCAFF | 知识梳理:30分钟搞定用户需求
- 科大星云诗社动态20210821
- Visual Studio 2022 17.1 正式发布,5个新亮点!
- 性能调优从哪方面入手?
- centos没有可用软件包 mysql-server_centos7解决yum install mysql-server没有可用包?
- Java基础学习总结(160)——JDK15正式发布,划时代的ZGC同时宣布转正
- 【转】Linq 求和,求平均值,求最大,求最小,分组,计数
- C语言入门(15道经典题目)
- 三菱plc 毕设_三菱plc编程上传/下载程序步骤
- 单片机-节日彩灯控制器
- Houdini+UE4制作好看的地形(材质篇)
- MacOS Mojave/Catalina和Windows安装佳能LBP2900打印机驱动教程
- 电视剧《乡村爱情2》之演员表(ZT)
- 智慧农业物联网应用案例介绍
- 常见的软件系统集成方式和Smartbi集成解决方案
- 2019互联网BATJ等大厂中秋礼盒大PK
- 2020 dns排名_2020年最快的dns是多少_动漫台
- M1 MacBook的Parellel Desktop(PD)使用问题记录