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 写解码库。


  • 相关阅读:
    4.程序员那点事-遭窃
    3.程序员那点事-惭愧与无奈
    2.程序员那点事-迷惘与憧憬
    1.程序员那点事-抉择
    6月22日の勉強レポート
    6月20日の勉強レポート
    6月16日の勉強レポート
    6月15日の勉強レポート
    IOSアプリケーション開発環境の構築
    iOSシステム構成の纏め
  • 原文地址:https://www.cnblogs.com/pangblog/p/3331192.html
Copyright © 2011-2022 走看看