音视频开发常用工具

news2024/11/23 15:28:43

目录

1.VLC播放器简介

 1.1 VLC 播放器

1.2 VLC的功能列表

1.3 VLC播放网络串流

 1.4 VLC作为流媒体服务器

2. MediaInfo简介

2.1 MediaInfo

2.1.1 获取多媒体文件信息

2.1.2 支持的格式

2.1.3 .查看方式

2.1.4 国际化

2.2 MediaInfo使用方法

 2.3 MediaInfo参数说明

3. FlvAnalyser简介

​编辑

3.1 FLV简介

3.2 FlvAnalyser

 4. Elecard Stream Analyzer 码流分析工具

4.1 简介

4.2 功能列表

 5. FFmpeg简介

5.1 FFmpeg

5.2 FFmpeg命令行

5.3 FFmpeg开发包


音视频知识比较复杂,掌握常用几款音视频开发工具,对初学者非常有帮助。

VLC是一款功能很强大的开源播放器,支持多种常见音视频格式,支持多种流媒体传输协议,也可当作本地流媒体服务器使用。

MediaInfo用来分析视频和音频文件的编码和内容信息。

Elecard Stream Analyzer是一款简单小巧的码流分析工具,通过该软件,用户可以快速地分析视频序列码流。

FFmpeg是一个跨平台的音视频处理库,是一套可以用来记录、转换数字音视频,并能将其转化成流的开源计算机程序。

1.VLC播放器简介

VLC是一款功能强大的开源播放器,VLC的全名为Video Lan Client,是一个开源的、跨平台的视频播放器。VLS支持多种常见音视频格式,支持多种流媒体传输协议,也可当作本地流媒体服务器使用。其官方下载地址为 https://www.videolan.org/ 。

 1.1 VLC 播放器

VLC多媒体播放器是VideoLAN计划的多媒体播放器。它支持众多音频和视频解码器及文件格式,并支持DVD影音光盘、VCD影音光盘及各类流式协议。他也能作为unicast或multicast的流式服务器在IPv4或IPv6的高速网络连接下使用。它融合了FFmpeg的解码器和libdvdcss程序库,使其有播放多媒体文件及加密DVD影碟的功能。

作为音视频的初学者,很有必要熟练掌握VLC这个工具。

1.2 VLC的功能列表

VLC是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件、DVD、CD、VCD及各类流媒体协议文件。VLC支持大量的音视频传输、封装和编码格式,下面列出简要的功能列表。

(1)操作系统包括 Windows、Windows CE、Linux、Mac OS X、BEOS、BSD等

(2)访问形式包括文件、DVD/VCD/CD、HTTP、FTP、TCP、UDP、HLS、RTSP等

(3)编码格式包括MPEG、DIVX、WMV、MOV、3GP、FLV、H.264、FLAC等

(4)视频字幕包括DVD、DVB、Text、Vobsub等

(5)视频输出包括DirectX、X11、XVideo、SDL、FrameBuffer、ASCII 等

(6)控制界面包括WxWidgets、QT、Web、Telnet、Command line等

(7)浏览器插件包括ActiveX、Mozilla等

1.3 VLC播放网络串流

VLC播放一个视频大致分为4个步骤:

  1. access,即从不同的源获取流;
  2. demux,即把通常合在一起的音频和视频分离(有的视频也包含字幕);
  3. decode,即解码,包括音频和视频的解码;
  4. output,即输出,也分为音频和视频的输出(aout和vout);

使用VLC可以很方便地打开网络串流。首先单击主菜单的“媒体”,选择“打开网络串流”,如下图1所,输入网络URL,单击“播放按钮”,即可看到播放的网络流效果。

测试地址为:http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8

 1.4 VLC作为流媒体服务器

 VLC功能很强大,不仅是一个视频播放器,也可以作为小型的视频服务器,一边播放一边转码,把视频流发送到网络上。VLC作为视频服务器的具体步骤如下。

(1)单击主菜单“媒体”中的“流”选项

