交叉编译工具:arm-linux-gcc

一.先下载一下文件

1. yasm-1.2.0.tar.gz

2. x264-snapshot-20140424-2245.tar.bz2

3. xvidcore-1.1.3.tar.gz

4. SDL-1.2.15.tar.gz

5.  ffmpeg-1.2.2.tar.gz

链接如下

1. yasm-1.2.0.tar.gz

http://download.csdn.net/detail/zengzhihao/7677671

2. x264-snapshot-20140424-2245.tar.bz2

http://download.csdn.net/detail/zengzhihao/7677707

3. xvidcore-1.1.3.tar.gz

http://download.csdn.net/detail/zengzhihao/7677717

4. SDL-1.2.15.tar.gz

http://download.csdn.net/detail/zengzhihao/7677691

5.  ffmpeg-1.2.2.tar.gz

http://download.csdn.net/detail/zengzhihao/7677745

二.逐个编译上面源文件

/usr/local/ffmpeg_arm:依赖的库文件目录,目标目录,库目录

1. yasm-1.2.0.tar.gz

tar -zxvf yasm-1.2.0.tar.gz && cd yasm-1.2.0 && ./configure --prefix=/usr/local/ffmpeg_arm --host=arm-linux && make&&make install && cd ../

2. x264-snapshot-20140424-2245.tar.bz2

tar -jxvf x264-snapshot-20140424-2245.tar.bz2 && cd x264-snapshot-20140424-2245 && ./configure  --enable-shared --prefix=/usr/local/ffmpeg_arm --host=arm-linux --cross-prefix=arm-linux- --disable-asm && make && make install && cd ../

3. xvidcore-1.1.3.tar.gz

3.1

tar -zxvf xvidcore-1.1.3.tar.gz && cd xvidcore-1.1.3/build/generic

3.2
vi configure
修改$CC为gcc
4361         gcc -o gcc-ver test.c

3.3
./configure --prefix=/usr/local/ffmpeg_arm --host=arm-linux --target=arm-linux && make && make install && cd ../../../

4. SDL-1.2.15.tar.gz

tar -zxvf SDL-1.2.15.tar.gz && cd SDL-1.2.15 && ./configure --enable-shared --prefix=/usr/local/ffmpeg_arm --host=arm-linux  --disable-video-x11 --disable-input-tslib --disable-esd --disable-arts --disable-nasm  --disable-alsa   --disable-video-nanox --disable-video-qtopia --disable-video-photon  --disable-video-ggi --disable-video-svga --disable-video-aalib --disable-video-dummy --disable-video-dga --disable-arts && make && make install && cd ../

5.  ffmpeg-1.2.2.tar.gz

5.1
tar -zxvf ffmpeg-1.2.2.tar.gz && cd ffmpeg-1.2.2 

5.2

vi configure
修改configure的SDL_CONFIG
3973 SDL_CONFIG="${cross_prefix}sdl-config"

3973 SDL_CONFIG="/usr/local/ffmpeg_arm/bin/sdl-config"

5.3
 ./configure --cross-prefix=/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux- --prefix=/usr/local/ffmpeg_arm --enable-shared --enable-cross-compile --arch=armv7   --target-os=linux --cc=arm-linux-gcc --enable-libxvid --enable-libx264 --enable-gpl --enable-pthreads   --disable-ffserver --enable-ffmpeg --disable-ffprobe --enable-ffplay  --enable-avfilter --disable-network  --enable-runtime-cpudetect --disable-indevs --ar=arm-linux-ar --ld=arm-linux-gcc --strip=arm-linux-strip --extra-cflags=-I/usr/local/ffmpeg_arm/include --extra-ldflags=-L/usr/local/ffmpeg_arm/lib

5.4 检查ffplay是否包含"CONFIG_FFPLAY=yes" 没有则说明有问题
vi config.mak

CONFIG_FFPLAY=yes

5.5
make && make install

