summaryrefslogtreecommitdiff
path: root/software/mediaplayer.rst
diff options
context:
space:
mode:
Diffstat (limited to 'software/mediaplayer.rst')
-rw-r--r--software/mediaplayer.rst38
1 files changed, 38 insertions, 0 deletions
diff --git a/software/mediaplayer.rst b/software/mediaplayer.rst
new file mode 100644
index 0000000..c360c40
--- /dev/null
+++ b/software/mediaplayer.rst
@@ -0,0 +1,38 @@
+媒体播放器
+===========
+
+播放音乐和视频是常见的娱乐方式。要知道音乐和视频文件是如何播放的,我们首先要对它们有一点了解。
+
+一个音频和视频文件大致由以下部分组成:
+
+* 容器:文件中的音频、视频、字幕等数据通过一定的方式存储和封装在文件中,容器是封装这些内容的一个结构。不同的容器格式在封装数据的方式上有一些差别。常见的容器格式有 mkv, avi 等,通常作为文件的后缀名表现出来。
+* 媒体数据:实际的音频、视频、字幕等数据,它们又通过一定的方式进行编码,这些信息都存放在容器中。
+* 元数据:包括作者、专辑、风格、创建时间等信息,最常见的是音频文件的 ID3 标记。
+
+一个播放器包含以下部分:
+
+* 解流器(demuxer):它解析容器的格式,提取音频、视频、字幕等数据
+* 解码器(decoder):它将音频流、视频流解码,还原为数字信号
+* 控制部分:一个播放器还要实现音视频同步,前进和后退等功能
+
+
+ffmpeg
+------
+
+`ffmpeg <https://ffmpeg.org/>`__ 是一个完整的多媒体解决方案,内部包含多种编码器和解码器,支持大部分常见的媒体格式和编码。ffmpeg 是著名的工程师 Fabrice Bellard 的众多优秀作品之一,使用 LGPL 许可证发布。经过多年的发展和社区贡献,它已经成为现代媒体播放器的核心部分。
+
+ffmpeg 是一套软件库,同时也带有一些实用程序:
+
+* ffmpeg: 一个功能强大的编码器,可以用它进行音视频的裁切和转码
+* ffplay: 一个简单的播放器
+* ffprobe: 媒体信息查看工具
+
+现代的大多数媒体播放器,包括 mplayer, VNC 等,都是基于 ffmpeg 的。
+
+
+mpv
+---
+
+在本书中,笔者推荐 `mpv <https://mpv.io/>`__ 播放器。mpv 源自 `MPlayer <http://www.mplayerhq.hu/>`__ ,对 MPlayer 的代码进行大量的重构和改进,并加入了硬件解码加速的支持。
+
+mpv 可以直接在命令行下使用。也可以安装一个 GUI 前端,如 `SMPlayer <https://www.smplayer.info/>`__ 来使用 mpv.