![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
音视频
文章平均质量分 90
普通网友
这个作者很懒,什么都没留下…
展开
-
ffmpeg(七)合并音视频文件
前言在视频编辑领域经常会碰到这样的需求场景,用户选择了多段感兴趣的视频想把它们拼接成一个文件。本文的目标就是实现多段视频文件的合并。同时也接触到一个新的概念,流媒体封装格式类型:媒体格式分为流式和非流式,主要区别: 1、非流式的元信息通常存储在文件中开头,有时在结尾; 2、流式的元信息跟具体音视频数据同步存放的,所以多个流式文件简单串联在一起形成新的文件也能正常播放;多个非流式文件的合并则可能需要重新编解码才可以正常播放 3、例如mpg格式就是流式格式,通过直接依次取出每个文件的AVPack...原创 2021-05-15 14:19:27 · 1415 阅读 · 0 评论 -
ffmpeg(六)视频缩放及像素格式转换
前言1、视频缩放是指将视频放大或者缩小,放大或者缩小对应着不同的缩放算法,每一种算法性能和效果也不一致。视频缩小也是很常见的需求,各个点播平台基本上都会提供不同分辨率(超清1080P,高清720P,标清360P)的视频资源以适应用户不同网络条件的需求。 2、视频像素格式转换;安卓平台碎片化的特性,安卓手机录制的视频可能有多种不同像素格式,比如NV12,NV21等等,虽然他们都是YUV颜色空间,但是转换成RGB的方式和方法却不一致。视频缩放及像素格式转换流程视频缩放及像素格式转换相关命令...原创 2021-05-15 14:18:38 · 1289 阅读 · 0 评论 -
ffmpeg(九)MP4/MP3解封装
前言解封装包括很多层步骤,包括协议的解析,封装格式的解析。ffmpeg中,本地文件当做file://协议来解析,远程文件采用的传输协议有http(s),rtsp等等。封装格式比如MP4,MOV,TS,MPEG等等。对于ffmpeg来说,只需要调用一个借口函数即可完成解封装的所有步骤,非常简单解封装相关流程解封装相关函数介绍 1、AVFormatContext重要字段介绍(针对解封装后的) nb_streams:包含的流的个数 streams:每个流对象,流对象中包括音视频编...原创 2021-05-15 14:17:44 · 316 阅读 · 0 评论 -
ffmpeg(八)音视频封装到MP4/MP3
前言音视频封装指的是将编码后的数据放入具有一定规则的容器文件中,比如MP4文件,MOV文件,MP3文件等等。容器文件和编码方法是两个不同的概念,需要区分,不过MP3即是编码方法,也是一种容器文件。音视频封装是一种很常见的应用场景,比如封装成MP4文件,便于存储和传播。MP4既可以只包含音频或者视频,也可以同时包含多个音频和视频。本文以MP4为例,将音视频数据封装到MP4容器文件中封装相关流程音视频的封装是基于AVFormatContext来实现的封装相关函数1、int av...原创 2021-05-15 14:17:01 · 523 阅读 · 0 评论 -
ffmpeg-音视频精准截取
前言有时会碰到这样的需求场景,对一个视频中的某一段感兴趣,想要精确的截取这一段视频以及对应的音频。例如,有一个25fps的MP4的文件,时长20秒,我想要截取从5秒开始到15秒结束的视频以及对应的音频,这里有两点需要说明: 1、对于视频:开始时间5秒,结束时间15秒。只能做到尽量接近,因为源文件25fps,即每一帧的显示间隔为0.04秒,可能5秒附近的视频帧刚好在5.012秒,最大误差一帧时间差就是1/25==0.04秒,所以4.96-5.04秒范围内都可以。 2、对于音频:比如采样率44100,每一个原创 2021-05-15 14:16:12 · 1650 阅读 · 0 评论 -
ffmpeg-视频压缩和翻转滤镜
ffmpeg内置了很多滤镜库,都封装在AVFilter模块中,通过这个滤镜模块可以用来更加方便的处理音视频。比如视频分辨率压缩滤镜scale(用来对视频的分辨率进行缩放),视频翻转滤镜transpose(对视频进行上下左右的翻转);音频格式转换滤镜aformat(它实际上最终是调用avresample滤镜实现的),volume(用来调整音量大小)等等。关于ffmpeg的滤镜AVFilter源码及编译 1、默认情况下libavfilter模块会编译如下文件: OBJS = allfilters.o ...原创 2021-05-15 14:15:15 · 293 阅读 · 0 评论 -
基于 ffmpeg 的跨平台播放器实现
背景:随着游戏娱乐等直播业务的增长,在移动端观看直播的需求也日益迫切。但是移动端原生的播放器对各种直播流的支持却不是很好。Android 原生的 MediaPlayer 不支持 flv、hls 直播流,iOS 只支持标准的 HLS 流。本文介绍一种基于 ffplay 框架下的跨平台播放器的实现,且兼顾硬解码的实现。播放器原理:直观的讲,我们播放一个媒体文件一般需要5个基本模块,按层级顺序:文件读取模块(Source)、解复用模块(Demuxer)、视频频解码模块(Decoder)、色彩空间...原创 2021-05-15 13:02:44 · 129 阅读 · 0 评论