(2)在弹出的对话框中单击“添加”按钮,选择一个本地视频文件,如下图所示。

 (3)单击页面下方的“串流”下拉列表框中的“串流”选项,添加串流协议

(4) 该页面会显示刚才选择的本地视频文件,然后单击“下一个”按钮

 (5)在该页面单击“添加”按钮,选择具体的流协议,如RTSP,然后单击“下一个”按钮,如下图

 (6)在该页面的下拉列表中选择“Video-H.264+MP3(TS)”,然后单击“下一个”按钮,如下图所示

 注意:一定要选中左上方的“激活转码”,并且需要的是TS流格式。

(7)在该页面可以看到VLC生成的所有串流输出参数,然后单击“流”按钮即可,如下图所示

 

 (8)说明在转码了

2. MediaInfo简介

2.1 MediaInfo

MediaInfo用来分析视频和音频文件的编码和内容信息,是一款自由软件,可以免费使用、免费获得源代码,许可协议是GNUGPL/LGPL。

官方下载地址:https://mediaarea.net/zh-CN/MediaInfo

 

2.1.1 获取多媒体文件信息

MediaInfo可以获取的多媒体文件的基本信息,具体包括以下几个方面。

(1)内容信息:标题、作者、专辑名、音轨号、日期、总时间等。

(2)视频:编码器、宽高比、帧频率、码率、比特率等。

(3)音频:编码器、采样率、声道数、语言、比特率等。

(4)文本:语言、字幕等。

(5)段落:段落数、列表等。

2.1.2 支持的格式

MediaInfo支持的格式很多,具体包括以下几种格式。

(1)视频:MKV、OGM、AVI、DivX、WMV、QuickTime、MPEG、DVD等。

(2)编码器:DivX、XviD、MSMPEG-4、ASP、H.264、AVC等。

(3)音频:OCG、MP3、WAV、RA、AC-3、DTS、AAC、M4A、AU、AIFF等。

(4)字幕:SRT、SSA、ASS、SAMI等.

2.1.3 .查看方式

MediaInfo支持众多查看方式,包括文本、表格、属性图、网页、HTML、XML等,如下图所示。它支持3种发布版本,包括图形界面、命令行、DLL(动态链接库),还可以与Windows资源管理器整合,包括拖放、右击菜单等。

2.1.4 国际化

MediaInfo的软件界面可以轻松实现本地化,但需要当地的志愿者翻译语言文件。

2.2 MediaInfo使用方法

如果需要查看少数媒体文件的信息,则可以直接把文件拖入MediaInfo应用界面,然后就会直接显示出文件的相关信息,也可以直接查看整个文件夹下的媒体文件信息,可以单击界面左侧中间的图标。无论采用哪种方式,都可以查看视频、音频、图片的格式信息,如下图:

 2.3 MediaInfo参数说明

媒体文件信息涉及的内容比较复杂,这里简单介绍一下。此处先把视图切换为HTML(View菜单—>HTML)。可以看出,媒体的详细信息主要包括3部分参数,分别是General、Video、Audio,分别如下所示。

 (1)General主要包括视频封装格式信息,包括文件大小、文件时长、比特率、编码时间等.

(2)Video主要包括视频编码的相关信息,包括编码器、Profile&Level、是否使用算术熵编码、比特率、视频文件大小、视频尺寸、帧率模式、帧率、色彩空间、扫描类型(逐行/隔行)、编码设置等。

(3)Audio主要包括音频编码的相关信息,包括格式、声道数、编码格式、Profile、时长、比特率、是否有损压缩、音频的帧率等信息。

3. FlvAnalyser简介

下载地址:https://github.com/zymill/flvAnalyser

3.1 FLV简介

直播推流的时候需要用到RTMP的视频数据格式。RTMP的视频格式和FLV相似,通过查看FLV的格式文档,可以通过分析FLV协格式来解析RTMP格式。