6 拷贝/usr/local/ffmpeg_arm到开发板上运行

7 删除多余的文件

ffplay 使用示例

01.1) 播放 test.mp4 ,播放完成后自动退出
02.ffplay -autoexit test.mp4
03. 
04.2) 以 320 240 的大小播放 test.mp4
05.ffplay -x 320 -y 240 test.mp4
06. 
07.3) 将窗口标题设置为 "myplayer",循环播放 2 
08.ffplay -window_title myplayer -loop 2 test.mp4
09. 
10.4) 播放 双通道 32K 的 PCM 音频数据
11.ffplay -f s16le -ar 32000 -ac 2 test.pcm

更多 ffplay 可用选项,可以使用 ffplay -h 获取

所有的命令如下列表所示。

名称

有参数

作用

x

Y

强制屏幕宽度

y

Y

强制屏幕高度

s

Y

强制屏幕大小

fs

N

全屏

an

N

关闭音频

vn

N

关闭视频

ast

Y

设置想播放的音频流(需要指定流ID)

vst

Y

设置想播放的视频流(需要指定流ID)

sst

Y

设置想播放的字幕流(需要指定流ID)

ss

Y

从指定位置开始播放,单位是秒

t

Y

播放指定时长的视频

nodisp

N

无显示屏幕

f

Y

强制封装格式

pix_fmt

Y

指定像素格式

stats

N

显示统计信息

idct

Y

IDCT算法

ec

Y

错误隐藏方法

sync

Y

视音频同步方式(type=audio/video/ext)

autoexit

N

播放完成自动退出

exitonkeydown

N

按下按键退出

exitonmousedown

N

按下鼠标退出

loop

Y

指定循环次数

framedrop

N

CPU不够的时候丢帧

window_title

Y

显示窗口的标题

rdftspeed

Y

Rdft速度

showmode

Y

显示方式(0 = video, 1 = waves, 2 = RDFT)

codec

Y

强制解码器

项目组成

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了领先的音/视频编码库libavcodec等。

libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构

和读取音视频帧等功能;

libavcodec:用于各种类型声音/图像编解码;

libavutil:包含一些公共的工具函数;

libswscale:用于视频场景比例缩放、色彩映射转换;

libpostproc:用于后期效果处理;

ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等;

ffsever:一个 HTTP 多媒体即时广播串流服务器;

ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示;

4命令集

ffmpeg 命令集举例

1.获取视频的信息

ffmpeg -i video.avi

2.将图片序列合成视频

ffmpeg -f image2 -i image%d.jpg video.mpg

上面的命令会把当前目录下的图片(名字如:image1.jpg. image2.jpg. 等…)合并成video.mpg

3.将视频分解成图片序列

ffmpeg -i video.mpg image%d.jpg

上面的命令会生成image1.jpg. image2.jpg. …

支持的图片格式有:PGM. PPM. PAM. PGMYUV. JPEG. GIF. PNG. TIFF. SGI

4.为视频重新编码以适合在iPod/iPhone上播放

ffmpeg -i source_video.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320×180 -title X final_video.mp4

说明:

* 源视频:source_video.avi

* 音频编码:aac

* 音频位率:128kb/s

* 视频编码:mpeg4

* 视频位率:1200kb/s

* 视频尺寸:320 X 180

* 生成的视频:final_video.mp4

5.为视频重新编码以适合在PSP上播放

ffmpeg -i source_video.avi -b 300 -s 320×240 -vcodec xvid -ab 32 -ar 24000 -acodec aac final_video.mp4

说明:

* 源视频:source_video.avi

* 音频编码:aac

* 音频位率:32kb/s

* 视频编码:xvid

* 视频位率:1200kb/s

* 视频尺寸:320 X 180

* 生成的视频:final_video.mp4

6.从视频抽出声音.并存为Mp3

ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3

说明:

* 源视频:source_video.avi

* 音频位率:192kb/s

