- 图片拼接成特效视频
- FFmpeg
- MediaCodec
- OpenGL
JavaCV
JavaCV是对各种常用计算机视觉库的封装后的一组jar包,其中封装了ffmpeg、OpenCV、libdc1394、OpenKinect、videoInput和ARToolKitPlus等计算机视觉编程人员常用库的接口,可以通过其中的utility类方便的在包括Android在内的Java平台上调用这些接口。其中使用最多的应该就是FFmpeg了。
找出人脸,同时比较两张图片中的人脸相似度:https://blog.csdn.net/nicebooks/article/details/8175002,
https://www.cnblogs.com/webRobot/p/6216994.html,
https://blog.csdn.net/u014365862/article/details/48212891
常用命令
FFmpeg常用命令汇总+文档汇总:https://www.jianshu.com/p/f07f0be088d0
ffplay命令播放媒体
- 播放本地文件 :
ffplay -window_title "test time" -ss 2 -t 10 -autoexit test.mp4 - 播放网络流:
ffplay -window_title "rtmp stream" rtmp://202.69.69.180:443/webcast/bshdlive-pc
- 播放本地文件 :
怎样快速的转换FLV视频为MP4格式
单个文件,就用如下命令:
ffmpeg -i "input.flv" -c copy "output.mp4"如果是整个文件夹中的所有flv文件需要批量转成mp4,那么使用以下命令:
for %i in (*.flv) do ffmpeg -i "%i" -c copy "%~ni.mp4"flv/mp4文件的合并有时候通过某些下载工具得到的flv/mp4文件是多段的,比如B站视频上下载一集40分钟左右的纪录片实际上是8个小片段,这时候可以新建一个txt文本文件,把你需要合并的flv/mp4和这个txt放在同一个文件夹里面,然后把需要合并的flv/mp4文件的名字按照顺序写在txt文件中并保存,格式如下:
file '【国家地理】COSMOS系列【熟肉-对后十一集修复】 (P10. 气候变化)[00].mp4' file '【国家地理】COSMOS系列【熟肉-对后十一集修复】 (P10. 气候变化)[01].mp4' file '【国家地理】COSMOS系列【熟肉-对后十一集修复】 (P10. 气候变化)[02].mp4' file '【国家地理】COSMOS系列【熟肉-对后十一集修复】 (P10. 气候变化)[03].mp4' file '【国家地理】COSMOS系列【熟肉-对后十一集修复】 (P10. 气候变化)[04].mp4' file '【国家地理】COSMOS系列【熟肉-对后十一集修复】 (P10. 气候变化)[05].mp4' file '【国家地理】COSMOS系列【熟肉-对后十一集修复】 (P10. 气候变化)[06].mp4' file '【国家地理】COSMOS系列【熟肉-对后十一集修复】 (P10. 气候变化)[07].mp4'
ffmpeg -f concat -safe 0 -i files.txt -c copy output.mp4即可得到一个完整的mp4文件
rtmp推流
ffmpeg -re -i 1.mp4 -c copy -f flv rtmp://127.0.0.1:1935/live/movie- 如何开发一款H5小程序直播
- 利用ffmpeg实现rtmp推流
- ffmpeg的RTMP推流
名词概念
- FFmpeg的名称来自MPEG视频编码标准,前面的“FF”代表“Fast Forward”
- 解复用(demux),表示从一路输入中分离出多路流(视频、音频、字幕等)。
把不同的流从某种容器中解析出来,这种行为叫做解复用(demux) - 编解码器(Codec):以帧为单位实现压缩数据和原始数据之间的相互转换的
- 复用(mux):把不同的流按照某种容器的规则放入容器,这种行为叫做复用(mux)
- 码率和帧率是视频文件的最重要的基本特征,对于他们的特有设置会决定视频质量。如果我们知道码率和时长那么可以很容易计算出输出文件的大小。
- 帧率:帧率也叫帧频率,帧率是视频文件中每一秒的帧数,肉眼想看到连续移动图像至少需要15帧。
- 码率:比特率(也叫码率,数据率)是一个确定整体视频/音频质量的参数,秒为单位处理的位数,码率和视频质量成正比,在视频文件中中比特率用bps来表达。
- https://zhuanlan.zhihu.com/p/117523405
FFMPEG 中I帧、B帧、P帧、PTS、DTS
- https://www.jianshu.com/p/2cfc19b4938c
- I帧表示关键帧,又称intra picture,I帧画面完整保留,解码时只需要本帧数据就可以完成(因为包含完整画面)。
- P帧前向预测编码帧 又称predictive-frame,表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)
- B帧双向预测内插编码帧 又称bi-directional interpolated prediction frame,是双向差别帧,也就是B帧记录的是本帧与前后帧的差别,换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累。
- 因此,I帧和P帧的解码算法比较简单,资源占用也比较少,I帧只要自己完成就行了,至于P帧,也只需要解码器把前一个画面缓存一下,遇到P帧时就使用之前缓存的画面就行。如果视频流只有I和P,解码器可以不管后面的数据,边读边解码,线性前进。如果视频流还有B帧,则需要缓存前面和当前的视频帧,待后面视频帧获得后,再解码。
ffmpeg/ffplay/ffprobe区别
- ffmpeg:
Hyper fast Audio and Video encoder
超快音视频编码器(类似爱剪辑) - ffplay:
Simple media player
简单媒体播放器 - ffprobe:
Simple multimedia streams analyzer
简单多媒体流分析器
播放软件推荐:VLC
- 要播放视频直播流,或者测试一个直播视频地址是否可以使用。这里推荐 VLC 媒体播放器。功能强大且跨平台。支持 Windows、Mac OS、Linux、Android、iOS。
官网地址:http://www.videolan.org/
打开播放器,选择菜单中“媒体”->“打开网络串流…”。在弹出页面中填入视频地址即可。
- windows 录屏软件Captura – TODO
- FFmpeg最全教程:https://cloud.tencent.com/developer/article/1773248
- FFmpeg jar 库,无需安装 –TODO javacv
- ffprobe 是一个多媒体流分析工具。它从多媒体流中收集信息,并且以人类和机器可读的形式打印出来。它可以用来检测多媒体流的容器类型,以及每一个多媒体流的格式和类型。它可以作为一个独立的应用来使用,也可以结合文本过滤器执行更复杂的处理。