赞
踩
(1)、一套开源软件
(2)、可以记录,转换音视频:可以从摄像头中,记录视频,从声卡中,记录音频。可以转换成各种格式,保存起来。
(3)、好多视频播放器的内核就是FFmpeg。
这个流程的文字描述大概是这样的:
1)、从摄像头得到的原始的视频数据,但是数据太大,不易传输,需要压缩。对于视频,使用视频的编解码器进行压缩;
从声卡到的也可以原始的声音数据,但是数据太大,不易传输,需要压缩。对于音频,使用音频的编解码器进行压缩;(原始层+编码层)
2)、压缩以后,将音频和视频这两路数据合并起来。合并的方式就是以某种格式保存在一个MP4/flv或其他格式的文件中。(容器层)
注:
MP4只是一种封装格式,里面有音频数据(这些数据可以通过各种格式压缩,比如:MPEG-2,MPEG-4等),也有视频数据(比如:AAC,MPEG-1等)
把这些压缩后,即编码后的视频数据、音频数据合并在一起:复用、MUX,就得到了MP4等文件。
目前,音频主流的压缩格式是:AAC;视频主要的压缩格式是H.264。
3)、这些打包好的MP4/flv文件,会通过某种协议发送给流媒体服务器。(协议层)
4)、当用户想要观看的时候,用户在通过某种协议,将流媒体中的数据下载下来。(协议层)
5)、将下载下来的数据进行解复用。分成音频压缩文件和视频压缩文件。(容器层)
6)、将音频压缩文件和视频压缩文件分别进行解压,解压成原始数据,进行播放。(原始层+编码层)
扩展:压缩和编码的区别:
信息从一种形式或格式转换为另一种形式的过程称为编码。
对于数据编码不一定压缩数据,但压缩数据的结果一定是一种编码,即编码可以分为非压缩编码和压缩编码。
压缩可以在编码前进行,也可以在编码后针对编码结果进行压缩得到另一种编码。
为了理解这些组成,我们举一个例子:
基于这个图,我们引入一些术语:
注:用Filter(过滤器)来处理
旋转、拉伸
添加LOGO、消除LOGO等等
音频和视频是分开进行处理的,因此可以分别给他们设置参数:
1)、在builbroot里面,添加进ffmpeg。
make menuconfig
2)、输入sudo make进行编译,将ggmpeg编译进开发板,
3)、启动开发板:
查看设备节点:
ls /dev/video*
我们使用的是/dev/video1
4)、在开发板输入命令:将得到的视频保存在my.mp4文件。
ffmpeg -f v4l2 -framerate 10 -i /dev/video1 -q 10 my.mp4
5)、将my.mp4文件拷贝到PC机,播放。
测试总结:
这部分的测试,发现一个问题。由于开发板的性能很弱,当摄像头图像变化大(eg:晃动摄像头),开发板cpu的使用率会高达99%.这就会导致,我们摄像头开了eg:5秒,但是实际录下来的视频只有eg:2秒。(输入top命令,可以查看cpu的使用情况)。
因此,ffmpeg的实验,建议在windows下学习。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。