ffmpeg & mplayer & vlc 手册(转)

如何基于FFMPEGSDL写一个少于1000行代码的视频播放器

http://blog.sina.com.cn/s/blog_51396f890100nd91.html

 

 

http://lanhy2000.blog.163.com/blog/static/436786082012324114018127/

 

出于喜好,我很喜欢在 linux 下折腾一些影音相关方面的东西。以前在 windows 下折腾不起来,shell 不给力,ffmpeg 也是移植过去的,mplayer 更是杯具;现在在 linux 下,终于能尽情折腾了。

工欲善其事,必先利其器,正好最近整理文件,找到了以前收藏的用户手册,拿出来和大家分享。个人觉得最全面最正确的还是 man 文档,建议大家根据手册和 man 进行操作。

ffmpeg

均为英文资料。来源于 ffmpeg.org (via),官方还有开发手册等相关资料,我只摘录了比较常用的 docs(文档) , ffplay (播放器)和 faq  (问题解答),资料很齐全且简单易懂,故不做翻译。(官方还有ffserver等资料供您阅读)

docs: 在线阅读 (source)
ffplay: 在线阅读 (source)
faq:  在线阅读 (source)

ffmpeg 中文资料比较少,大部分都是讲解如何转码的,所以学习起来压力不大。最简单方式:

1
ffmpeg -i infile.format   outfile.format

输入文件.格式 ,输出文件.格式,然后转码,当然参数都是default啦。剩下的就是在 输入文件 输出文件 间加参数了,

1
ffmpeg  {[infile options]  [-i infile]}   {[outfile options] outfile}

参数较多,我写了个html,用以总结参数以及相关用法,还有几个小例子,您可以在这里浏览到这个页面。(如果大家有需求,我以后再写个相关教程以飨读者)

mplayer (mencoder)

说起来mplayer和ffmpeg算是同根同源了,所以 mplayer 用法和 ffplay 相似,mencoder 和 ffmpeg相似,所以您只需要学习了解mplayer 相关用法,即可熟练掌握 mencoder。

mencoder

http://baike.baidu.com/link?url=MDGPHhABwA3OzNo3YsmqIgPyqydesH28SYyc1tOI5TXi3wu1NPoNdNSj5_zQigYPE8h8q3X4_83ftiVId-vuC_

手册下载

vlc

本来是个一套流媒体解决方案中的客户端。 但客户端却比整套方案更早流行了起来,成为最著名的跨平台媒体播放器和框架之一。video lan比较著名的就是vlc和x264了。

前几天 linuxtoy 也介绍了几个 vlc 的教程:FLOSSManuals 上的教程ThinkDigit 的 Tips and Tricks 系列之 VLC 篇How-To Geek 上一篇关于怎样用 VLC 来 Rip DVD 的教程

我也分享以下我的 pdf 教程 下载地址

NET 2.0 调用FFMPEG,并异步读取输出信息的代码

 

 

 

 

 

ffmpeg

http://baike.baidu.com/link?url=jz8EzaHuIh5mRg9T9m4Zo7sTqarNI3HcwNMxEzXqLTqznfk82Tv5xaclvE6mRYUA

项目组成

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了领先的音/视频编码库libavcodec等。
libavformat:用于各种音视频 封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构
和读取音视频帧等功能;
libavcodec:用于各种类型声音/ 图像编解码;
libavutil:包含一些公共的工具函数;
libswscale:用于视频场景比例缩放、色彩映射转换;
libpostproc:用于后期效果处理;
ffmpeg:该项目提供的一个工具,可用于格式转换、解码或 电视卡即时编码等;
ffsever:一个 HTTP 多媒体即时广播串流服务器;
ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示;
 
 
源码下载:
http://www.ffmpeg.org/download.html
编译安装:
http://trac.ffmpeg.org/wiki/UbuntuCompilationGuide
 

<车载物联网项目,视频采集传输部分,第一天> FFmpeg的安装过程

http://blog.csdn.net/yangxuefeng09/article/details/9905419

 
 
 
 
Yasm是一个完全重写的NASM汇编。目前,它支持x86和AMD64指令集,接受NASM和气体汇编语法,产出二进 制, ELF32 , ELF64 , COFF , Mach - O的( 32和64 ) , RDOFF2 ,的Win32和Win64对象的格 式,并生成STABS 调试信息的来源,DWARF 2 ,CodeView 8格式。
 
