多媒体开发(1):播放

Parallel
• 阅读 1841

从技能的差别而区分出来的领域,都有自己的数据结构与流程。想要精通一个专业领域,意味着需要理解透它的结构与流程(但有很多理解是可以平移的),但是,这不意味着从概念入手就是最好的办法。找一个切入点,在某个专业领域完成某个功能,然后在恰当的时候再做系统的概念的理解,这种办法,才是一个好的学习办法。最重要的一点,这是一个有趣的过程。也就是要以问题来驱动学习,如果能做到寓学于教,那就最好了。

多媒体的知识与技能繁多,入门容易而深入较难。

“媒体”,就是声音、图像、文字这些元素,多个元素合在一起就叫“多媒体”,当这些元素以流协议传输时就叫“流媒体”。

在数字世界,听到的,看到的东西,都是多媒体,而提到多媒体,最容易想到的功能就是播放,小程就从“播放”功能入手,先把这个功能实现,尽量少管概念上的事情。

FFmpeg,这个程序集,在多媒体的技能中经常使用到,这里就使用这个程序集来实现播放功能。

本文介绍如何用FFmpeg来实现播放。

FFmpeg程序集里面,有一个程序叫ffplay(播放器),它提供了播放的功能。

(1)ffplay的安装

我使用的是mac电脑,在mac上安装ffplay的办法很简单:

brew install ffmpeg --with-sdl2 --with-rtmpdump

注意,如果发现这个install命令不再支持with-sdl2或rtmpdump,那就自行安装,即调整为:

brew install sdl2
brew install rtmpdump
brew install ffmpeg

安装成功之后,就可以把ffplay运行一下,以命令行的方式来运行:
多媒体开发(1):播放
多媒体开发(1):播放
因为我在系统上安装了一个ffplay,然后用FFmpeg的源码又编译了一个ffplay,所以有两个不同的版本。

(2)播放

在安装了ffplay播放器的情况下,播放就是举手之劳的事。

比如:

ffplay "http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8"
ffplay ~/Desktop/1.mp4

ffplay可以播放网络上的音视频文件,也可以播放本地的文件。只要有路径(或url),就可以用ffplay来播放。

那除了本地的资源,还能找到一些有趣的url来播放吗?

一般可以在网上搜索,或者把地址抓出来。

比如在pc网页上进到“酷狗直播”,打开一个直播间,然后用Charles抓包(或其它工具),可以看到这样的地址:
多媒体开发(1):播放

换一个直播间(这个是点播的):
多媒体开发(1):播放

再比如,虎牙的一个直播的地址是这样的:
多媒体开发(1):播放

或者,在网上搜索一些可用的地址,比如(有可能过期,发稿时可用):

CCTV1高清:http://ivi.bupt.edu.cn/hls/cc...
CCTV3高清:http://ivi.bupt.edu.cn/hls/cc...
CCTV5+高清:http://ivi.bupt.edu.cn/hls/cc...
CCTV6高清:http://ivi.bupt.edu.cn/hls/cc...

再看一下用ffplay播放时的效果:

电视台:
多媒体开发(1):播放

直播间:
多媒体开发(1):播放

在用ffplay播放时,有一些快捷键可以使用,比如:

q --退出
p/空格 --暂停
w --切换封面、波形与能量图
f --全屏
s --逐帧显示
左右方向、上下方向 --向后或向前快进

好了,总结一下,文章介绍FFmpeg中的ffplay的使用,愉快地完成了播放的功能,基本没有涉及到复杂的概念。see you.

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
4年前
java 数据结构(五):数据结构简述
1.数据结构概述数据结构(DataStructure是一门和计算机硬件与软件都密切相关的学科,它的研究重点是在计算机的程序设计领域中探讨如何在计算机中组织和存储数据并进行高效率的运用,涉及的内容包含:数据的逻辑关系、数据的存储结构、排序算法(Algorithm)、查找(或搜索)等。2.数据结构与算法的理解程序能否快速而高效地完成预定的任务,
编程范儿 编程范儿
4年前
Vue刷新页面有哪几种方式
在Vue项目中,刷新当前页除了window.reload(),你还能想到什么办法?而且这种办法会重新加载资源出现短暂的空白页面。体验不是很好。在某个详情页面的时候,我们经常需要通过路由中的详情id去获取内容,当我们在不同的详情页来回切换的时候,打开的页面是同一个,只是需要通过监听路由中的参数id的变化去重新请求详情接口。如果这个详情页只需要一个接口
Stella981 Stella981
4年前
Android笔记五
intent最主要的特点是它是一个用户概念。像所有其它ANDROID概念一样,不能从系统的角度去理解它。应该从用户的角度去理解它。意思是,当我们要解释某一个东西的时候,不是说,这个在系统中的功能是......而是说,这个是......换句话说,既然是Android,自然要说“人”话。intent另一个特点是它的内涵:意图,意欲。意思是,它所表达的全部就只
黄忠 黄忠
2年前
算法与数据结构高手养成-求职提升特训课
算法和数据结构是计算机科学中最基础的两个概念,也是每个程序员必须掌握的核心技能。本文将介绍算法和数据结构的基本概念、分类和常见应用,并提供一些学习资源和实践建议,帮助读者深入理解和掌握这两个重要的概念。download:算法与数据结构高手养成求职提升特训课(https://www.666xit.com/4030/)