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 使用示例
01.1) 播放 test.mp4 ,播放完成后自动退出02.ffplay -autoexit test.mp403. 04.2) 以 320 x 240 的大小播放 test.mp405.ffplay -x 320 -y 240 test.mp406. 07.3) 将窗口标题设置为 "myplayer",循环播放 2 次08.ffplay -window_title myplayer -loop 2 test.mp409. 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上的移植的更多相关文章
- FFmpeg在Android上的移植之第一步
http://blog.sina.com.cn/s/blog_69a04cf40100x1fr.html 从事多媒体软件开发的人几乎没有不知道FFmpeg的,很多视频播放器都是基于FFmpeg开发的. ...
- FFmpeg在Android上的移植优化步骤
http://blog.csdn.net/feixiang_john/article/details/7894188 从事多媒体软件开发的人几乎没有不知道FFmpeg的,很多视频播放器都是基于FFmp ...
- 4G模块在AM335x上的移植
关于4G模块的移植 看到一个很实用的写的比较好的 借鉴一下 参考:https://e2echina.ti.com/question_answer/dsp_arm/sitara_arm/f/25/ ...
- iozone文件系统测试工具在AM335x上的移植
IOzone下载 下载地址:http://www.iozone.org 如下: 解压iozone,并进入到解压路径下的src/current 我的是 iozone3_487 命令:cd i ...
- Qt4.8.5在ARM9上的移植
Qt4.8.5在ARM9开发板上的移植 以前移植过qtopia-embedded-2.2.0,俗称Qt/E,在早期的Qt框架中是使用X11桌面服务器系统,无法应用于嵌入式平台,为此产生了qtopia, ...
- OpenCV在ARM上的移植
OpenCV在ARM上的移植 与X86 Linux类似,请参考:Linux 下编译安装OpenCV 本文在此基础上进行进一步操作. 网络上很多移植编译的方法比较老,多数针对OpenCV 1.0,而且方 ...
- KEIL MDK环境下uCOS-II在LPC17xx上的移植实例
1. 知识准备 要想对ucos-ii的移植有较深的理解,需要两方面知识: (1)目标芯片,这里是lpc17xx系列芯片,它们都是基于ARMv7 Cortex-M3内核,所以这一类芯片的ucos-ii移 ...
- UCOSII在STM32F1上的移植
UCOSII在STM32F1上的移植 首先准备好一份STM32F1的工程.UCOSII源码. 在准备好的工程中新建一个"UCOSII"文件夹(或者取其它名字也行): UCOSII文 ...
- SPI在linux3.14.78 FS_S5PC100(Cortex A8)和S3C2440上驱动移植(deep dive)
由于工作的原因,对SPI的理解最为深刻,也和SPI最有感情了,之前工作都是基于OSEK操作系统上进行实现,也在US/OS3上实现过SPI驱动的实现和测试,但是都是基于基本的寄存器操作,没有一个系统软件 ...
随机推荐
- C#基础(四)--值类型和引用类型,栈和堆的含义
本文主要是讨论栈和堆的含义,也就是讨论C#的两种类据类型:值类型和引用类型: 虽然我们在.net中的框架类库中,大多是引用类型,但是我们程序员用得最多的还是值类型. 引用类型如:string,Obje ...
- 【原创】源码角度分析Android的消息机制系列(五)——Looper的工作原理
ι 版权声明:本文为博主原创文章,未经博主允许不得转载. Looper在Android的消息机制中就是用来进行消息循环的.它会不停地循环,去MessageQueue中查看是否有新消息,如果有消息就立刻 ...
- dl在不同浏览器下显示不同
dl在chrome浏览器和在火狐浏览器下的默认样式是不一样的,解决方法将dl换成ol或ul样式就正常了.
- CentOS的软件包的管理之rpm和yum
在linux上,一个软件包通常由二进制程序,库文件,配置文件和帮助文件组成. 其中: 二进制程序一般都放在/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin和/u ...
- iOS-Xcode编码自动补全失效
1. 退出 Xcode 2. 重启电脑 3. 找到 这个 DerivedData 文件夹 删除 (路径: ~/Library/Developer/Xcode/DerivedData) 4. 删除这个 ...
- 51Nod 1225 余数之和 [整除分块]
1225 余数之和 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 关注 F(n) = (n % 1) + (n % 2) + (n % 3) + ... ...
- 剑指offer得意之作——顺时针打印矩阵
题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3 ...
- SQL Server 页面查询超时(SOS_SCHEDULER_YIELD等待)
一.问题概述 问题大概是这样的,有一个功能页面经常查询超时,有时候就算能查询出来也要很长的时间,但是有时又会很快.遇到的这种问题在排除掉网络原因之后基本上可以从查询语句上去找原因. 编译查询SQL语句 ...
- 【Oracle】虚拟表Dual
Dual是个虚拟表,用来构成SELECT语句的语法规则,Oracle保证Dual里面永远只有一条记录.可以用它来做很多事情,例如,查看当前用户:用来调用系统函数:得到序列的下一个值或者当前值:可以用作 ...
- 4、flask之分页插件的使用、添加后保留原url搜索条件、单例模式
本篇导航: flask实现分页 添加后保留原url搜索条件 单例模式 一.flask实现分页 1.django项目中写过的分页组件 from urllib.parse import urlencode ...