http://baike.baidu.com/link?url=IlpLE_WHHPbawIktx6OhCpM67kRtKW713zSx6XzpdX3sVaQgDqXM8EknH3-_d5rL
AAC(Advanced Audio Coding)实际上是高级音频编码的缩写,AAC是由Fraunhofer IIS-A、杜比和AT&T共同开发的一种音频格式,它是MPEG-2规范的一部分。AAC所采用的运算法则与MP3的运算法则有所不同,AAC通过结合其他的功能来提高编码效率。AAC的音频算法在压缩能力上远远超过了以前的一些压缩算法(比如MP3等)。它还同时支持多达48个音轨、15个低频音轨、更多种采样率比特率、多种语言的兼容能力、更高的解码效率。总之,AAC可以在比MP3文件缩小30%的前提下提供更好的音质,被手机界称为“21世纪数据压缩方式”。 

因为“AAC”是一个大家族,他们是共分为9种规格,以适应不同场合的需要:

a) MPEG-2 AAC LC 低复杂度规格 (Low Complexity)

b) MPEG-2 AAC Main 主规格

c) MPEG-2 AAC SSR 可变取样率规格 (Scaleable Sample Rate)

d) MPEG-4 AAC LC 低复杂度规格(Low Complexity),现在的手机比较常见的MP4文件中的音频部份就包括了该规格音频文件

e) MPEG-4 AAC Main 主规格

f) MPEG-4 AAC SSR 可变取样率规格 (Scaleable Sample Rate)

g) MPEG-4 AAC LTP 长时期预测规格(Long Term Predicition)

h) MPEG-4 AAC LD 低延迟规格(Low Delay)

i) MPEG-4 AAC HE 高效率规格(High Efficiency) ===》又称为AAC+

上述的规格中,主规格“Main”包含了除增益控制之外的全部功能,其音质是最好,而低复杂度规格则是比较简单,没有了增益控制,但提高了编码效率,至“SSR”对“LC”规格大体是相同,但是多了增益的控制功能,另外,MPEG-4/AAC/LTP/LD/HE,都是用在低码率下编码,特别是“HE”是有Nero ACC编码器支持,是近来多用的一种编码率种,不过通常来说,Main规格和LC规格的音质相差是不大,因此目前使用最多的AAC规格多数是“LC”规格,因为要考虑手机目前的内存能力未达合理水平。

由于AAC格式家族比较庞大,要了解他,首先要清楚其各有不同的编码器,在目前是包括了商业的,免费的 AAC 格式音频编码器,其中几个主要的有如下 :

a) FhG Fraunhofer IIS研发的权威编码器,拥有很好的音质,可惜不对外开放了。

b) Nero AAC可能是目前最完美的AAC编码器了,(千千静听就是用的此编码器)同时支持"LC AAC/HE AAC"规格,Nero AAC编码器提供了品质最好的"VBR LC AAC"格式,同时亦对面"HE AAC"规格保证了在低码率下也有良好的表现,目前索尼爱立信W800和K750等手机都支持该编码器。

c) QuickTime/iTune Apple公司的两款Media软件都提供了AAC编码功能,其编码技术来自“DolbyLaboratories”,是目前音质最好的中码编率编码器,它编码的48kbps立体声音质比其它AAC编码器好20 - 25%,甚至64 kbps的Dolby AAC音效可媲美128 kbps的MP3。

d) FAAC也是一种很好的命令行编码器,只支持“LC”规格,但音质相当不错,与一般商业用的编码器接近水平,而这个软件更是免费来的,索尼爱立信W800和K750等手机也是同样支持这个编码器。

另外还有Psytel,Coding Technologies,HHI/z Plane(Compaact),Dolby AAC等AAC编码器,而其它如Panasonic,Nokia,AT&T,NEC等公司也都有独家开发的编码器,在大家弄清楚这些AAC格式音频规格和编码器之后,我们就不难知道为什么同一款Nokia手机会支持看起来都是AAC格式音频的诸多文件格式了,比如Nokia 6230i就是既支持AAC格式也支持M4A格式和MP4格式的机型,而这些音频文件格式其实都是属于AAC家族成员的!



MP3与Lame

http://biosea.blog.hexun.com/4436555_d.html


