音频编码

FFMPEG音视频解码

ぃ、小莉子 提交于 2020-01-04 15:58:32
文章转自: https://www.cnblogs.com/CoderTian/p/6791638.html 1.播放多媒体文件步骤 通常情况下,我们下载的视频文件如MP4,MKV、FLV等都属于封装格式,就是把音视频数据按照相应的规范,打包成一个文本文件。我们可以使用MediaInfo这个工具查看媒体文件的相关信息。 所以当我们播放一个媒体文件时,通常需要经过以下几个步骤 ①解封装(Demuxing):就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。 ②解码(Decode):就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。音频的压缩编码标准包含AAC,MP3等,视频的压缩编码标准则包含H.264,MPEG2等。解码是整个系统中最重要也是最复杂的一个环节。通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV、RGB等等;压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据。 ③音视频同步:就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的音频和视频数据

音视频即时通讯开发中音频模式的采集

早过忘川 提交于 2020-01-04 06:43:14
在很多即时通讯应用中,会根据应用场景的不同,需要对音频输入源进行选择,不同的应用场景对应不同的音频工作模式。需要支持多种音频工作(采集)模式,包括: 1 、发言模式(默认) :自动选择麦克风为音频输入源设备,用户说话的声音被麦克风采集,启动音频特效处理(包括:回音消除、静音检测、噪音抑制、自动增溢),该模式通常应用于互动交流,用户发言讨论等场合; 2 、放歌模式 :自动选择立体声混音输入源设备,本地计算机所播放的声音被采集,同时SDK内部会自动屏蔽其它用户的声音(如果不屏蔽,则用户的声音会被采集下来,并回传给用户,用户那边将会听到回音),SDK内部会自动关闭音频特效处理,该模式通常应用于向其他用户放歌,而不用关心其他用户发言的场合; 3 、卡拉OK模式 :自动选择立体声混音和麦克风两个输入源设备(该特性与硬件相关,有些声卡不支持同时采集麦克风和立体声混音),本地计算机所播放的声音和用户说话的声音将会被采集,同时SDK内部会自动屏蔽其它用户的声音,SDK内部会自动关闭音频特效处理,该模式通常应用于向其他用户放歌,同时自己用麦克风伴唱,而不用关心其它用户发言的场合; 4 、线路输入模式 :自动选择线路输入源设备,通过线路输入的声音将被采集(通常是指将外部的DV、DVD、TV等设备的音频输出端子接入声卡的LineIn口的应用),SDK内部会自动关闭音频特效处理

iOS 直播类APP开发流程分解:

北战南征 提交于 2019-12-31 00:39:05
1 . 音视频处理的一般流程: 数据采集→数据编码→数据传输(流媒体服务器) →解码数据→播放显示 1、 数据采集: 摄像机及拾音器收集视频及音频数据,此时得到的为原始数据 涉及技术或协议: 摄像机:CCD、CMOS 拾音器:声电转换装置(咪头)、音频放大电路 2、 数据编码: 使用相关硬件或软件对音视频原始数据进行编码处理(数字化)及加工(如音视频混合、打包封装等),得到可用的音视频数据 涉及技术或协议: 编码方式:CBR、VBR 编码格式 视频:H.265、H.264、MPEG-4等,封装容器有TS、MKV、AVI、MP4等 音频:G.711μ、AAC、Opus等,封装有MP3、OGG、AAC等 3、 数据传输: 将编码完成后的音视频数据进行传输,早期的音视频通过同轴电缆之类的线缆进行传输,IP网络发展后,使用IP网络优传输 涉及技术或协议: 传输协议:RTP与RTCP、RTSP、RTMP、HTTP、HLS(HTTP Live Streaming)等 控制信令:SIP和SDP、SNMP等 4、 解码数据: 使用相关硬件或软件对接收到的编码后的音视频数据进行解码,得到可以直接显示的图像/声音 涉及技术或协议: 一般对应的编码器都会带有相应的解码器,也有一些第三方解码插件等 5、 播放显示: 在显示器(电视、监视屏等)或扬声器(耳机、喇叭等)里,显示相应的图像画面或声音

音视频技术之直播架构

