zoukankan      html  css  js  c++  java
  • ffmpeg+SDl+ 播放器 -01

    最近因公司项目需要,打算自己在LINUX平台整一个播放器,来学习和研究音频编解码。


    项目需求:

    支持下列格式文件播放。

           1> WMA  

                 硬件解码,但需要软件分析ASF格式,提取Payload数据


           2> FLAC

               软件解码


           3> DST、DSD

               硬件解码,但需要软件分析文件格式,提取Packet数据


    网上搜了一圈,对于1) 2)最适合的是ffmpeg

    对于3) 目前网上只找到foobar的插件版本。


    最终,LINUX下的播放器打算采用 ffmepg + SDL

    整体框架设计如下:

                           interface  (封装SDL,自己写一个简单的HMI)

                                   |

                          MediaEngine 

    |                     |                       |

     Input              Decoder           Output


    其中input 参考 vlc的设计,支持本地文件系统,USB,网络(DLNA或Web Uri)

    Decoder 支持 JPG、PNG,WAV,FLAC,WMA,DST,MP3


    简单分析好了基本需求和整体框架后,接下来就是下载代码开工。

    STEP1: 

    http://ffmpeg.gusari.org/static/32bit/   目前选择ffmpeg-0.9.2.tar

    http://www.libsdl.org/      目前选择SDL-1.2.15.tar

    ./configure;make;make install


    STEP2:

    编写Makefile

    LIBS+= -lpthread -lavformat -lavcodec -lavutil -lswscale -lm -lSDL  -lrt        (注意先后顺序不能随便更改,这地方被坑了好一会儿)

    INCLUDE+= -I/usr/local/include/libavcodec -I/usr/local/include/libavformat -I/usr/local/include/libavfilter -I/usr/local/include/libavformat -I/usr/local/include/libswscale -I/usr/local/include/SDL


    STEP3:

    学习ffmpeg+Sdl

    http://dranger.com/ffmpeg/  注意由于版本差异,无法编译通过,修改函数很麻烦,只需要了解其设计思路就可以了。


    STEP4:

    参考ffplay.c 写解码库。


  • 相关阅读:
    计算机二级Python
    vivado三人表决仿真
    verilog设计加法器
    超前进位加法器
    OO第二单元总结
    OO第一单元总结
    第一次阅读作业
    安卓计算器
    安卓第四周作业
    第十四周作业
  • 原文地址:https://www.cnblogs.com/pangblog/p/3331192.html
Copyright © 2011-2022 走看看