谁有 FFMPEG跨平台iOS&Androidffmpeg 高级开发发实践视频教程 百度云?

课程名称读取中
支付宝支付
由百度开放云提供技术支持
&学院APP&&
扫描微信二维码精彩活动、课程更新抢先知
下载客户端,离线视频任您学
1.&01 FFmpeg视频介绍
2.&02 编译FFMpeg
3.&03 开发环境搭建
4.&04 H.264 视频数据接收
5.&05 解码H.264数据 1
6.&06 解码H.264数据2
7.&07 解码H.264数据3
8.&08 OpenGL ES渲染YUV图像
9.&09 音频采集接收
10.&10 音频编解码
11.&11 H.264 I P B帧 NAL
12.&12 H.264 SPS PPS I/P/B帧解析
13.&13 QuickTime mp4容器分析
14.&14 AAC 音频格式
15.&15 AAC实时转换 1
16.&16 AAC实时转换 2
17.&17 FFmpeg实时写AAC音频流1
18.&18 FFmpeg实时写AAC音频流2
FFmpeg实时写H.264视频流
20.&20 FFmpeg封装h.264 AAC到mp4
21.&21 iOS 硬件解码H.264 1
22.&22 iOS 硬件解码H.264 2
23.&23 iOS 硬件解码H.264 3
24.&24 iOS 硬件解码H.264与显示
25.&25 FFmpeg liblame pcm转mp3
26.&26 Apple TV tvOS编译FFMPEG
27.&27 v4l视频采集
28.&28 x264编码H.264数据
29.&29 alsa 音频采集
30.&FFmpeg 跨平台开发 01
31.&FFmpeg 跨平台开发 02
32.&FFmpeg 跨平台开发 03
33.&FFmpeg 跨平台开发 04
34.&FFmpeg 跨平台开发 05
35.&FFmpeg 跨平台开发 06
36.&FFmpeg 跨平台开发 07
37.&FFmpeg 跨平台开发 08
38.&FFmpeg 跨平台开发 09
39.&FFmpeg 跨平台开发 10
40.&FFmpeg 跨平台开发 11
41.&FFmpeg 跨平台开发 12
42.&FFmpeg 跨平台开发 13
43.&FFmpeg 跨平台开发 14
44.&FFmpeg 跨平台开发 15
45.&FFmpeg 智能手机App优化
46.&FFmpeg 音视频转码
47.&Darwin RTMP 流媒体服务器
48.&libVLC
49.&FFmpeg WebRTC
50.&FFmpeg 屏幕录制
51.&FFmpeg SDL OpenCV
52.&RTMP 直播 介绍
53.&RTMP 直播 Linux服务器搭建
54.&RTMP 直播 Linux服务器配置
55.&RTMP 直播 流媒体推流
56.&RTMP 直播 流媒体转发与接收
57.&RTMP 直播 FFmpeg iOS流媒体播放器 01
58.&RTMP 直播 FFmpeg iOS流媒体播放器 02
59.&RTMP 直播 iOS推流到RTMP服务器01
60.&RTMP 直播 iOS推流到RTMP服务器02
61.&网络通讯开发 勘误
62.&网络通讯开发 协议
63.&网络通讯开发 tcp协议的可靠性
64.&网络通讯开发 tcp 三次握手
65.&网络通讯开发
66.&网络通讯开发 socket通讯常用函数
67.&网络通讯开发 socket编程常用头文件
68.&网络通讯开发 服务器编程01
69.&网络通讯开发 服务器编程02
70.&网络通讯开发 子进程
71.&网络通讯开发 自定义协议
72.&网络通讯开发
73.&网络通讯开发 套节字选项
74.&网络通讯开发 非阻塞数据接收
75.&网络通讯开发
非阻塞数据发送
76.&网络通讯开发 Unix 线程
77.&网络通讯开发 线程detach封装
78.&网络通讯开发 自定义协议 登陆
79.&网络通讯开发 发送视频包01
80.&网络通讯开发 发送视频包02
81.&网络通讯开发 发送视频包03
82.&网络通讯开发 常见音视频包结构
83.&网络通讯开发 音频包的发送01
84.&网络通讯开发 音频数据包发送02
85.&网络通讯开发 服务器端架构总览
86.&网络通讯开发 服务器端架构实现
87.&网络通讯开发 服务器进程
88.&网络通讯开发 客户端编程介绍
89.&网络通讯开发 客户端初始化套接字
90.&网络通讯开发 非阻塞connect
91.&网络通讯开发 超时阻塞套接字发送
92.&网络通讯开发 超时阻塞套接字接收
93.&网络通讯开发 登陆请求
94.&网络通讯开发 登陆认证
95.&网络通讯开发 视频请求
96.&网络通讯开发 数据通道
97.&网络通讯开发 命令接收线程
98.&网络通讯开发 音视频接收线程
99.&网络通讯开发 音视频解码播放
100.&网络通讯开发 程序架构概览
101.&网络通讯开发 心跳包
102.&网络通讯开发 UDP 编程
103.&网络通讯开发 局域网广播包
104.&网络通讯开发 局域网广播接收
105.&跨平台移植问题
106.&跨平台客户端 for Linux 移植
107.&Windows开发01 Qt和MingW
108.&windows开发02 MingW ffmpeg编译
109.&windows开发03 Qt与FFMpeg
110.&windows开发04 Qt Socket
111.&windows开发05 Qt Socket
112.&windows开发06 Qt Socket
113.&windows开发07 Qt Socket
114.&windows开发08 Qt Socket
115.&windows开发09 Qt Socket
116.&windows开发10 Qt Socket
117.&windows开发11 Qt Socket
118.&windows开发12 跨平台编译
119.&windows开发13 无法打开视频问题
120.&windows开发14 程序发布注意事项
121.&windows开发15 程序安装包制作
加入购物车
【课程类型】实战教学
【难度级别】高级
【适合人群】计算机相关专业学生
【课程介绍】 本课程适合中高级学员,适用于从事音视频,网络通讯开发的学员。实战案例可用于无人机,安防,直播等。从Linux音频,视频采集,到TCP/IP UDP Socket通讯服务器编程, 客户端Socket编程,音视频,命令的收发,到FFmpeg编解码,OpenGL ES渲染视频帧。OpenAL播放音频数据。到pcm 换AAC,到H.264+AAC合成mp4. 整个过程,涵盖iOS,Android ,Mac OS嵌入式Linux音视频相关绝大多数实用场景。以及如何使用Posix编程接口,从c语言模块到c++封装,详细讲解FFmpeg跨平台开发,iOS,Android,linux,桌面软件都不再是障碍。让学员能够快速掌握相关知识,融汇贯通掌握音视频开发,从事音视频相关职业,年薪轻松三四十万不是梦。 付费学员加入QQ群,可获得本人未来1~3年学习过程中的专业指导解答。
【课程目标】 通过学习本课程,深入理解TCP/IP UDP服务器,客户端编程,H.264 AAC格式, FFmpeg库, QuickTime mp4容器等. 完全掌握iOS, Android, 嵌入式Linux平台音视频开发的相关知识并能够深入运用的自己的各大项目中。 熟练使用c/c++,Posix库进行跨平台开发。课程由浅入深,让学员一步一步成为音视频领域的专家。
【课程计划】 本课程长达100多节课,商业实战案例适用的行业如无人机,安防,直播等。详细讲解TCP/IP UDP 服务器,客户端编程,H.264 NAL, I/P/B帧解析,QuickTime/Mp4, AAC格式,c/c++,Posix库进行跨平台开发等相关重要详细的知识,通过学习FFmpeg音视频在iOS,Android,嵌入式Linux Mac OS平台的编解码,视频合成,如何用c/c++ Posix库进行跨平台开发,以及后期与FFmpeg相关的第三方开源库。 联系QQ:
全部评价(5)
这些东西,我要是一个人摸索,还得走弯路,时间周期简直不敢想象啊。
有了陈老师实时指导,省劲儿多了这下哈,
并且,针对我的情况,当天就录制了windows开发课件,太棒了!!!
课程讲得很深入,后期服务也不错,学到了很多实战性的东西。
真的很不错,都是干活和细节!
可以,买了还没看完,讲h.264很深入,难度有点大。
第三节课开始有QQ群号,购买后加入QQ群,获取相关资料,代码。
iOS其实从iOS8之后便支持硬件解码H.264。不过只有iOS8之后才可以。所以通用性没有FFmpeg强。硬件解码,效率稍微高一点。但是基础的知识还是H.264。所以大家要好好学习H.264的基础知识以后,才能把硬件解码做出来。大家可以把这个项目当做一个作业去做。
把课程中分析H.264 NAL AVCC SPS PPS 系列学通了,这个很简单。有个老外写了个文档在这里, 跟我们的FFmpeg写mp4有很多类似之处,里面用到了大量的H.264数据的分析, SPS PPS
I P B帧的解析等.
/questions//how-to-use-videotoolbox-to-decompress-h-264-video-stream#
购买课程,加入QQ群,后期QQ群里面讨论 学到的知识是课程的十倍,百倍。
真正的项目实战,干货,音视频专家之路。搞音视频高手年薪最少三四十万以上。这都嫌贵的话,只能说明不在一个频道上。
2课程86931学员
参考知识库
为您推荐课程
讲师:陈超 51课时基于FFMPEG的跨平台播放器实现
时间: 22:39:58
&&&& 阅读:961
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&基于FFMPEG的跨平台播放器实现
一、背景介绍
& & FFmpeg是一款超级强大的开源多媒体编解码框架,提供了录制、转换以及流化音视频的完整解决方案,包含了libavcodec、libavformat等多个多媒体库。FFmpeg是基于linux平台下开发的,同样可以运行于android(其实也是linux,你懂得!)、windows、Mac等平台。
& & FFmpeg有多重要?列举一下我们常用的多媒体处理软件:暴风影音、QQ影音、KMP(这个牛掰啊)、格式工厂&&都使用了FFmpeg,可是他们都被FFmpeg刻上了耻辱柱:理由是把开源的东西改造成不开源的去赚钱!
& & 说到播放器,千万不要把FFmpeg和播放器等同,这也是我这篇博文重点介绍的:FFmpeg处理的数据我们看不到,要想看到数据处理的结果,还需要借助另一套多媒体处理框架的帮助,这里就用surface代替吧。
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & 图一
& & 那么在不同平台下应该如何搭配FFmpeg与surface呢?我采用如下方案实现:
& & linux平台:FFmpeg + SDL。
& & Android平台:FFmpeg + surface(jni注入)。
& & Windows:FFmpeg + D3D。
& & 以上三种平台的搭配本人全部实现(代码陆续上传到github中,欢迎大家批评指正)。实现难度么,个人感觉Android最难,linux其次,windows较为简单。本人是从事linux平台开发的,按道理说linux衍生出的Android不应该有太大困难的,这里强烈喷一下GFW,你把谷歌禁了也就罢了,Android相关资源也禁?Android源码、ADT这些资源找了十天半月,浪费了博主我大把青春岁月。
& & 闲话少说,下面切入正题。
二、FFmpeg + surface(jni注入)
& & 平台资源:adt-bundle-windows-x86-、android-ndk-r4b、libffmpeg、cygwin。
& & 具备知识:JNI、FFmpeg、Android surface。
& & 1、&&& adt-bundle-windows-x86-:windows上的Android开发环境,由eclipse、Android SDk、Android模拟器组成。
& & 2、&&& android-ndk-r4b:交叉编译器,用来在Android开发环境下编译C系语言的交叉编译器。
& & 3、&&& libffmpeg 经过修改的可以由android-ndk-r4b编译的ffmpeg源码。
& & 4、&&& JNI :JAVA调用C、C++的技术。
& & 5、&&& Android surface:android显示技术。
& & 6、&&& Cygwin:因为交叉编译器是在linux上才能运行的,所以需要cygwin在windows上模拟一个linux环境。
& & 参考网址:
& &(开发资源下载,解决了android官网被墙的不便)
& &(java调用C、C++的实现方法)
& &(android surface 实现方法)
& &(超级大牛,ffmpeg在android上实现的鼻祖)
& &(针对鼻祖的讲解)
& &&/dongguadan/surfaceDraw
& &(博主的DEMO)
& & 开发步骤
& & 1、搭建环境。
& & 初学者不建议使用原生态的eclipse加上各种复杂的配置来进行环境搭建,那只会让你失去学习的乐趣,直接使用配套产品adt-bundle-windows-x86比较简洁。解压准备好adt-bundle-windows-x86、ndroid-ndk-r4b,装好cygwin,进行工程配置,主要是配置交叉编译器(eclipse是不能直接编译C系的,需要外部编译器),如图2、3。
& & 2、编译工程
& & 可以先使用android-ndk-r4b自带的hello-jni,也可以使用博主根据havlenapetr裁剪的surfaceDraw(一个简单的播放器,实现对SD卡中的视频文件进行播放)。相比于havlenapetr,surfaceDraw功能简洁,没有涉及C++、java中一些复杂的技术,可以清晰的看出android调用C++封装的ffmpeg接口的过程。
& & 3、创建、运行模拟器
& & 首先创建模拟器(必须基于API2.2的,后面会说明这样做的原因),然后运行,导入视频文件到SD卡,运行APP,如图4、图5、图6。
& & 其实Android平台是内置多媒体处理的API的,例如MediaPlayer,只需短短的几行代码就可以实现上面整个工程的功能。但是读者可以仔细想想,如果是这样简单的话,那么岂不是谁都可以开发一个简洁的手机版暴风影音?另一方面,如果开发者想用播放器播放一段流媒体,这段流媒体的接收参数是一段网址(就想优酷在线观看一样),而不是本地视频路径,MediaPlayer可以么?当然不可以。所以我们需要开发一套可以满足自己需求的API。
& & 这就涉及到了Android framework层的知识了。Android简单说是运行在linux上的虚拟机,用过虚拟机的人都知道,那是相当的消耗资源,在虚拟机上在跑一个复杂的多媒体处理软件,效率可想而知。那么如何才能提高效率呢?在linux上运行C语言的程序效率当然是最高的,业内公认。所以需要有一种方法使Android 应用绕过虚拟层直接调用linux层的接口进行处理,这就是JNI技术的精髓,也是havlenapetr、surfaceDraw的实现原理。MediaPlayer其实也是用的这种技术,但是基于MediaPlayer的多媒体处理能力、灵活性当然是无法满足我们的需求的。
& & 唯一可惜的是目前为止的surfaceDraw只能在Android 2.X上运行,因为工程最重要的两个库libjniaudio.so、libjnivideo.so是基于Android2.X的源码编译的。基于Android4.X源码的编译博主尚位编译通过,主要原因是Android4.X对编译的环境要求比较高。后面有时间博主会提供给相关版本的libjniaudio.so、libjnivideo.so。
& & Android平台上的FFMpeg移植介绍到这里,下一篇会介绍linux平台上的FFMpeg与SDL的组合应用。标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文:/dongguadan/p/4149862.html
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!跨平台 UI/UX 设计示例 ―― Android & iOS 篇_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
跨平台 UI/UX 设计示例 ―― Android & iOS 篇
|0|0|暂无简介
人人都是产品经理社区()是...|
总评分0.0|
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩6页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢A complete, cross-platform solution to record, convert and stream audio and video.
Converting video and audio has never been so easy.
$ ffmpeg -i input.mp4 output.avi
October 30th, 2016, Results: Summer Of Code 2016.
This has been a long time coming but we wanted to give a proper closure to our participation in this run of the program and it takes time. Sometimes it's just to get the final report for each project trimmed down, others, is finalizing whatever was still in progress when the program finished: final patches need to be merged, TODO lists stabilized, you name it.
Without further ado, here's the silver-lining for each one of the projects we sought to complete during this Summer of Code season:
FFv1 (Mentor: Michael Nierdermayer)
Stanislav Dolganov designed and implemented experimental support for motion estimation and compensation in the lossless FFV1 codec. The design and implementation is based on the snow video codec, which uses OBMC. Stanislav's work proved that significant compression gains can be achieved with inter frame compression. FFmpeg welcomes Stanislav to continue working beyond this proof of concept and bring its advances into the official FFV1 specification within the IETF.
Self test coverage (Mentor: Michael Niedermayer)
Petru Rares Sincraian added several self-tests to FFmpeg and successfully went through the in-some-cases tedious process of fine tuning tests parameters to avoid known and hard to avoid problems, like checksum mismatches due to rounding errors on the myriad of platforms we support. His work has improved the code coverage of our self tests considerably.
MPEG-4 ALS encoder implementation (Mentor: Thilo Borgmann)
Umair Khan updated and integrated the ALS encoder to fit in the current FFmpeg codebase. He also implemented a missing feature for the ALS decoder that enables floating-point sample decoding. FFmpeg support for MPEG-4 ALS has been improved significantly by Umair's work. We welcome him to keep maintaining his improvements and hope for great contributions to come.
Tee muxer improvements (Mentor: Marton Balint)
Ján Sebechlebsk?'s generic goal was to improve the tee muxer so it tolerated blocking IO and allowed transparent error recovery. During the design phase it turned out that this functionality called for a separate muxer, so Ján spent his summer working on the so-called FIFO muxer, gradually fixing issues all over the codebase. He succeeded in his task, and the FIFO muxer is now part of the main repository, alongside several other improvements he made in the process.
TrueHD encoder (Mentor: Rostislav Pehlivanov)
Jai Luthra's objective was to update the out-of-tree and pretty much abandoned MLP (Meridian Lossless Packing) encoder for libavcodec and improve it to enable encoding to the TrueHD format. For the qualification period the encoder was updated such that it was usable and throughout the summer, successfully improved adding support for multi-channel audio and TrueHD encoding. Jai's code has been merged into the main repository now. While a few problems remain with respect to LFE channel and 32 bit sample handling, these are in the process of being fixed such that effort can be finally put in improving the encoder's speed and efficiency.
Motion interpolation filter (Mentor: Paul B Mahol)
Davinder Singh investigated existing motion estimation and interpolation approaches from the available literature and previous work by our own: Michael Niedermayer, and implemented filters based on this research. These filters allow motion interpolating frame rate conversion to be applied to a video, for example, to create a slow motion effect or change the frame rate while smoothly interpolating the video along the motion vectors. There's still work to be done to call these filters 'finished', which is rather hard all things considered, but we are looking optimistically at their future.
And that's it. We are happy with the results of the program and immensely thankful for the opportunity of working with such an amazing set of students. We can be a tough crowd but our mentors did an amazing job at hand holding our interns through their journey. Thanks also to Google for this wonderful program and to everyone that made room in their busy lives to help making GSoC2016 a success. See you in 2017!
September 24th, 2016, SDL1 support dropped.
Support for the SDL1 library has been dropped, due to it no longer being maintained (as of
January, 2012) and it being superseded by the SDL2 library. As a result, the SDL1 output device
has also been removed and replaced by an SDL2 implementation. Both the ffplay and opengl output
devices have been updated to support SDL2.
August 9th, 2016, FFmpeg 3.1.2 "Laplace"
, a new point release from the 3.1 release branch, is now available!
It fixes several bugs.
We recommend users, distributors, and system integrators, to upgrade unless they use current git master.
July 10th, 2016, ffserver program being dropped
After thorough deliberation, we're announcing that we're about to drop the ffserver program from the project starting with the next release.
ffserver has been a problematic program to maintain due to its use of internal APIs, which complicated the recent cleanups to the libavformat
library, and block further cleanups and improvements which are desired by API users and will be easier to maintain. Furthermore the program has
been hard for users to deploy and run due to reliability issues, lack of knowledgable people to help and confusing configuration file syntax.
Current users and members of the community are invited to write a replacement program to fill the same niche that ffserver did using the new APIs
and to contact us so we may point users to test and contribute to its development.
July 1st, 2016, FFmpeg 3.1.1 "Laplace"
, a new point release from the 3.1 release branch, is now available!
It mainly deals with a few ABI issues introduced in the previous release.
We strongly recommend users, distributors, and system integrators, especially those who experienced issues upgrading from 3.0, to
upgrade unless they use current git master.
June 27th, 2016, FFmpeg 3.1 "Laplace"
major release, is now available! Some of the highlights:
DXVA2-accelerated HEVC Main10 decoding
fieldhint filter
loop video filter and aloop audio filter
Bob Weaver deinterlacing filter
firequalizer filter
datascope filter
bench and abench filters
ciescope filter
protocol blacklisting API
MediaCodec H264 decoding
VC-2 HQ RTP payload format (draft v1) depacketizer and packetizer
VP9 RTP payload format (draft v2) packetizer
AudioToolbox audio decoders
AudioToolbox audio encoders
coreimage filter (GPU based image filtering on OSX)
libdcadec removed
bitstream filter for extracting DTS core
ADPCM IMA DAT4 decoder
musx demuxer
aix demuxer
remap filter
hash and framehash muxers
colorspace filter
hdcd filter
readvitc filter
VAAPI-accelerated format conversion and scaling
libnpp/CUDA-accelerated format conversion and scaling
Duck TrueMotion 2.0 Real Time decoder
Wideband Single-bit Data (WSD) demuxer
VAAPI-accelerated H.264/HEVC/MJPEG encoding
DTS Express (LBR) decoder
Generic OpenMAX IL encoder with support for Raspberry Pi
IFF ANIM demuxer & decoder
Direct Stream Transfer (DST) decoder
loudnorm filter
MTAF demuxer and decoder
MagicYUV decoder
OpenExr improvements (tile data and B44/B44A support)
BitJazz SheerVideo decoder
CUDA CUVID H264/HEVC decoder
10-bit depth support in native utvideo decoder
libutvideo wrapper removed
YUY2 Lossless Codec decoder
VideoToolbox H.264 encoder
We strongly recommend users, distributors, and system integrators to
upgrade unless they use current git master.
March 16th, 2016, Google Summer of Code
FFmpeg has been accepted as a
open source organization. If you wish to
participate as a student see our .
You can already get in contact with mentors and start working on qualification tasks as well as register at google and submit your project proposal draft.
Good luck!
February 15th, 2016, FFmpeg 3.0 "Einstein"
major release, is now available! Some of the highlights:
Over 30 new filters have been added
Many ASM optimizations
VP9 Hardware Acceleration (DXVA2 and VA-API)
Cineform HD decoder
New DCA decoder based on libdcadec with full support for DTS-HD extensions
As with all major releases expect major backward incompatible API/ABI changes
for a list of more updates
We strongly recommend users, distributors, and system integrators to
upgrade unless they use current git master.
January 30, 2016, Removing support for two external AAC encoders
We have just removed support for VisualOn AAC encoder (libvo-aacenc) and
libaacplus in FFmpeg master.
Even before marking our internal AAC encoder as
, it was known that libvo-aacenc
was of an inferior quality compared to our native one for most samples.
However, the VisualOn encoder was used extensively by the Android Open
Source Project, and we would like to have a tested-and-true stable option
in our code base.
When first committed in 2011, libaacplus filled in the gap of encoding
High Efficiency AAC formats (HE-AAC and HE-AACv2), which was not supported
by any of the encoders in FFmpeg at that time.
The circumstances for both have changed. After the work spearheaded by
Rostislav Pehlivanov and Claudio Freire, the now-stable FFmpeg native AAC
encoder is ready to compete with much more mature encoders. The Fraunhofer
FDK AAC Codec Library for Android was added in 2012 as the fourth
supported external AAC encoder, and the one with the best quality and the
most features supported, including HE-AAC and HE-AACv2.
Therefore, we have decided that it is time to remove libvo-aacenc and
libaacplus. If you are currently using libvo-aacenc, prepare to transition
to the native encoder (aac) when updating to the next version
of FFmpeg. In most cases it is as simple as merely swapping the encoder
name. If you are currently using libaacplus, start using FDK AAC
(libfdk_aac) with an appropriate profile option
to select the exact AAC profile that fits your needs. In both cases, you
will enjoy an audible quality improvement and as well as fewer licensing
headaches.
January 16, 2016, FFmpeg 2.8.5, 2.7.5, 2.6.7, 2.5.10
We have made several new point releases (,
They fix various bugs, as well as CVE- and CVE-.
Please see the changelog for each release for more details.
We recommend users, distributors and system integrators to upgrade unless they use
current git master.
December 5th, 2015, The native FFmpeg AAC encoder is now stable!
After seven years the native FFmpeg AAC encoder has had its experimental flag
removed and declared as ready for general use. The encoder is transparent
at 128kbps for most samples tested with artifacts only appearing in extreme
cases. Subjective quality tests put the encoder to be of equal or greater
quality than most of the other encoders available to the public.
Licensing has always been an issue with encoding AAC audio as most of the
encoders have had a license making FFmpeg unredistributable if compiled with
support for them. The fact that there now exists a fully open and truly
free AAC encoder integrated directly within the project means a lot to those
who wish to use accepted and widespread standards.
The majority of the work done to bring the encoder up to quality was started
during this year's GSoC by developer Claudio Freire and Rostislav Pehlivanov.
Both continued to work on the encoder with the latter joining as a developer
and mainainer, working on other parts of the project as well. Also, thanks
who does comparisons
and tests, the original authors and all past and current contributors to the
encoder. Users are suggested and encouraged to use the encoder and provide
feedback or breakage reports through our .
October 13th, 2015, Telepoint & MediaHub are now supporting our project
A big thank you note goes to our newest supporters: MediaHub and Telepoint.
Both companies have donated a dedicated server with free of charge internet
connectivity. Here is a little bit about them in their own words:
is the biggest
carrier-neutral data center in Bulgaria. Located in the heart of Sofia
on a cross-road of many Bulgarian and International networks, the
facility is a fully featured Tier 3 data center that provides flexible
customer-oriented colocation solutions (ranging from a server to a
private collocation hall) and a high level of security.
MediaHub Ltd. is a Bulgarian IPTV platform and services provider which
uses FFmpeg heavily since it started operating a year ago. "Donating
to help keep FFmpeg online is our way of giving back to the community"
Thanks Telepoint and MediaHub for their support!
September 29th, 2015, GSoC 2015 results
FFmpeg participated to the latest edition of
Project. FFmpeg got a total of 8 assigned
projects, and 7 of them were successful.
We want to thank , the
participating students, and especially the mentors who joined this
effort. We're looking forward to participating in the next GSoC
Below you can find a brief description of the final outcome of
each single project.
Basic servers for network protocols, mentee: Stephan Holljes, mentor: Nicolas George
Stephan Holljes's project for this session of Google Summer of Code was to
implement basic HTTP server features for libavformat, to complement the
already present HTTP client and RTMP and RTSP server code.
The first part of the project was to make the HTTP code capable of accepting
it was completed partly during the qualification period and
partly during the first week of the summer. Thanks to this work, it is now
possible to make a simple HTTP stream using the following commands:
ffmpeg -i /dev/video0 -listen 1 -f matroska \
-c:v libx264 -preset fast -tune zerolatency http://:8080
ffplay http://localhost:8080/
The next part of the project was to extend the code to be able to accept
several clients, simultaneously or consecutively. Since libavformat did not
have an API for that kind of task, it was necessary to design one. This part
was mostly completed before the midterm and applied shortly afterwards.
Since the ffmpeg command-line tool is not ready to serve several clients,
the test ground for that new API is an example program serving hard-coded
The last and most ambitious part of the project was to update ffserver to
make use of the new API. It would prove that the API is usable to implement
real HTTP servers, and expose the points where more control was needed. By
the end of the summer, a first working patch series was undergoing code
Browsing content on the server, mentee: Mariusz Szczepańczyk, mentor: Lukasz Marek
Mariusz finished an API prepared by the FFmpeg community and implemented
Samba directory listing as qualification task.
During the program he extended the API with the possibility to
remove and rename files on remote servers. He completed the
implementation of these features for file, Samba, SFTP, and FTP
protocols.
At the end of the program, Mariusz provided a sketch of an
implementation for HTTP directory listening.
Directshow digital video capture, mentee: Mate Sebok, mentor: Roger Pack
Mate was working on directshow input from digital video sources. He
got working input from ATSC input sources, with specifiable tuner.
The code has not been committed, but a patch of it was sent to the
ffmpeg-devel mailing list for future use.
The mentor plans on cleaning it up and committing it, at least for the
ATSC side of things. Mate and the mentor are still working trying to
finally figure out how to get DVB working.
Implementing full support for 3GPP Timed Text Subtitles, mentee: Niklesh Lalwani, mentor: Philip Langdale
Niklesh's project was to expand our support for 3GPP Timed Text
subtitles. This is the native subtitle format for mp4 containers, and
is interesting because it's usually the only subtitle format supported
by the stock playback applications on iOS and Android devices.
ffmpeg already had basic support for these subtitles which ignored all
formatting information - it just provided basic plain-text support.
Niklesh did work to add support on both the encode and decode side for
text formatting capabilities, such as font size/colour and effects like
bold/italics, highlighting, etc.
The main challenge here is that Timed Text handles formatting in a very
different way from most common subtitle formats. It uses a binary
encoding (based on mp4 boxes, naturally) and stores information
separately from the text itself. This requires additional work to track
which parts of the text formatting applies to, and explicitly dealing
with overlapping formatting (which other formats support but Timed
Text does not) so it requires breaking the overlapping sections into
separate non-overlapping ones with different formatting.
Finally, Niklesh had to be careful about not trusting any size
information in the subtitles - and that's no joke: the now infamous
Android stagefright bug was in code for parsing Timed Text subtitles.
All of Niklesh's work is committed and was released in ffmpeg 2.8.
libswscale refactoring, mentee: Pedro Arthur, mentors: Michael Niedermayer, Ramiro Polla
Pedro Arthur has modularized the vertical and horizontal scalers.
To do this he designed and implemented a generic filter framework
and moved the existing scaler code into it. These changes now allow
easily adding removing, splitting or merging processing steps.
The implementation was benchmarked and several alternatives were
tried to avoid speed loss.
He also added gamma corrected scaling support.
An example to use gamma corrected scaling would be:
ffmpeg -i input -vf scale=512:384:gamma=1 output
Pedro has done impressive work considering the short time available,
and he is a FFmpeg committer now. He continues to contribute to
FFmpeg, and has fixed some bugs in libswscale after GSoC has
AAC Encoder Improvements, mentee: Rostislav Pehlivanov, mentor: Claudio Freire
Rostislav Pehlivanov has implemented PNS, TNS, I/S coding and main
prediction on the native AAC encoder. Of all those extensions, only
TNS was left in a less-than-usable state, but the implementation has
been pushed (disabled) anyway since it's a good basis for further
improvements.
PNS replaces noisy bands with a single scalefactor representing the
energy of that band, gaining in coding efficiency considerably, and
the quality improvements on low bitrates are impressive for such a
simple feature.
TNS still needs some polishing, but has the potential to reduce coding
artifacts by applying noise shaping in the temporal domain (something
that is a source of annoying, notable distortion on low-entropy
Intensity Stereo coding (I/S) can double coding efficiency by
exploiting strong correlation between stereo channels, most effective
on pop-style tracks that employ panned mixing. The technique is not as
effective on classic X-Y recordings though.
Finally, main prediction improves coding efficiency by exploiting
correlation among successive frames. While the gains have not been
huge at this point, Rostislav has remained active even after the GSoC,
and is polishing both TNS and main prediction, as well as looking for
further improvements to make.
In the process, the MIPS port of the encoder was broken a few times,
something he's also working to fix.
Animated Portable Network Graphics (APNG), mentee: Donny Yang, mentor: Paul B Mahol
Donny Yang implemented basic keyframe only APNG encoder as the
qualification task. Later he wrote interframe compression via
various blend modes. The current implementation tries all blend
modes and picks one which takes the smallest amount of memory.
Special care was taken to make sure that the decoder plays
correctly all files found in the wild and that the encoder
produces files that can be played in browsers that support APNG.
During his work he was tasked to fix any encountered bug in the
decoder due to the fact that it doesn't match APNG
specifications. Thanks to this work, a long standing bug in the
PNG decoder has been fixed.
For latter work he plans to continue working on the encoder,
making it possible to select which blend modes will be used in the
encoding process. This could speed up encoding of APNG files.
September 9th, 2015, FFmpeg 2.8
We published release
as new major version.
It contains all features and bug fixes of the git master branch from September 8th. Please see
for a list of the most important changes.
We recommend users, distributors and system integrators to upgrade unless they use current git master.
August 1st, 2015, A message from the FFmpeg project
Dear multimedia community,
The resignation of Michael Niedermayer as leader of FFmpeg yesterday has
come by surprise. He has worked tirelessly on the FFmpeg project for many
years and we must thank him for the work that he has done. We hope that in
the future he will continue to contribute to the project. In the coming
weeks, the FFmpeg project will be managed by the active contributors.
The last four years have not been easy for our multimedia community - both
contributors and users. We should now look to the future, try to find
solutions to these issues, and to have reconciliation between the forks,
which have split the community for so long.
Unfortunately, much of the disagreement has taken place in inappropriate
venues so far, which has made finding common ground and solutions
difficult. We aim to discuss this in our communities online over the coming
weeks, and in person at the VideoLAN Developer
Days in Paris in September: a neutral venue for the entire open source
multimedia community.
The FFmpeg project.
July 4th, 2015, FFmpeg needs a new host
UPDATE: We have received more than 7 offers for hosting and servers, thanks a lot to everyone!
After graciously hosting our projects (,
and ) for 4 years, Arpi (our hoster) has informed us that we have to secure a new host somewhere else immediately.
If you want to host an open source project, please let us know, either on
mailing list or irc.freenode.net #ffmpeg-devel.
We use about 4TB of storage and at least 4TB of bandwidth / month for various mailing lists, , , svn, etc.
March 16, 2015, FFmpeg 2.6.1
We have made a new major release ()
and now one week afterward 2.6.1. It contains all features and bugfixes of the git master branch from the 6th March.
Please see the
list of note-worthy changes.
We recommend users, distributors and system integrators to upgrade unless they use
current git master.
March 4, 2015, Google Summer of Code
FFmpeg has been accepted as a
Project. If you wish to
participate as a student see our .
You can already get in contact with mentors and start working on qualification tasks. Registration
at Google for students will open March 16th. Good luck!
March 1, 2015, Chemnitzer Linux-Tage
We happily announce that FFmpeg will be represented at Chemnitzer Linux-Tage
(CLT) in Chemnitz, Germany. The event will take place on 21st and 22nd of March.
More information can be found
We demonstrate usage of FFmpeg, answer your questions and listen to
your problems and wishes. If you have media files that cannot be
processed correctly with FFmpeg, be sure to have a sample with you
so we can have a look!
For the first time in our CLT history, there will be an FFmpeg workshop!
You can read the details .
The workshop is targeted at FFmpeg beginners. First the basics of
multimedia will be covered. Thereafter you will learn how to use
that knowledge and the FFmpeg CLI tools to analyse and process media
files. The workshop is in German language only and prior registration
is necessary. The workshop will be on Saturday starting at 10 o'clock.
We are looking forward to meet you (again)!
December 5, 2014, FFmpeg 2.5
We have made a new major release ()
It contains all features and bugfixes of the git master branch from the 4th December.
Please see the
list of note-worthy changes.
We recommend users, distributors and system integrators to upgrade unless they use
current git master.
October 10, 2014, FFmpeg is in Debian unstable again
We wanted you to know there are
again. A big thank-you
to Andreas Cadhalpun and all the people that made it possible. It has been anything but simple.
Unfortunately that was already the easy part of this news. The bad news is the packages probably won't
migrate to Debian testing to be in the upcoming release codenamed jessie.
However things will come out in the end, we hope for your continued remarkable support!
October 8, 2014, FFmpeg secured a place in OPW!
Thanks to a generous 6K USD donation by Samsung (Open Source Group),
FFmpeg will be welcoming at least 1 "Outreach Program for Women" intern
to work with our community for an initial period starting December 2014
(through March 2015).
We all know FFmpeg is used by the industry, but even while there are
countless products building on our code, it is not at all common for
companies to step up and help us out when needed. So a big thank-you
to Samsung and the OPW program committee!
If you are thinking on participating in OPW as an intern, please take
a look at our
for some initial guidelines. The page is still a work in progress, but
there should be enough information there to get you started. If you, on
the other hand, are thinking on sponsoring work on FFmpeg through the
OPW program, please get in touch with us at opw@ffmpeg.org. With your
help, we might be able to secure some extra intern spots for this round!
September 15, 2014, FFmpeg 2.4
We have made a new major release ()
It contains all features and bugfixes of the git master branch from the 14th September.
Please see the
list of note-worthy changes.
We recommend users, distributors and system integrators to upgrade unless they use
current git master.
August 20, 2014, FFmpeg 2.3.3, 2.2.7, 1.2.8
We have made several new point releases (,
They fix various bugs, as well as CVE- and CVE-.
Please see the changelog for more details.
We recommend users, distributors and system integrators to upgrade unless they use
current git master.
July 29, 2014, Help us out securing our spot in OPW
Following our previous post regarding our participation on this year's
OPW (Outreach Program for Women), we are now reaching out to our users
(both individuals and companies) to help us gather the needed money to
secure our spot in the program.
We need to put together 6K USD as a minimum but securing more funds would
help us towards getting more than one intern.
You can donate by credit card using
and selecting the "OPW" option. If you would like to
donate by money transfer or by check, please get in touch by
and we will get back to you
with instructions.Thanks!
July 20, 2014, New website
The FFmpeg project is proud to announce a brand new version of the website
made by . While this was initially motivated
by the need for a larger menu, the whole website ended up being redesigned,
and most pages got reworked to ease navigation. We hope you'll enjoy
browsing it.
July 17, 2014, FFmpeg 2.3
We have made a new major release ()
It contains all features and bugfixes of the git master branch from the 16th July.
Please see the
list of note-worthy changes.
We recommend users, distributors and system integrators to upgrade unless they use
current git master.
July 3, 2014, FFmpeg and the Outreach Program For Women
FFmpeg has started the process to become an OPW includer organization for the
next round of the program, with internships starting December 9. The
aims to "Help women (cis and trans)
and genderqueer to get involved in free and open source software". Part of the
process requires securing funds to support at least one internship (6K USD), so
if you were holding on your donation to FFmpeg, this is a great chance for you
to come forward, get in touch and help both the project and a great initiative!
We have set up an
you can use
to contact us about donations and general inquires regarding our participation
in the program. Hope to hear from you soon!
June 29, 2014, FFmpeg 2.2.4, 2.1.5, 2.0.5, 1.2.7, 1.1.12, 0.10.14
We have made several new point releases (,
They fix a
as well as several other bugs. See the git log for details.
We recommend users, distributors and system integrators to upgrade unless they use
current git master.
May 1, 2014, LinuxTag
Once again FFmpeg will be represented at LinuxTag in Berlin, Germany. The event will
take place from 8th to 10th of May. Please note that this year's LinuxTag is at a
different location closer to the city center.
We will have a shared booth with XBMC and VideoLAN.
If you have media files that cannot be processed correctly with
FFmpeg, be sure to have a sample with you so we can have a look!
More information about LinuxTag can be found
We are looking forward to see you in Berlin!
April 18, 2014, OpenSSL Heartbeat bug
Our server hosting the Trac issue tracker was vulnerable to the attack
against OpenSSL known as "heartbleed". The OpenSSL software library
was updated on 7th of April, shortly after the vulnerability was publicly
disclosed. We have changed the private keys (and certificates) for all
FFmpeg servers. The details were sent to the mailing lists by
Alexander Strasser, who is part of the project server team. Here is a
link to the user mailing list
We encourage you to read up on
It is possible that login data for the issue tracker was exposed to
people exploiting this security hole. You might want to change your password
in the tracker and everywhere else you used that same password.
April 11, 2014, FFmpeg 2.2.1
We have made a new point releases ().
It contains bug fixes for Tickets #2893, #3432, #3469, #3486, #3495 and #3540 as well as
several other fixes.
See the git log for details.
March 24, 2014, FFmpeg 2.2
We have made a new major release ()
It contains all features and bugfixes of the git master branch from 1st March.
A partial list of new stuff is below:
- HNM version 4 demuxer and video decoder
- Live HDS muxer
- setsar/setdar filters now support variables in ratio expressions
- elbg filter
- string validation in ffprobe
- support for decoding through VDPAU in ffmpeg (the -hwaccel option)
- complete Voxware MetaSound decoder
- remove mp3_header_compress bitstream filter
- Windows resource files for shared libraries
- aeval filter
- stereoscopic 3d metadata handling
- WebP encoding via libwebp
- ATRAC3+ decoder
- VP8 in Ogg demuxing
- side & metadata support in NUT
- framepack filter
- XYZ12 rawvideo support in NUT
- Exif metadata support in WebP decoder
- OpenGL device
- Use metadata_header_padding to control padding in ID3 tags (currently used in
MP3, AIFF, and OMA files), FLAC header, and the AVI "junk" block.
- Mirillis FIC video decoder
- Support DNx444
- libx265 encoder
- dejudder filter
- Autodetect VDA like all other hardware accelerations
We recommend users, distributors and system integrators to upgrade unless they use
current git master.
February 3, 2014, Chemnitzer Linux-Tage
We happily announce that FFmpeg will be represented at `Chemnitzer Linux-Tage'
in Chemnitz, Germany. The event will take place on 15th and 16th of March.
More information can be found
We invite you to visit us at our booth located in the Linux-Live area!
There we will demonstrate usage of FFmpeg, answer your questions and listen to
your problems and wishes.
If you have media files that cannot be processed correctly with
FFmpeg, be sure to have a sample with you so we can have a look!
We are looking forward to meet you (again)!
February 9, 2014, trac.ffmpeg.org / trac.mplayerhq.hu Security Breach
The server on which FFmpeg and MPlayer Trac issue trackers were
installed was compromised. The affected server was taken offline
and has been replaced and all software reinstalled.
FFmpeg Git, releases, FATE, web and mailinglists are on other servers
and were not affected. We believe that the original compromise happened
to a server, unrelated to FFmpeg and MPlayer, several months ago.
That server was used as a source to clone the VM that we recently moved
Trac to. It is not known if anyone used the backdoor that was found.
We recommend all users to change their passwords.
Especially users who use a password on Trac that they also use
elsewhere, should change that password at least elsewhere.
November 12, 2013, FFmpeg RFP in Debian
Since the splitting of Libav the Debian/Ubuntu maintainers have followed
the Libav fork. Many people have requested the packaging of ffmpeg in
Debian, as it is more feature-complete and in many cases less buggy.
, a Debian developer,
has proposed a Request For Package (RFP) in the Debian bug tracking
Please let the Debian and Ubuntu developers know that you support packaging
of the real FFmpeg! See Debian
for more details.
October 28, 2013, FFmpeg 2.1
We have made a new major release ()
It contains all features and bugfixes of the git master branch from 28th October.
A partial list of new stuff is below:
- aecho filter
- perspective filter ported from libmpcodecs
- ffprobe -show_programs option
- compand filter
- RTMP seek support
- when transcoding with ffmpeg (i.e. not streamcopying), -ss is now accurate
even when used as an input option. Previous behavior can be restored with
the -noaccurate_seek option.
- ffmpeg -t option can now be used for inputs, to limit the duration of
data read from an input file
- incomplete Voxware MetaSound decoder
- read EXIF metadata from JPEG
- DVB teletext decoder
- phase filter ported from libmpcodecs
- w3fdif filter
- Opus support in Matroska
- FFV1 version 1.3 is stable and no longer experimental
- FFV1: YUVA(444,422,420) 9, 10 and 16 bit support
- changed DTS stream id in lavf mpeg ps muxer from 0x8a to 0x88, to be
more consistent with other muxers.
- adelay filter
- pullup filter ported from libmpcodecs
- ffprobe -read_intervals option
- Lossless and alpha support for WebP decoder
- Error Resilient AAC syntax (ER AAC LC) decoding
- Low Delay AAC (ER AAC LD) decoding
- mux chapters in ASF files
- SFTP protocol (via libssh)
- libx264: add ability to encode in YUVJ422P and YUVJ444P
- Fraps: use BT.709 colorspace by default for yuv, as reference fraps decoder does
- make decoding alpha optional for prores, ffv1 and vp6 by setting
the skip_alpha flag.
- ladspa wrapper filter
- native VP9 decoder
- dpx parser
- max_error_rate parameter in ffmpeg
- PulseAudio output device
- ReplayGain scanner
- Enhanced Low Delay AAC (ER AAC ELD) decoding (no LD SBR support)
- Linux framebuffer output device
- HEVC decoder, raw HEVC demuxer, HEVC demuxing in TS, Matroska and MP4
- mergeplanes filter
We recommend users, distributors and system integrators to upgrade unless they use
current git master.}

我要回帖

更多关于 asp.net跨平台实践 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信