本人计划做一个分享项目,分享音视频开发基础知识,分享一些开源项目使用及相关架构分析,个人能力有限,有错误欢迎大家指正,同时也欢迎有相同想法的小伙伴加入。
我的邮箱[email protected]
github地址:https://github.com/loongmonkey/Multimedia-development
有任何相关问题都可以邮件或留言,我会在第一时间回复。
主要是介绍几款媒体常用软件,方便进行媒体类问题的定位分析。
预期读者为媒体开发人员作为入门,用来分析对比,定位问题。软件先玩起来,增加直观感受培养自己的兴趣。
只是简单介绍常用的使用方法。其他用法可以在网络查询
推荐一些个人认为比较好的书籍
官方地址:https://mediaarea.net/en/MediaInfo
MediaInfo是一款非常实用的视频参数检测工具,除了可以对视频进行编码分析查询,还可以对音频文
件的编码及信息进行检测,该款工具软件是一款开源免费软件。linux系统下为英文,windows下可选择中文
官方地址:https://www.videolan.org/
VLC多媒体播放器(最初命名为VideoLAN客户端)是VideoLAN计划的多媒体播放器。它支持众多音频
与视频解码器及文件格式,并支持DVD影音光盘,VCD影音光盘及各类流式协议。它也能作为unicast
或 multicast的流式服务器在IPv4或 IPv6的高速网络连接下使用。它融合了FFmpeg计划的解码器与
libdvdcss程序库使其有播放多媒体文件及加密DVD影碟的功能。
用来对比播放视频,排除视频源本身的问题。
用来搭建流媒体服务器,测试客户端软件播放。
用来作为自己播放器,跨平台,免费,无广告,功能强大。
官方地址: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地址。
官方地址:http://ffmpeg.org/
推荐书籍:《ffmpeg从入门到精通》刘歧(ffmpeg官方推荐中文书籍)
中文论坛:http://bbs.chinaffmpeg.com
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
FFmpeg是音视频开发中必须了解掌握的开源项目。FFMPEG是特别强大的专门用于处理音视频的开源库。你可以使用它的API对音视频进行处理,也可以使用它提供的命令行工具,如ffmpeg, ffplay, ffprobe,来编辑你的音视频文件。命令行工具强烈推荐大家学习使用,刚开始可能很不习惯,坚持下来就会体会到ffmpeg命令行的强大
列出部分常用命令,方便查询:
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
我个人不常用,在此列出,方便有需要的人使用
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及端口号。