引言
编写目的
主要是介绍几款媒体常用软件,方便进行媒体类问题的定位分析,软件大部分是开源的,方便学习相关知识。
适用范围
预期读者为媒体开发人员作为入门文档,用来分析对比,定位问题。也可作为音视频爱好者日常使用。
只是简单介绍常用的使用方法。其他用法可以在网络查询。
同时大部分软件是开源软件,可以多看看源码,学习相关知识。
推荐一些个人认为比较好的书籍
软件简介及说明
Mediainfo
官方地址:https://mediaarea.net/en/MediaInfo
MediaInfo是一款非常实用的视频参数检测工具,除了可以对视频进行编码分析查询,还可以对音频文 件的编码及信息进行检测,该款工具软件是一款开源免费软件。linux系统下为英文,windows下可选择中文。同时可以下载软件源码进行学习。
VLC
官方地址:https://www.videolan.org/
VLC多媒体播放器(最初命名为VideoLAN客户端)是VideoLAN计划的多媒体播放器。它支持众多音频 与视频解码器及文件格式,并支持DVD影音光盘,VCD影音光盘及各类流式协议。它也能作为unicast 或 multicast的流式服务器在IPv4或 IPv6的高速网络连接下使用。它融合了FFmpeg计划的解码器与 libdvdcss程序库使其有播放多媒体文件及加密DVD影碟的功能。同时可以下载软件源码进行学习。
- 用来对比播放视频,排除视频源本身的问题。
- 用来搭建流媒体服务器,测试客户端软件播放。
- 用来作为自己播放器,跨平台,免费,无广告,功能强大。
wireshark
官方地址:https://www.wireshark.org/
推荐书籍:《Wireshark网络分析就这么简单》,《Wireshark网络分析的艺术》
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并 尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。同时可以下载软件源码进行学习。
wireshark功能强大,网络相关开发,学习网络协议的必备工具,多媒体开发一般用来抓包分析媒体播放中的网络因素引起的问题。如播放卡顿
android开发中需要使用tcpdump来抓取android设备的网络包,再使用wireshark分析。
抓包方式:
adb shell
命令行tcpdump -i any -p -s 0 -w /sdcard/tcpdump.pcap
adb pull /sdcard/tcpdump.pcap . 将网络包文件拉到本地来分析
小技巧:
“contains”操作符允许一个过滤器搜索一串字符,其形式为字符串,或者字节,或者字节组。例如在搜索一个HTTP URL地址,可以使用下面的过滤器: http contains “http://www.wireshark.org”; “contains”操作符不能被用于原子型的字段,比如数字和ip地址。
ffmpeg
官方地址:http://ffmpeg.org/
同时可以下载软件源码进行学习。音视频开发必备知识储备。建议认真学习源码及使用。
推荐书籍:《ffmpeg从入门到精通》刘歧(ffmpeg官方推荐中文书籍),英文能力强的直接看官方网址说明文档是最好的资料。
中文论坛:http://bbs.chinaffmpeg.com
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
FFmpeg是音视频开发中必须了解掌握的开源项目。FFMPEG是特别强大的专门用于处理音视频的开源库。你可以使用它的API对音视频进行处理,也可以使用它提供的命令行工具,如ffmpeg, ffplay, ffprobe,来编辑你的音视频文件。命令行工具强烈推荐大家学习使用,刚开始可能很不习惯,坚持下来就会体会到ffmpeg命令行的强大
列出部分常用命令(linux平台),方便查询:
- ffmpeg 通过ffmpeg –help可以看到ffmpeg常见的命令,ffmpeg一般用作视频转换 命令格式: ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件] ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
- ffprobe 可以使用ffprobe --help来查看详细的帮助信息,ffprobe用作分析视频 命令格式 ffprobe [参数选项] [输入文件名] ffprobe [OPTIONS] [INPUT_FILE] 小技巧: 格式化 ffprobe的命令的输出格式 默认的输出格式都是以key - value的格式的方式,ffprobe支持多种格式的输出,包括XML、INI、JSON、CSV、FLAT等。使用ffprobe -print_format 或者 ffprobe -of 来格式化输出。 ffprobe -of csv -show_frames input.mp4 > 1.csv 使用wps或excel打开1.csv,查看超级方便。
- ffplay 可以使用ffplay --help来查看详细的帮助信息,一般用来对比播放,比vlc功能多但不直观 ffplay [参数选项] 输入文件名 ffplay [options] input_file 小技巧: 使用ffplay播放yuv数据 播放NV21 ffplay -i nv21.yuv -pix_fmt nv21 -s 640x480 播放YUV420P ffplay -i yuv420p.yuv -pix_fmt yuv420p -s 640x480
音视频开发书籍推荐
《在线视频技术精要》,《音视频开发进阶指南》,《Android音视频开发》,《FFmpeg从入门到精通书籍》
《视频编码全角度详解》
其他常用软件
我个人不常用,在此列出,方便有需要的人使用
Bento4是一套开源库,专用于mp4格式文件的读写,同时还提供一套开源工具,支持的功能非常多
FLVmeta本来是一个编辑flv文件的metadata的工具,但其实它也可以用来做flv文件的码流分析
tsr(TS码流分析工具)是一款针对(Tsr)MPEG-2压缩打造的TS流分析器,可以清楚地看到码流的信息。
EASYICE支持HLS协议的免费分析软件。通过HLS 缓冲分析模块,可以一目了然的看到播放器的缓冲状态。当你的节目出现卡顿,观察缓冲状态就可以知道是否数据到达太慢。HLS分析支持直播与点播业务。
LIVE555 是一个为流媒体提供解决方案的跨平台的C 开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。
PixStream WinSend是一款以把本地文件发送成流推送到组播地址的组播测试工具,软件的功能十分的全面,且自身十分的小巧,软件可以用来发送TS流,播放流文件时,但要注意选择H264的ts文件,使用VLC打开组播IP及端口号。