草庐IT

【无标题】

GeekRainBoy 2023-08-27 原文

音视频基础总结

一、视频编码

通过指定的压缩技术,将某个视频格式文件转化成另一种视频格式文件。
主要有MPEG系列(由ISO组织开发):MPEG1(VCD)、MPEG2(DVD)、MPEG4 AVC(正热门)。
H.26X系列(由ITU主导,侧重网络传输,只有视频编码):H.261、H.262、H.263、H.264

二、音频编码

ACC:专为声音数据设计的文件压缩格式。相比MP3,音质更佳,文件更小。但其属于有损编码。
MP3:动态影像专家压缩标准音频层面3。设计用来大幅度降低音频数据量。将时域波形信号转换为频域,并对不同频段的数据使用不同编码方式,可以达到1:10甚至1:12的压缩率。
AC3:提供6个独立声道,由5个全频域声道和1个超低声道组成,被称为5.1声道。

三、Android多媒体播放组件

MediaPlayer:播放控制
MediaCodec:音视频编解码
OMX:多媒体部分采用的编解码标准
StageFright:主要做了一个OMX层
AudioTrack:音频播放

四、常用的多媒体框架

VLC:Video LAN Client,一款自由、开源的跨平台多媒体播放器及框架
FFmpeg:多媒体解决方案,不是多媒体框架,广泛应用于多媒体开发
GStreamer:一套构建流媒体应用的开源多媒体架构

五、相关知识点

  1. 帧率
    每秒显示的帧数(fps或Hz),表示图像处理器处理场时每秒更新的次数。高帧率可以提供流畅、逼真的画面。

  2. 分辨率
    视频成像产品所形成的图像大小或尺寸。

  3. 刷新率
    屏幕每秒画面倍刷新的次数。分为垂直刷新和水平刷新。通常指的是垂直刷新,表示屏幕上每秒重绘多少次。刷新率越高,图像越稳定。

  4. 封装格式
    视频封装格式:MOV(QuickTime封装格式,苹果公司),MP4(国际通用的视频封装格式,占地小,画质清晰),WMV(微软视频格式磁盘空间占地小,通常小于MP4格式),FLV(形成极小的文件,加载速度极快,使网络观看视频文件成为可能,所以一般在网上观看的视频都是FLV格式的)
    音频封装格式:WAVE(微软公司开发的一种声音文件格式,在剪辑设备中比较稳定,占地空间和质量都大于MP3),MP3(常用音频的格式,质量的不如WAV,但是空间占地小,方便下载),APEAPE(无损压缩格式之一,可以更精炼的记录方式来缩减体积)

  5. 码率
    也就是比特率,单位时间播放连续的媒体的比特数量。比特率越高,带宽消耗越多。
    文件大小(b)=码率(b/s)* 时长(s)
    码率越大,画质不一定更好,视频也不一定更流畅,视频质量与码率、编码算法都有关系。

  6. DTS与PTS
    DTS:(Decode Time Stamp)用于表示读入内存中的比特流在什么时候开始送入编码器中进行解码
    PTS:(Presentation Time Stamp)用于度量解码后视频帧什么时候显示出来

  7. 颜色空间模型
    YUV:Y表示亮度,UV表示色差
    RGB:通过3个颜色通道的变化以及相互叠加来得到各式各样的颜色

  8. 视频帧
    I帧:表示关键帧,这一帧保留完整的画面,解码时只需本帧数据就可以完成
    P帧:表示这一帧和之前的一个关键帧的差别。解码时需要之前的画面叠加本帧定义的差别数据形成最终画面
    B帧:双向差别帧,记录本帧和前后帧的差别。解码时需要取得前后帧的画面数据与本帧叠加生成

  9. 音频帧
    音频帧与编码格式相关。
    PCM:根据采样定律和采样精度就可以播放
    AMR:规定每20ms的音频为1帧,每一帧相互独立
    MP3:包含采样率、比特率等参数,音频数据帧个数由文件大小和帧长决定,每一帧长度可能不固定

  10. 量化精度
    表示可以将模拟信号分成多少个等级,量化精度越高,音乐的声压振幅越接近原音乐。单位bit,CD的量化精度16bit,DVD的量化精度24bit

  11. 采样率
    每秒音频采样点个数,单位Hz

  12. 声道
    指声音在录制或播放时在不同空间位置采集或回放的相互独立的音频信号。声道数为录制时的音源数量或回放时扬声器数量
    单声道:一个扬声器
    立体声道:将单声道扩展为左右对称的两个扬声器
    4声道:4个发音点,前左、前右、后左、后右
    4.1声道:在4声道上额外加了 低音炮
    5.1声道:源自4.1,将环绕声一分为二
    7.1声道:在5.1基础上,增加了中左和中右

