ffmpeg在am335x上的移植

交叉编译工具: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 使用示例

view sourceprint?

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

时间: 2024-10-26 11:55:31

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

ffmpeg rtsp rtmp-Ubuntu上用FFmpeg将rtsp流转换成rtmp流出错!

问题描述 Ubuntu上用FFmpeg将rtsp流转换成rtmp流出错! 使用"ffmpeg -i rtsp://admin:12345@172.27.35.55 -f flv rtmp://172.27.35.2/live/stream"命令时出错 其中172.27.35.2是我电脑的IP,172.27.35.55是网络摄像机的IP 解决方案 你本地有LiveServer吗?https://github.com/winlinvip/simple-rtmp-server

一些开源项目在ARM上的移植

在很长一段时间中学习了点关于往开发板上移植一些开源项目的实际操作,现在终于有时间把它们写下来了,因为本人知道的还是一些皮毛,所以还望大侠拍砖. 在开发板上移植开源项目SDL,关于SDL的详细介绍我就不在这里累赘了,网上很多关于这方面的东西, 一些简单的步骤: 1:SDL -1.2.14 (1)解压SDL -1.2.14 命令:tar -xzvf SDL-1.2.14.tar.tar (2) 进入SDL -1.2.14 (3)./configure (4)make (5)cd test (6)./

blueZ在2410上的移植

 在完成了在普通red hat上的安装,熟悉了蓝牙协议栈一些基本的东西,下面把buletooth协议栈搬到开发板上了. 第一步当然还是内核了,由于各个公司对ARM2410所使用的内核代码改过,我也不知道从bluez上下载的patch能不能使用,只好先试试看了. # cd /ARM2410/kernel # gzip -dc ~/patch-2.4.18-mh15.gz | patch -p1 # find ./ -name '*rej' ./fs/cramfs/inode.c.rej 有文件不能

关于linux上boa移植的先关问题,请教大侠帮忙!

问题描述 关于boa的移植问题:我在linux主机上已经成功编译出了boa可执行文件,将其复制到nfs的/root/bin目录下,对boa.config也做了相关配置,mime.types文件也已经放到/etc目录下,passwd和group文件中也具有nobody和你nogroup用户.此时我将开发板打开,通过nfs启动,cd到bin目录下也可以查看到boa程序,但是在输入/bin$boa时出现以下错误:[01/Jan/1970:00:00:00+0000]boa.c:66-can'topen

1.cocos2dx记忆卡片游戏代码、并将游戏移植到“华为荣耀”手机上、移植中的问题总结

 1记忆卡片游戏代码 CardItem.h #pragmaonce #ifndef__CardItem_H__ #define__CardItem_H__   #include"cocos2d.h" USING_NS_CC;   classCardItem :publicCCSprite { public:    staticCardItem *create(intidx);    boolinit(intidx);      CCLabelTTF *ttf;    CCSprit

关于web上文章移植伴随的样式问题

好多朋友疑问,关于网页上的html文章在不同编辑器和页面之间复制黏贴时伴随的样式(如css)是否也一起被复制.这里统一回答下: 很多人遇见这种情况:网页上看到一篇内容充实主题明确,更重要的是样式精美的图文并茂的好文章,忍不住动动鼠标,全选--复制---黏贴 到自己的个人博客上化为己有,然后却失望的发现,复制到新编辑器上时只剩下干巴巴的文本,没有了颜色 大小 字体等装饰,也就失去了"超文本"的意义,更有胜者连图片也变成了一个空白的框框.嗯没错以前也遇见过这种情况很想打人 . 咦?怎么又说

快速解决Android平台移植ffmpeg的一些问题_Android

IT行业是一个踩在巨人肩膀上前进的行业,否则做的事情不一定有意义,所以我也是基于havlenapetr移植的ffmpeg基础上做了些改进,他做的主要贡献有: 1. 移植了ffmpeg并将与媒体相关的结构体在java层重新进行了封装,方便应用程序在java层直接操作ffmpeg API,如各种媒体格式转码及播放,如图1所示 2. 模仿Android的MediaPlayer类实现了ffmpeg的播放接口,如setDataSource(),setDisplay(),start(), stop(),pa

AM335x(TQ335x)学习笔记——WM8960声卡驱动移植

经过一段时间的调试,终于调好了TQ335x的声卡驱动.TQ335x采用的Codec是WM8960,本文来总结下WM8960驱动在AM335x平台上的移植方法.Linux声卡驱动架构有OSS和ALSA两种架构,目前最常用的架构是ALSA,本文也使用ALSA架构对WM8960驱动进行移植. ASoC是对ALSA驱动架构的进一步封装.ASoC将ALSA驱动中的各模块抽象为三部分:Platform.Codec和Machine.Platform主要是平台硬件驱动,包括SoC的IIS模块.DMA等,在本文中

AM335x(TQ335x)学习笔记——u-boot-2014.10移植

最近移植了下u-boot-2014.10到TQ335x,如果基于am335x evm进行移植,需要修改的地方并不多. 由于TI的am335x evm开发使用了一个eeprom保存了板载配置信息,用来区分不同板子的型号的,而TQ335x没有这个eeprom,因此,需要修改eeprom相关的部分,使u-boot适应TQ335x开发板. 使用source insight查看代码,很容易发现,所有获取板载配置的部分都是通过读取eeprom获得的,因此,首选修改read_eeprom(board/ti/a