1、Lame是什么?
  Lame是目前最好的MP3编码引擎。从1998年12月至今,Lame已被越来越多人的公认为是MP3压缩的最佳利器。Lame编码出来的MP3音色纯厚、空间宽广、 低音清晰、细节表现良好,它独创的心理音响模型技术保证了CD音频还原的真实性,配合APX(APX)参数,可以取得音质几乎媲美CD音频的小体积文件。 对于一个免费引擎来说,Lame的优势不言而喻。

    默认情况下,Lame只支持从*.wav(波形文件)压缩到*.mp3。网上也提供一些修改版,加入了从*.ape格式直接压缩成*.mp3。需要注意的 是,MP3的转换最好是采用高质量的音源格式,如CD转录后的wav、ape、flac等,而诸如wma、rm等已经经过压缩的音源转换成MP3则豪无意 义。

    2、上边提到的VBR和ABR是什么?还有CBR?
   VBR(Variable Bitrate)动态比特率。也就是没有固定的比特率,压缩软件在压缩时根据音频数据即时确定使用什么比特率。这是Xing发展的算法,他们将一首歌的复 杂部分用高Bitrate编码,简单部分用低Bitrate编码。主意虽然不错,可惜Xing编码器的VBR算法很差,音质与CBR相去甚远。幸运的 是,Lame完美地优化了VBR算法,使之成为MP3的最佳编码模式。这是以质量为前提兼顾文件大小的方式,推荐编码模式。

  ABR(Average Bitrate)平均比特率,是VBR的一种插值参数。Lame针对CBR不佳的文件体积比和VBR生成文件大小不定的特点独创了这种编码模式。ABR也 被称为“Safe VBR”,它是在指定的平均Bitrate内,以每50帧(30帧约1秒)为一段,低频和不敏感频率使用相对低的流量,高频和大动态表现时使用高流量。举 例来说,当指定用192kbps ABR对一段wav文件进行编码时,Lame会将该文件的85%用192kbps固定编码,然后对剩余15%进行动态优化:复杂部分用高于192kbps 来编码、简单部分用低于192kbps来编码。与192kbps CBR相比,192kbps ABR在文件大小上相差不多,音质却提高不少。ABR编码在速度上是VBR编码的2到3倍,在128-256kbps范围内质量要好于CBR。可以做为 VBR和CBR的一种折衷选择。

    CBR(Constant Bitrate),常数比特率,指文件从头到尾都是一种位速率。相对于VBR和ABR来讲,它压缩出来的文件体积很大,但音质却不会有明显的提高。

    对MP3来说Bitrate是最重要的因素,它用来表示每秒钟的音频数据占用了多少个bit(bit per second,简称bps)。这个值越高,音质就越好。

 

 

 

http://baike.baidu.com/link?url=uu2N1znwR0vrh7bpkiKAha9CSozQ_Wy7QWj6661ZT8FqsZil9AzhquXRbCqjOodqzJs0GYZtiWL-srbN4MdmxK

Opus编码器 是一个有损声音编码的格式,由互联网工程任务组(IETF)进来开发,适用于网络上的实时声音传输,标准格式为RFC 6716。Opus 格式是一个开放格式,使用上没有任何专利或限制。

Opus的前身是celt编码器。在当今的有损音频格式争夺上,拥有众多不同编码器的AAC格式打败了同样颇有潜力的Musepack、Vorbis等格 式,而在Opus格式诞生后,情况似乎不同了。通过诸多的对比测试,低码率下Opsu完胜曾经优势明显的HE AAC,中码率就已经可以媲敌码率高出30%左右的AAC格式,而高码率下更接近原始音频。Opus格式音频可以使用GStreamer, libavcodec(ffmpeg),Foobar2000,Firefox(15 Beta或更新)等播放,推荐Foobar2000 1.1.14 beta 1或者更新的版本播放

 

 

 

 

http://baike.baidu.com/link?url=J5K0LmIShYGGkrbiNMAWvXLhjh9AN-ZQYfBw4fCesKjqZol1dOv7dkchOBUtkJBu

SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码 就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。

 

SDL内置了调用OpenGL的函数。

 

通过使用SDL_image、SDL_ttf、SDL_mixer、SDL_net等外部扩展库,可以轻松实现JPG、PNG、TIFF图像的加载使用, TrueType字体的使用,MP3文件的使用、 网络相关的使用等。

 

转载于:https://www.cnblogs.com/jingzhishen/p/3662220.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值