有关【无标题】的更多相关文章

  1. ruby-on-rails - 使用 Rmagick 或 ImageMagick 在背景上放置标题 - 2

    我有一张背景图片,我想在其中添加一个文本框。我想弄清楚如何将标题放置在其顶部的正确位置。(我使用标题是因为我需要自动换行功能)。现在,我只能让文本显示在左上角,但我需要能够手动定位它的开始位置。require'RMagick'require'Pry'includeMagicktext="Loremipsumdolorsitamet"img=ImageList.new('template001.jpg')img 最佳答案 这是使用convert的ImageMagick命令行的答案。如果你想在Rmagick中使用这个方法,你必须自己移植

  2. ruby - 如何跳过 CSV 文件的第一行并将第二行作为标题 - 2

    有没有办法跳过CSV文件的第一行,让第二行作为标题?我有一个CSV文件,第一行是日期,第二行是标题,所以我需要能够在遍历它时跳过第一行。我尝试使用slice但它会将CSV转换为数组,我真的很想将其读取为CSV,以便我可以利用header。 最佳答案 根据您的数据,您可以使用另一种方法和skip_lines-option此示例跳过所有以#开头的行require'csv'CSV.parse(DATA.read,:col_sep=>';',:headers=>true,:skip_lines=>/^#/#Markcomments!)do|

  3. ruby - 如何在 selenium-webdriver 中获取窗口标题、ID 和名称? - 2

    我正在尝试从selenium-webdriver(ruby)实现以下方法get_all_window_idsget_all_window_titlesget_all_window_names我运行了SeleniumIDE并将我的脚本导出到RubyTest::Unit。另存为.rb使用AptanaStudio3打开我的脚本进行编辑初始代码片段如下:require"rubygems"require"selenium-webdriver"require"test/unit"classSwitchToPopup3我不断得到的错误是NoMethodError:undefinedmethod`ge

  4. 微信小程序顶部标题栏与胶囊对齐 - 2

    介绍    最近在做微信小程序时,顶部标题栏总是与胶囊对不齐。往往是在这款手机上对齐了,在另外一款手机差很多。我在查阅资料后,提出了一种方法解决这个问题,即:在页面onLoad或组件created时,利用微信小程序提供的API,获取系统状态栏高度和胶囊信息,进而动态调整顶部标题栏样式。在苹果、小米、荣耀手机做验证,能做到精准对齐。理论        胶囊样式应该是垂直居中,有1px的border,border-radius为18px。        若要使顶部标题栏与胶囊对齐,则其高度必须是导航栏高度,标题栏内容也要垂直居中,顶部标题栏的外边距或内边距必须是状态栏高度。        如果顶部

  5. ruby-on-rails - wicked_pdf 不呈现标题 - 2

    render:pdf=>"file_name",:layout=>'pdf.html.erb',:template=>'transactions/show.pdf.erb',:wkhtmltopdf=>WICKED_PDF_BIN,:show_as_html=>true,:layout=>'pdf.html.erb',:header=>{:html=>{:template=>'shared/header.pdf.erb'}}PDF生成正常,不幸的是我没有看到标题。我可以将页眉粘贴在主布局中,它也可以正常工作。在我看来,上面的标题行没有被处理。文件名“header.pdf.erb”似乎无

  6. ruby-on-rails - 为 Ruby/Rails 动态更改 iTerm2 选项卡标题 - 2

    我正在使用iTerm2,通常会打开很多选项卡。不幸的是,所有选项卡都显示相同的标题“ruby”,因为它都是ruby​​脚本。但一个是railsserver,另一个是railsconsole,下一个是“spork”,...我想将选项卡标题动态设置为“server”、“console”或类似的东西,只要进程是运行并在完成后返回默认值(“bash”)。有人知道怎么做吗?谢谢。 最佳答案 此命令会将选项卡的标题设置为MY_NEW_TITLEecho-e"\033];MY_NEW_TITLE\007"

  7. Ruby Mechanize 带有标题的帖子 - 2

    我有一个带有js的页面,它通过XMLHttpRequest和服务器端脚本检查这个header,如何发送这个header?agent=WWW::Mechanize.new{|a|a.user_agent_alias='MacSafari'a.log=Logger.new('./site.log')}agent.post('http://site.com/board.php',{'act'=>'_get_page',"gid"=>1,'order'=>0,'page'=>2})do|page|ppageend 最佳答案 我通过网络搜索找

  8. ruby-on-rails - 如何从 ruby​​ 中的 CSV 文件中获取标题 - 2

    我需要在解析CSV文件中的数据之前验证其中的header。#convertthedataintoanarrayofhashesCSV::Converters[:blank_to_nil]=lambdado|field|field&&field.empty??nil:fieldendcsv=CSV.new(file,:headers=>true,:header_converters=>:symbol,:converters=>[:all,:blank_to_nil])csv_data=csv.to_a.map{|row|row.to_hash}我知道我可以使用headers方法来获取标题

  9. ruby-on-rails - 标题化连字符的名称 - 2

    Rails'titleize方法删除连字符,Ruby的capitalize方法不会将连字符后面的单词大写。我想要如下内容:"mary-joespencer-moore"=>"Mary-JoeSpencer-Moore""mary-louiseo'donnell"=>"Mary-LouiseO'Donnell" 最佳答案 CheckTitelizeimplementation从中你可以得到:"mary-joespencer-moore".humanize.gsub(/\b('?[a-z])/){$1.capitalize}会给你=>"

  10. ruby - 使用 MIddleman 3.0 - 如何在动态页面上设置单独的页面标题? - 2

    我正在中间人中建立一个简单的投资组合网站。我根据本地YAML数据动态生成“工作”页面。这是在config.rb中:data.work.projects.eachdo|project|page"/work/#{project[0]}.html",:proxy=>"project_template.html"do@project=projectendend出于SEO目的,我希望这些动态生成的页面中的每一个都具有唯一的页面标题和描述。标题目前在布局文件中是这样设置的%title=current_page.data.title我知道我可以像这样使用frontmatter设置current_pa

随机推荐