时光毁灭记忆、已成空白 提交于 2019-12-24 18:07:03
直播相关知识之一 基本架构 一. 引子-直播基本架构 下面是服务器的整体架构图: 上面上整体流程 相信一个开发者应该可以看的懂并理解吧! 主要分为四部分东西吧: 推流端SDK 负责 采集视频音频进行编码传输到服务端(某云), 服务端SDK负责 直播流的创建,分发到各个cdn节点,加快流的解析,以及各种流的管理统计等等 拉流端SDK负责 拉取流 进行解码解析 进行播放 本业务端负责 相关业务操作 比如授权地址 查询直播列表 等等 直播名词解释 1.推流 将直播内容推送至服务器的过程。 2.拉流 服务器已有直播内容,用指定地址进行拉取的过程。 3.RTMP协议 Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。 4.编码: H.264编码 是 高性能的视频编码技术,最大的优势是具有很高的数据压缩比率,能以较低的数据速率传送基于联网协议(IP)的视频流. 5.码率: 码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。 6.FPS: 帧率(Frame rate

OpenCV视频篇——视频文件格式--视频封装格式--视频编码格式区分

孤人 提交于 2019-12-19 04:32:59
目录 一、前言 二、视频文件格式(文件格式) 三、视频封装格式(视频格式) 1、AVI 2、QuickTime 3、高级流格式文件 4、RealVideo 5、NAVI 6、DivX 7、MPEG 四、视频编码 1、MPEG系列 2、H.26X系列 五、音频编码 六、视频像素编码 七、音频采样数据 一、前言 什么是影片?其实就是一组(很多张)图片,时间间隔很小的连续展示出来,人们就觉得画面中的人物在动,这就是影片。 那电影的实质就是N多张图片的集合。那每张图片和帧又有什么关系呢? 事实上,如果一部影片里面的图片,我们原封不动的全部存起来,空间会很大很大很大,但是如果通过一定的算法(这里不讲相关算 法),把每一张图片压缩(编码_encode)一下,变成帧。再把帧连起来变成流,再把不同的流放到某个容器里面,这就是我们平常看见的电影文件了. 文件 碟中谍4.H264.ACC.mkv,他为什么要这样命名呢? mkv表达了它的容器是.mkv的,且包含至少两个流,h264的视频流,ACC的音频流。这是一种典型的 牺牲时间来换取空间的做法。 二、视频文件格式(文件格式) 视频文件格式是指 视频保存的一种格式 ,视频是现在电脑中多媒体系统中的重要一环。为了适应储存视频的需要,人们设定了不同的视频文件格式来把视频和音频放在一个文件中,以方便同时回放。 Windows系统中文件名都有后缀,例如1

MediaCodec编码 音频pts设置

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-10 02:19:51
每一帧音频pcm录音,要进行mediacodec编码时,都需要为此pcm设置pts,在放入编码的input队列中。对于视频的pts来说,编码h264,一帧原始视频yuv420格式编码出的就是一帧h264,所以视频的pts可以直接取当前的时间戳就可以。但是对于音频来讲,一帧pcm数据,会编码出多帧的aac,mediacodec会根据送入编码器时设置的yuv420的pts,为每帧编码出的h264打一个pts。 音频的pts设置,就需要小心了。 首先,根据AudioRecord录音器配置的参数,根据采样率,声道数,采样位,和AudioRecord设置的输出buffer的大小,计算pts。 如下: buffer_duration_us = 1000000 * ((double) mAudioBufferSize / mAudioChanelCount / 2 / mAudioSampleRate); buffer_duration_us:每一帧pcm,需要叠加的时间间隔。 pts计算 pts = (long) (firstPresentationTimeUs + mCount * buffer_duration_us); if (getPTSUs() - pts > 300000) { firstPresentationTimeUs += getPTSUs() - pts; pts =

FFMPEG Tips 如何提取码流的基本信息

China☆狼群 提交于 2019-12-01 18:26:28
原文连接: https://zhuanlan.zhihu.com/p/23448271 1. 码流中的哪些信息值得关注 ? [ ] 是否包含:音频、视频 [ ] 码流的封装格式 [ ] 视频的编码格式 [ ] 音频的编码格式 [ ] 视频的分辨率、帧率、码率 [ ] 音频的采样率、位宽、通道数 [ ] 码流的总时长 [ ] 其他 Metadata 信息,如作者、日期等 ...... 来源: https://www.cnblogs.com/xuange306/p/11711888.html

视频文件的容器格式和编码格式

荒凉一梦 提交于 2019-11-28 08:02:31
一、概述 我们常见的视频文件,大多为 mkv、mov、mp4 等扩展名。一般情况下,我们粗略地根据扩展名判断文件类型。但实际上,科学的分类方法如下: 编码:指的是媒体文件中音视频的编码,如:H.264、AAC 容器:可根据文件扩展名区分,用于将多部分内容整合,包括: 视频 音频,可以是多音轨,如:一部影片同时具备多种语言 字幕:一部影片也可以包含多种语言的内置字幕 二、常见的文件(容器)格式 AVI (.avi)   其含义是 Audio Video Interactive,就是把视频和音频编码混合在一起储存,是最常见的音频视频容器。支持的视频音频编码也是最多的。AVI 也是最长寿的格式,已存在 10 余年了,虽然发布过改版(V2.0 于 1996 年发布),但已显老态。 MPG (.mpg/.mpeg/.dat)   MPEG 编码采用的音频视频容器,具有流的特性,里面又分为 PS、TS 等,PS 主要用于 DVD 存储,TS 主要用于 HDTV。 VOB (.vob)   DVD 采用的音频视频容器格式(即视频 MPEG-2,音频用 AC3 或者 DTS),支持多视频多音轨多字幕章节等。 MP4   MPEG-4 编码采用的音频视频容器,基于 QuickTime MOV 开发,具有许多先进特性。 3GP   3GPP 视频采用的格式,主要用于流媒体传送。 ASF (.wmv/

FFmpeg系列-2-命令行工具之FFmpeg

你说的曾经没有我的故事 提交于 2019-11-27 22:19:24
目录 | TABLE OF CONTENT 概述 详细说明 1 过滤filtering 11 简单过滤图以下使用simple filtergraphs 12 复杂过滤图complex filtergraphs 2 流拷贝Stream copy 流的选择Stream selection 选项Options  41 流说明符 2 一般选项 3 AV选项 4 主要选项 5 视频选项 6 视频高级选项 7 音频选项 8 高级音频选项 9 字幕选项 10 高级字幕选项 11 高级选项 12 预设文件 121 ffpreset文件 122 avpreset files 注意:为了避免专有名词翻译带来的混淆,直接使用专有名词原语言。你应该在理解其原理的基础之上来处理这些专有名词,而不是为了翻译。 1. 概述 ffmpeg是ffmpeg项目下的一个命令行工具,它是一个非常快速的音视频转换在工具,也可以从现场的音视频源获取(捕捉音视频源)。它可以在任意采样率之间进行转换,并使用高质量的多相过滤器即时调整视频大小。   ffmpeg通过指定 -i 选项可以从任意数量的输入”文件”中读取数据(这些可以是常规文件、命名管道文件、网络流、捕获设备等),并写入任意数量的输出”文件”,其中输出由一个纯粹的输出URL指定,任何在命令行中不能被解释为 选项 的内容都被认为是一个输出URL。   原则上

FFmpeg命令详解

我只是一个虾纸丫 提交于 2019-11-27 22:18:04
命令格式 功能 FFmpeg命令是在ffmpeg.exe可执行文件环境下执行,ffmpeg.exe用于音视频的转码,加水印,去水印,视频剪切,提取音频,提取视频,码率控制等等功能。 最简单的命令 ffmpeg -i input.avi -b:v 640k output.mp4 该命令将当前文件夹下的input.avi文件转换为output.mp4文件,并将output.mp4文件视频的码率设置为640kpbs。 命令格式 ffmpeg -i {输入文件路径} -b:v {输出视频码率} {输出文件路径} 所有的参数都是以键值对的形式指定的 。例如输入文件参数是”-i”,而参数值是文件路径;输出视频码率参数是”-b:v”,而参数值时视频的码率值。但是注意位于最后面的输出文件路径前面不包含参数名称。 命令参数 //音频拼接 //方式一: ffmpeg -i "concat:0.mp3|1.mp3" -acodec copy output.mp3 解释:-i代表输入参数 concat:0.mp3|1.mp3 需要连接到一起的音频文件 - acodec copy output.mp3 重新编码并复制到新文件中 //方式二: - i 124 .mp3 -i 123 .mp3 -filter_complex amix=inputs= 2 :duration=first :dropout