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 写解码库。
ffmpeg+SDl+ 播放器 -01的更多相关文章
- FFmpeg简易播放器的实现-视频播放
本文为作者原创:https://www.cnblogs.com/leisure_chn/p/10047035.html,转载请注明出处 基于FFmpeg和SDL实现的简易视频播放器,主要分为读取视频文 ...
- FFmpeg简易播放器的实现-最简版
本文为作者原创:https://www.cnblogs.com/leisure_chn/p/10040202.html,转载请注明出处 基于FFmpeg和SDL实现的简易视频播放器,主要分为读取视频文 ...
- 基于ffmpeg网络播放器的教程与总结
基于ffmpeg网络播放器的教程与总结 一. 概述 为了解决在线无广告播放youku网上的视频.(youku把每个视频切换成若干个小视频). 视频资源解析可以从www.flvcd. ...
- FFmpeg简易播放器的实现-音视频同步
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10284653.html 基于FFmpeg和SDL实现的简易视频播放器,主要分为读取视频文 ...
- FFmpeg简易播放器的实现-音视频播放
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10235926.html 基于FFmpeg和SDL实现的简易视频播放器,主要分为读取视频文 ...
- FFmpeg简易播放器的实现-音频播放
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10068490.html 基于FFmpeg和SDL实现的简易视频播放器,主要分为读取视频文 ...
- 音视频处理之FFmpeg+SDL视频播放器20180409
一.FFmpeg视频解码器 1.视频解码知识 1).纯净的视频解码流程 压缩编码数据->像素数据. 例如解码H.264,就是“H.264码流->YUV”. 2).一般的视频解码流程 视频码 ...
- 演示基于SDL2.0+FFmpeg的播放器
SDL是一个跨平台的渲染组件,眼下已经推出到2.0.3版本号,支持Win/Linux/OSX/Android.网上非常多介绍大多是基于SDL1.2版本号的,与2.0版本号有一定的区别,本文演示怎样用S ...
- 最简单的基于FFMPEG+SDL的视频播放器:拆分-解码器和播放器
===================================================== 最简单的基于FFmpeg的视频播放器系列文章列表: 100行代码实现最简单的基于FFMPEG ...
随机推荐
- Zookeeper 1、Zookeeper 定义与工作原理
1.什么是Zookeeper » Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务 » 它包含一个简单的原语集,分布式应用程序可以基于它实现同步 ...
- error LNK2001
error LNK2001: 无法解析的外部符号 "public: virtual void __cdecl Observer::update(float,float,float)" ...
- Python递归函数与斐波那契数列
定义:在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 阶乘实例 n = int(input(">>:")) def f(n): s ...
- Struts2+Spring+Ibatis集成合并
上一篇博客讲述了Struts2+Spring的集成合并,主要是利用了一个中间jar包,这篇博客在加上Ibatis持久层框架,三个框架进行合并.其中Struts2和Spring部分和前边的一样,主要是讲 ...
- 单调队列-hdu-3415-Max Sum of Max-K-sub-sequence
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3415 题目大意: 给n个数凑成环状,求某一区间,使得该区间长度不超过k,且总和最大. 解题思路: 区 ...
- 在Swift中使用遗留的C API
Swift的类型系统的设计目的在于简化我们的生活,为此它强制用户遵守严格的代码规范来达到这一点.毫无疑问这是一件大好事,它鼓励程序员们编写 更好更正确的代码.然而,当Swift与历史遗留的代码库.特别 ...
- 生成ssl证书文件
网上关于生成SSL证书文件的方法有很多,但我查了几个,发现有或多或少的错误,如下我图文并茂的展示,亲测无任何问题,分享给大家,谢谢. 1.创建根证书密钥文件(自己做CA)root.key openss ...
- .net 时间操作[摘抄]
.Net时间运算 - DateTime类,TimeSpan类http://www.cnblogs.com/kissdodog/archive/2013/03/02/2939927.html 时间戳转换 ...
- nth-child和nth-of-type的区别
以前一般都用:nth-child,后来知道了:nth-of-type,然后就一般用nth-of-type 它们两有什么区别呢? 首先来看个现象: 假如有这样一个HTML结构 <div class ...
- MVC之MVCSQO方法查询、排序、分页、投影