* 输出格式:mp3

* 生成的声音:sound.mp3

7.将wav文件转成Mp3

ffmpeg -i son_origine.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3

8.将.avi视频转成.mpg

ffmpeg -i video_origine.avi video_finale.mpg

9.将.mpg转成.avi

ffmpeg -i video_origine.mpg video_finale.avi

10.将.avi转成gif动画(未压缩)

ffmpeg -i video_origine.avi gif_anime.gif

11.合成视频和音频

ffmpeg -i son.wav -i video_origine.avi video_finale.mpg

12.将.avi转成.flv

ffmpeg -i video_origine.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320×240 -f flv video_finale.flv

13.将.avi转成dv

ffmpeg -i video_origine.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 video_finale.dv

或者:

ffmpeg -i video_origine.avi -target pal-dv video_finale.dv

14.将.avi压缩成divx

ffmpeg -i video_origine.avi -s 320×240 -vcodec msmpeg4v2 video_finale.avi

15.将Ogg Theora压缩成Mpeg dvd

ffmpeg -i film_sortie_cinelerra.ogm -s 720×576 -vcodec mpeg2video -acodec mp3 film_terminate.mpg

16.将.avi压缩成SVCD mpeg2

NTSC格式:

ffmpeg -i video_origine.avi -target ntsc-svcd video_finale.mpg

PAL格式:

ffmpeg -i video_origine.avi -target pal-svcd video_finale.mpg

17.将.avi压缩成VCD mpeg2

NTSC格式:

ffmpeg -i video_origine.avi -target ntsc-vcd video_finale.mpg

PAL格式:

ffmpeg -i video_origine.avi -target pal-vcd video_finale.mpg

18.多通道编码

ffmpeg -i fichierentree -pass 2 -passlogfile ffmpeg2pass fichiersortie-2

19.从flv提取mp3

ffmpeg -i source.flv -ab 128k dest.mp3

5格式

支持的编码

源自FFmpeg项目组的两个视频编码

Snow

FFV1

支持的格式

ASF

AVI

BFI[7]

IFF[8]

RL2[9]

FLV

MXF, Material eXchange Format, SMPTE 377M

Matroska

Maxis XA[10]

MSN Webcam stream[11]

MPEG transport stream

TXD[6]

OMA[12]

GXF, General eXchange Format, SMPTE 360M

mov,mp4,m4a,3gp,

6协议

支持的协议

HTTP

RTP

RTSP

RealMedia RTSP/RDT

TCP

UDP

Gopher

RTMP

RTMPT, RTMPE, RTMPTE, RTMPS (via librtmp)

SDP

MMS over TCP

