首页 > 其他分享 >音视频

音视频

时间:2023-01-10 22:44:35浏览次数:35  
标签:视频 浏览器 ffmpeg 音频 音视频 播放

音视频历史

大家都有在网页中浏览视频的经历,但在HTML5之前,对视频乃至音频都还没有一个标准 因此在网页中看到的视频,都是通过第三插件的方式嵌入的,可能是QuickTime,也可能是RealPlayer 或者 Flash。浏览器很好的整合了这些插件,你完全意识不到它们的存在

音视频格式

  • 大多数人会认为视频文件就是 .avi .mp4,但事实上 avi和mp4仅仅是容器的格式,它只决定怎么将视频存储起来,而不关系存储的内容。有点类似于.zip
  • 不管是音频文件或视频文件,实际上都只是一个容器文件。这点类似于压缩了一组文件的ZIP文件,视频文件(视频容器)包含了音频轨道、视频轨道和其他一些元数据。
  • 视频播放的时候,音频轨道和视频轨道是绑定在一起的。
  • 元数据包含了视频的封面、标题、子标题、字幕、时间等相关信息

编解码器

  • 音频和视频编码/解码是一组算法,用来对一段特定音频或视频进行解码和编码,以便音频和视频能够播放。

  • 原始的媒体文件体积非常巨大,如果不对其进行编码,那么数据量是非常惊人的,在互联网上传播则要耗费无法忍受的时间;

  • 如果不对其进行解码,就无法将编码后的数据重组为原始的媒体数据

不同浏览器对音视频的兼容性

目前还没有一种编解码和容器的组合能应用于所有的浏览器中!!!  

音视频格式的转换

使用ffmpeg工具

1.安装,并找到bin目录 2.在计算机图标上右键 3.选择属性 4.更改设置 5.高级 6.环境变量 7.找到系统变量的 path 8.把ffmpeg 的 bin的路径添到后边 9.一直点确定完成

测试是否安装成功

1.window+r 2.输入CMD 3.打开命令行窗口 输入ffmpeg 检测是否安装成功

ffmpeg的使用

用 FFmpeg 制作MP4 视频 ffmpeg -i test.mp4 -c:v libx264 -s 1280x720 -b:v 1500k -profile:v high -level 3.1 -c:a aac -ac 2 -b:a 160k -movflags faststart OUTPUT.mp4

用 FFmpeg 制作 WebM 视频 ffmpeg -i test.mp4 -c:v libvpx -s 1280x720 -b:v 1500k -c:a libvorbis -ac 2 -b:a 160k OUTPUT.webm

FFmpeg 制作 Ogg 视频 ffmpeg -i test.mp4 -c:v libtheora -s 1280x720 -b:v 1500k -c:a libvorbis -ac 2 -b:a 160k OUTPUT.ogv

FFmpeg 制作Mp3音频 ffmpeg -i tt.mp3 -c:a libmp3lame -ac 2 -b:a 160k OUTPUT.mp3

FFmpeg 制作Ogg音频 ffmpeg -i tt.mp3 -c:a libvorbis -ac 2 -b:a 160k OUTPUT.ogg

FFmpeg 制作ACC音频
ffmpeg -i tt.mp3 -c:a aac -ac 2 -b:a 160k OUTPUT.aac

音视频旧格式

  • <object> 标签的作用是在 HTML 页面中嵌入多媒体元素

    <object data="1.swf" width="400"></object>

  • <embed> 标签的作用是在 HTML 页面中嵌入多媒体元素

    <embed src="1.swf" width="400">

为什么淘汰:

  • 需要flash,效率低
  • 如果浏览器不支持 Flash,那么视频将无法播放
  • iPad 和 iPhone 不能显示 Flash 视频
  • 将视频转换为其他格式,仍然不能在所有浏览器中播放
  • 目前安卓4.4也抛弃了flash......

