zoukankan      html  css  js  c++  java
  • ffmpeg在am335x上的移植 分类: ffmpeg-SDL-VLC-Live555 TI-AM335X 2015-07-28 10:06 134人阅读 评论(0) 收藏

    交叉编译工具: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



    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    golang学习笔记---flag包
    golang学习笔记 --- 结构体(struct)
    golang学习笔记---映射(map)
    golang学习笔记----slice(22)
    golang学习笔记---数组(22)
    golang学习笔记 ---数据类型转换(strconv包)
    golang学习笔记 ---slice(2)
    golang学习笔记 ---slice
    golang学习笔记--中英文字符串截取
    golang学习笔记 ---如何将interface转为int, string, slice, struct等类型
  • 原文地址:https://www.cnblogs.com/mao0504/p/4705498.html
Copyright © 2011-2022 走看看