RTMP中的数据就是由FLV的TAG中的数据区构成。FLV是流媒体封装格式,可以将其数据看为二进制字节流。

总体上看,FLV包括文件头(File Header)和文件体(File Body)两部分,其中文件体由一系列的Tag及Tag Size对组成,如下图所示。

 

3.2 FlvAnalyser

FlvAnalyser非常简单方便,功能也很强大,包括文件格式分析、数据分析、十六进制分析、时间戳分析、码率分析、音视频同步分析、日志记录、语法指南(FLV基本语法)、视频或音频ES提取文件、时间信息提取等。

查看文件信息,单击AV工具栏按钮,选择一个本地FLV文件,即可看到分析的效果,如下图所示。

查看Tag列表信息,单击“FLV 提取ES流”工具栏按钮,可以查看语法详情、NALU标注、二进制与十六进制切换等,显示效果如下图。

 查看时间信息,单击“小时钟”工具栏按钮,可以查看时间信息,显示效果如下所示。

 4. Elecard Stream Analyzer 码流分析工具

Elecard Stream Analyzer 是一款简单小巧的码流分析工具,通过该软件,用户可以快速地分析视频序列码流。软件操作简单,使用方便,用户只需将视频文件导入软件内,系统就会自动分析文件,分析后就会显示视频码的文件大小、码流类型、数据包数等内容,方便用户对视频的质量进行初步评估,可有效地改善视频的拍摄质量及制定相应的修改方案。

4.1 简介

码流是视频文件在单位时间内使用的数据流量,是视频编码中画面质量控制中最重要的部分。在同样的分辨率下,视频文件的码流越大,压缩比就越小,画面质量就越好。

多码流技术是通过在编码过程中同时产生多种不同码流及分辨率的流媒体数据,根据用户实际网络带宽条件为之自动分配相对最佳解码画质的解决方案。

在实际网络直播应用中,由于位于不同网络位置的访问者所在网络环境存在差异,而仅以某种固定码流分辨率进行网络直播流媒体传送往往会导致网络较高的用户看到的画质仍不够清晰,网速较低的用户由于解码时间过长而使画面不够流畅,为解决二者的矛盾使访问者浏览到尽可能兼顾清晰和流畅的直播内容,采用多码流技术成为一种最简单、最有效的方法。

Elecard StreamEye Tools是一款分析音视频的好工具,包括Elecard Stream Analyzer、Elecard StreamEye、Elecard YUV Viewer。

(1)Elecard StreamEye 用于编码视频的可视化表现,以及流结构分析,这些流是MPEG-1/2/4或AVC/H.264视频基本流(Video Element Stream,VES),MPEG-1的系统流(System Stream,SS)、MPEG-2的程序流(Program Stream,PS)、MPEG-2的传输流(Transport Stream,TS)。

(2)Elecard YUV Viewer 是用来看YUV视频文件数据序列的,和其他文件相比,找到二进制的图像是否匹配的,并且可观看比较结果。应用程序允许用户计算度量的质量,例如PSNR、NQI和VQM。

(3)Elecard Stream Analyzer 用于编码媒体流的语法分析,以及人类可读形式的展示,可以操作MPEG-1 Video/Audio、MPEG-2 Video/Audio、AAC、AC-3、AVC/H.264等。

其中 Elecard Stream Analyzer 主界面如下:

4.2 功能列表

 Elecard Stream Analyzer 是一个专业的视频码流分析工具,功能非常强大。

  • 拥有码流错误报告、TS错误侦测和基于ETSI TR101-290 的分析功能。
  • 能够对编码器媒体流进行深入句法分析;
  • 支持H.264/AVC、MPEG-2 TS/PS等多种常用的视频格式;
  • 可以将ES码流导入到文件;
  • 支持HEX浏览、导航和搜索;
  • 支持音视频交织分析;
  • 支持自动分析的命令行模式等。