html5的新音视频标签

  • 视频基本标签用法 :

    • <video width=" " height="" src=""> </video>

    • src 属性:指定播放文件的URL。

    • width、height属性:

      • 设置媒体元素的大小,单位为像素;
      • 省略该属性,则使用播放源文件的大小;
      • 仅设置宽度值,将根据播放源文件的长宽比例自动生成一个与之对应的高度值。
  • 音频基本格式 :

    • <audio src="" controls> </audio>

    • src 属性:指定播放文件的URL。

    • 其他和视频一样。

  • 指定一种视频格式,不能播就提示: <video src="examp.mp4" >您的浏览器不支持</video>

  • 给定多个source标签,给定多种视频格式,浏览器根据自身支持程度选择播放哪一种 <source src="1.mp4" type="video/mp4" />

音视频标签的属性

 

  • preload:

    该属性旨在告诉浏览器作者认为达到最佳的用户体验的方式是什么

    • none: 提示作者认为用户不需要查看该视频,服务器也想要最小化访问流量;换句话说就是提示浏览器该视频不需要缓存。
    • metadata: 提示尽管我们认为用户不需要查看该视频,不过抓取元数据(比如:长度)还是很合理的。
    • auto: 用户需要这个视频优先加载;换句话说就是提示:如果需要的话,可以下载整个视频,即使用户并不一定会用它。
    • 空字符串:也就代指 auto 值。

标签:视频,浏览器,ffmpeg,音频,音视频,播放
From: https://www.cnblogs.com/z-bky/p/17041593.html

相关文章

  • WEB端音视频设备获取及流处理
    获取设备所有设备asyncfunctiongetDevices(){letdevices=awaitnavigator.mediaDevices.enumerateDevices()console.info(devices);}getDevices()......
  • Qt音视频开发10-ffmpeg内核硬解码
    一、前言为了极大的降低CPU的占用,实现硬解码(也叫硬件加速)非常有必要,一个视频文件或者一路视频流还好,如果增加到64路视频流呢,如果是4K、8K这种高分辨率的视频呢,必须安装上......
  • Qt音视频开发09-ffmpeg内核音视频同步
    一、前言用ffmpeg来做音视频同步,个人认为这个是ffmpeg基础处理中最难的一个,无数人就卡在这里,怎么也不准,本人也是尝试过网上各种demo,基本上都是渣渣,要么仅仅支持极其少量的......
  • 音视频开发进阶|第七讲:分辨率与帧率·上篇
     在视频系列的前几篇推文中,我们已经接触了视频相关的不少概念,它们都是围绕着几个核心角色:色彩、像素、图像和视频来展开的。这几个核心角色之间的关系,大家应该都有了基本......
  • 音视频开发进阶|第七讲:分辨率与帧率·上篇
    在视频系列的前几篇推文中,我们已经接触了视频相关的不少概念,它们都是围绕着几个核心角色:色彩、像素、图像和视频来展开的。这几个核心角色之间的关系,大家应该都有了基本的......
  • Qt音视频开发08-ffmpeg内核优化(极速打开/超时回调/实时响应)
    一、前言最初编写这套视频解析组件的时候,面对的场景是视频监控行业,对应设备都是网络监控摄像机,传过来的都是rtsp这种视频流,做过这一块的人都知道,打开某个视频流默认耗时比......
  • Qt音视频开发07-合并音视频文件
    一、前言之前已经把音视频分开存储了对应的文件,因为这个需求特别少,当然确实有部分用户是需要把音视频分开存储,但是毕竟是很少数,绝大部分的用户都是音视频合并到一个MP4文......
  • 音视频:JavaCV 视频切片(MPEG-TS)(HLS)
    需要进行简单的音视频编程,如果不是特别数据C/C++,那么JavaCV应该是比较好的选择,下面记录一下使用JavaCV视频切片(MPEG-TS)(HLS)的方法。注意:存放HLS切片的目录必须存在(不会自......
  • 音视频:JavaCV 视频转码(硬件加速)(GPU)
    需要进行简单的音视频编程,如果不是特别数据C/C++,那么JavaCV应该是比较好的选择,下面记录一下使用JavaCV分离AAC视频数据(转封装的方式,不需要转码)的方法。使用硬件加速编码......
  • 音视频:JavaCV AAC数据内存读写(PipedInputStream管道流)
    需要进行简单的音视频编程,如果不是特别数据C/C++,那么JavaCV应该是比较好的选择,下面记录一下使用JavaCVAAC数据内存读写(PipedInputStream管道流)的方法。使用管道流需要注......