ffmpeg在am335x上的移植的更多相关文章

  1. FFmpeg在Android上的移植之第一步

    http://blog.sina.com.cn/s/blog_69a04cf40100x1fr.html 从事多媒体软件开发的人几乎没有不知道FFmpeg的,很多视频播放器都是基于FFmpeg开发的. ...

  2. FFmpeg在Android上的移植优化步骤

    http://blog.csdn.net/feixiang_john/article/details/7894188 从事多媒体软件开发的人几乎没有不知道FFmpeg的,很多视频播放器都是基于FFmp ...

  3. 4G模块在AM335x上的移植

    关于4G模块的移植  看到一个很实用的写的比较好的   借鉴一下 参考:https://e2echina.ti.com/question_answer/dsp_arm/sitara_arm/f/25/ ...

  4. iozone文件系统测试工具在AM335x上的移植

     IOzone下载    下载地址:http://www.iozone.org 如下: 解压iozone,并进入到解压路径下的src/current 我的是  iozone3_487 命令:cd  i ...

  5. Qt4.8.5在ARM9上的移植

    Qt4.8.5在ARM9开发板上的移植 以前移植过qtopia-embedded-2.2.0,俗称Qt/E,在早期的Qt框架中是使用X11桌面服务器系统,无法应用于嵌入式平台,为此产生了qtopia, ...

  6. OpenCV在ARM上的移植

    OpenCV在ARM上的移植 与X86 Linux类似,请参考:Linux 下编译安装OpenCV 本文在此基础上进行进一步操作. 网络上很多移植编译的方法比较老,多数针对OpenCV 1.0,而且方 ...

  7. KEIL MDK环境下uCOS-II在LPC17xx上的移植实例

    1. 知识准备 要想对ucos-ii的移植有较深的理解,需要两方面知识: (1)目标芯片,这里是lpc17xx系列芯片,它们都是基于ARMv7 Cortex-M3内核,所以这一类芯片的ucos-ii移 ...

  8. UCOSII在STM32F1上的移植

    UCOSII在STM32F1上的移植 首先准备好一份STM32F1的工程.UCOSII源码. 在准备好的工程中新建一个"UCOSII"文件夹(或者取其它名字也行): UCOSII文 ...

  9. SPI在linux3.14.78 FS_S5PC100(Cortex A8)和S3C2440上驱动移植(deep dive)

    由于工作的原因,对SPI的理解最为深刻,也和SPI最有感情了,之前工作都是基于OSEK操作系统上进行实现,也在US/OS3上实现过SPI驱动的实现和测试,但是都是基于基本的寄存器操作,没有一个系统软件 ...

随机推荐

  1. cookie和session的那些事

    对于经常网购的朋友来说,经常会遇到一种情况: 打开淘宝或京东商城的首页,输入个人账号和密码进行登陆,然后进行购物,支付等操作都不需要用户再次输入用户名和密码 但是如果用户换一个浏览器或者等几个小时后再 ...

  2. Java高并发的常见应对方案

    Java高并发的常见应对方案 一.关于并发我们说的高并发是什么? 在互联网时代,高并发,通常是指,在某个时间点,有很多个访问同时到来. 高并发,通常关心的系统指标与业务指标? QPS:每秒钟查询量,广 ...

  3. MySQL死锁[转]

    案例描述       在定时脚本运行过程中,发现当备份表格的sql语句与删除该表部分数据的sql语句同时运行时,mysql会检测出死锁,并打印出日志. 两个sql语句如下:       (1)inse ...

  4. JDBC(二)

    三层架构的一些基本报结构如下: domain包:下面是一些实体bean,属性为private,提供属性相对应的set和get方法.一般对应于数据库中的一张数据表,属性对应于数据表中的列. dao包,数 ...

  5. BZOJ 1415: [Noi2005]聪聪和可可 [DP 概率]

    传送门 题意:小兔子乖乖~~~ 题意·真:无向图吗,聪抓可,每个时间聪先走可后走,聪一次可以走两步,朝着里可最近且点编号最小的方向:可一次只一步,等概率走向相邻的点或不走 求聪抓住可的期望时间 和游走 ...

  6. Linux设置DNS地址及清理DNS缓存方法

    1.设置DNS地址 编辑vim /etc/resolv.conf 文件. 增加DNS地址:nameserver ip. 2.清理DNS缓存 清理dns缓存: 通过重启nscd服务来达到清理dns缓存的 ...

  7. 使用VS Code开发asp.net core (下)

    第一部分: https://www.cnblogs.com/cgzl/p/8450179.html 本文是基于Windows10的. Debugging javascript 打开wwwroot/js ...

  8. void指针和const指针

    void指针:主要是便于传递不同类型的参数 const指针: const char *p :const 在* 的左边表示指向一个常量指针:表示指向的内容不可变(*p不能变,p可以改变) int a = ...

  9. HAProxy+Nginx 负载均衡

    一.什么是HAProxy HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点, ...

  10. dnspython模块安装

    wget  http://www.dnspython.org/kits/1.12.0/dnspython-1.12.0.tar.gz tar -zxvf dnspython-1.12.0.tar.gz ...