Elecard Stream Analyzer 所支持的主要视频格式有 MPEG-2 TS、MPEG-2 PS、MPEG-1/2 Video Stream、AVC/H.264 Video Stream、HEVC/H.265 Video Stream、VP9 Video Stream、MP4 File Container、MKV File Container、AVI File Container等。

Elecard Stream Analyzer所支持的主要音频格式有MPEG-1/2、Audio Layer 1/2/3、Dolby Digital Audio、高级音频编码(Advanced Audio Coding,AAC)等。

该软件会显示SEI、序列参数集(Sequence Parameter Set,SPS)、图像参数集(Picture Parameter Set,PPS)、I/P/B Slice等信息。单击某帧可以查看详细信息,包括frame_num、slice_type等。

 5. FFmpeg简介

5.1 FFmpeg

FFmpeg是一个跨平台的音视频处理库,是一套可以用来记录、转换数字音视频,并能将其转化为流的开源计算机程序,支持Windows、linux、Mac等。FFmpeg采用LGPL或GPL许可证,提供了录制、转换及流化音视频的完整解决方案,包含非常先进的音视频编解码库libavcodec。为了保证高可移植性和编解码质量,libavcodec中很多编解码算法都是全新开发的。

FFmpeg包括几个常用的模块库:

  1. libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构。
  2. libavcodec:用于各种类型音视频编解码。
  3. libavutil:包含一些公共的工具函数。
  4. libswscale:用于视频场景比例缩放、色彩映射转换等。
  5. libpostproc:用于后期效果处理等。
  6. libswresample:提供音频重采样功能,包括采样频率、声道格式等。
  7. libavfilter:用于滤波器处理,如音视频倍速、水平翻转、叠加文字等功能。
  8. libavdevice:包括输入/输出设备的库,实现音视频数据的抓取或渲染。

FFmpeg提供了3个命令行工具,如下所述:

(1)ffmpeg:编解码小工具,可用于格式转换、解码或电视卡即时编码等。

(2)ffserver:一个HTTP多媒体即时广播串流服务器。

(3)ffplay:一个简单的播放器,使用ffmpeg库解析和解码,通过SDL显示。

FFmpeg的开发分为两种:

  1. 直接使用所提供的这3个命令行工具进行多媒体处理。
  2. 使用封装的上述8个模块库进行二次开发。

5.2 FFmpeg命令行

FFmpeg提供的命令行功能非常强大,包括但不限于以下功能。

  1. 列出支持的格式。
  2. 剪切一段媒体文件。
  3. 提取一个视频文件中的音频文件。
  4. 从MP4文件中抽取视频流并可导出裸的H.264数据.
  5. 视频静音,即只保留视频,使用命令参数-an。
  6. 使用AAC音频数据和H.264视频生成MP4文件。
  7. 音频格式转换。
  8. 从WAV音频文件中导出PCM裸数据。
  9. 将一个Mp4文件转换为一个GIF动图。
  10. 将一组图片生成GIF动图。
  11. 淡入效果器使用。
  12. 淡出效果器使用。
  13. 将两路声音合并,例如加背景音乐。
  14. 为视频添加水印效果。
  15. 视频提亮效果器。
  16. 视频旋转效果器的使用。
  17. 视频裁剪效果器的使用。
  18. 将一段视频推送到流媒体服务上。
  19. 将流媒体服务器上的流下载并保存到本地计算机。
  20. 将两个音频文件以两路流的形式封装到一个文件中

注:更详细的参数可以去FFmpeg官网查询。ffmpeg Documentation

5.3 FFmpeg开发包

当前FFmpeg最新版本为5.0.2,包括静态库、动态库、开发者3个版本。

(1)Static(静态库版本):其中只有3个应用程序,包括ffmpeg.exe、ffplay.exe、ffprobe.exe,每个exe应用程序的体积都很大,相关的dll文件已经被编译到exe程序中了,作为工具而言此版本最合适,不依赖动态库,为单个可运行程序。

(2)Shared(动态库版本):其中除了3个应用程序fmpeg.exe、ffplay.exe、ffprobe.exe之外,还有一些动态dll文件,例如avcodec-54.dll之类的文件。Shared中的exe程序体积很小,它们在运行的时候,到相应的dll文件中调用功能。程序运行过程必须依赖于提供的dll文件,开发程序时必须下载该版本,因为只有该版本中有dll动态库,需要注意Dev(开发者版本)中不包含这些dll动态库。

(3)Dev(开发者版本):该版本用于开发,其中包含了库文件xxx.lib及头文件xxx.h,这个版本不包含exe文件和dll文件。Dev版本中include文件夹内包含了所有头文件,lib文件夹中包含了所有编译开发所需要的库,但没有运行库,所以需要从Shared版本中获取。

最新的下载网址为 Releases · BtbN/FFmpeg-Builds · GitHub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/138771.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

将powershell、cmd和vscode终端的编码永久修改成utf-8

powershell修改方法 1、以管理员身份打开powershe New-Item $PROFILE -ItemType File -Force 2、打开C盘,找到我的文档中的WindowsPowerShell文件夹 3、编辑这个ps1文件(默认是空的),加上以下代码 $OutputEncoding [console…

Handler的消息机制与消息延迟代码实现

Handler的作用 Handler消息机制在Android中的应用非常广泛,很多组件的底层实现都是靠Handler来完成的,所以掌握Handler消息机制的原理还是非常重要的。Handler的主要功能有两点: 1.它可以在不同的线程之间传递消息 我们都知道Andorid中规定…

menuconfig与Kconfig入门学习

概述 menuconfig是Linux平台用于管理代码工程、模块及功能的实用工具。 menuconfig的使用方式通常是在编译系统之前在系统源代码根目录下执行make menuconfig命令从而打开一个图形化配置界面,再通过对各项的值按需配置从而达到影响系统编译结果的目的。 Nuttx的m…

新建一个SpringMVC项目

步骤1:创建Maven项目 打开IDEA,创建一个新的web项目 步骤2:补全目录结构 因为使用骨架创建的项目结构不完整&#xff0c;需要手动补全 步骤3:导入jar包 将pom.xml中多余的内容删除掉&#xff0c;再添加SpringMVC需要的依赖 <?xml version"1.0" encoding"UT…

一文读懂远程线程注入

在红队行动中&#xff0c;红队的目的都是要在不暴露自身行动的前提下&#xff0c;向蓝队发动攻击。他们使用各种技术和程序来隐藏C2连接和数据流。攻击活动的第一步是获得初始访问权。他们会使用定制的恶意软件和有效载荷来躲避防杀软和EDR等防御工具。 在这些典型的攻击活动中…

代码中大量爆红,IDE设置jdk版本,及设置后无效的解决

代码大量爆红&#xff0c;检查ide设置的jdk版本是否与项目的java版本一致&#xff0c;做以下配置 1.project structrue 2.maven 3.如果以上设置以后没有效果&#xff0c;就把项目中的.ide文件删除&#xff0c;并且pom里面加上下面的代码&#xff0c;重启IDE。 <build&g…

植物大战僵尸:植物栏无冷却的找法

通过使用CE遍历内存&#xff0c;定位到植物无冷却的核心代码处&#xff0c;并通过修改关键的跳转来实现所有植物的无冷却。 第一种遍历修改方式 无冷却的遍历技巧1&#xff1a; 打开CE->回到游戏种植一颗向日葵 -> 扫描未知初始数值然后切回游戏 ->马上切回CE ->…

< JavaScript技术分享: 大文件切片上传 及 断点续传思路 >

文章目录&#x1f449; 前言及含义切片上传断点续传&#x1f449; 一、实现思路&#x1f449; 二、使用场景&#x1f449; 参考文献&#x1f449; 伸手党福利&#xff1a; 即拿即用&#xff08;前/后端思路均有&#xff09;往期内容 &#x1f4a8;&#x1f449; 前言及含义 在…

MVVM学习

mvvm基础知识Model&#xff1a;repository Entity 数据库 网络访问等对数据进行直接操作的代码View:视图代码 xml activity fragment adapter 等ui层的一些代码ViewModel:视图模型 用来和View ,Model层交互&#xff0c;将Model层的数据显示到View上&#xff0c;并处理View层的事…

Android Softap Mac地址随机化

目录 Android Q以后 Android Q 获取方式 Android Q以后 在SoftapManager创建的时候,可以跟下 Android Q Q:WifiManager#getWifiApConfiguration()只能获取到SSID和pwd等,无法获取到对应的BSSID。 原因分析:Android Q Softap的MAC地址设置是在HAL层,并没有给Framework赋…

result.isAck()报错

IDEA 的 bug&#xff0c;两张图解释

图像平滑处理

平滑处理是指在某些数学和统计分析中&#xff0c;对于原始数据做出拟合&#xff0c;并生成更平滑的数据。这通常是为了抑制原始数据中的离群点或噪声&#xff0c;使得数据更具可读性和可解释性。 在图像处理中常用于模糊处理和降低噪声。平滑滤波器使用给定邻域内的像素平均灰度…

Word处理控件Aspose.Words功能演示:在 C# .NET 中将 Word 转换为 PDF - 完整指南

Aspose.Words 是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。此外&#xff0c; Aspose API支持流行文件格式处…

JS面试题--JavaScript基础

1. new操作符的实现原理 创建一个对象将构造函数的作用域赋给新对象&#xff08;也就是将对象的__proto__属性指向构造函数的prototype属性&#xff09;指向构造函数中的代码&#xff0c;构造函数中的this指向该对象&#xff08;也就是为这个对象添加属性和方法&#xff09;返…

Arthas tt -t , tt -i 以及 watch相关使用理解 解析入参和结果等

Arthas tt 系列作用 方法执行数据的时空隧道&#xff0c;记录下指定方法每次调用的入参和返回信息&#xff0c;并能对这些不同的时间下调用进行观测 一、 tt -t 作用和一般用法 tt -t 一般用于监控某一个方法的调用记录&#xff0c;如果调用多此会出现多条记录&#xff0c;一…

怎么申请icp备案?怎么查询icp备案是否申请成功

什么是icp备案号&#xff1f; 简单来说&#xff0c;icp备案号&#xff0c;就是你网站的备案号码。icp备案号就是当你的网站提交备案资料&#xff0c;经工业信息化产业部&#xff08;及各地通信管理局&#xff09;审核通过后&#xff0c;会通过电子邮箱发送一个备案号码给你…

JVM内存结构及内存溢出OOM

JVM内存结构JVM的内存结构大致分为五个部分&#xff0c;分别是程序计数器、虚拟机栈、本地方法栈、堆和方法区。除此之外&#xff0c;还有由堆中引用的JVM外的直接内存。下面将展开讲解这五个部分。程序计数器程序计数器(Program Counter Register)&#xff0c;用于记录下一条J…

券商接口关闭的情况下怎么做到实时量化买入?通达信破解接口可以吗?

现在券商接口关闭的情况下怎么做到实时量化买入&#xff1f;量化买入有一些第三方软件是可以破解券商接口的。像通达信破解接口它有一个什么机构版还是什么&#xff0c;他可以同时几个券商一起买入&#xff0c;当然这个你需要用手工输入。像其他的像一些A计划&#xff0c;它就是…

【 java 集合】List接口常用实现类对比以及ArrayList和LinkedList源码分析

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…

绿控传动冲刺科创板上市:连年亏损,现金流紧张,计划募资11亿元

近日&#xff0c;苏州绿控传动科技股份有限公司&#xff08;下称“绿控传动”&#xff09;在上海证券交易所递交招股书&#xff0c;准备在科创板上市。 本次冲刺上市&#xff0c;绿控传动计划募资10.72亿元&#xff0c;其中7.16亿元用于年产新能源商用车电驱动系统10万套项目&a…