美文网首页直播相关流媒体程序员
HLS-m3u8播放列表和ts切片(2)

HLS-m3u8播放列表和ts切片(2)

作者: RichyLeo | 来源:发表于2016-08-09 22:48 被阅读9377次

    前言:就像Richy研究新技术一样,由于技术发展迅速,通过各大搜索引擎搜出的可供参考的资料也是五花八门,有的还比较陈旧。这些外在的因素,无疑也滞后了Richy和大家前进的速度。经过不懈努力,历经坎坷,Richy现将成果再次记录且与大家分享,以达到共同进步的目的。【给予大于索取】

    PS:本文的主要目的在于:加以个人理解,对研究新技术的记录。如果文中有出入的地方,还请见谅,且请各位大虾指正,不胜感激,已内牛满面...

    闲话不多说,正题coming...

    01.实现效果展示

    实现总述:

    通过ffmpeg将本地的xxx.mp4进行切片处理,生成m3u8播放列表(索引文件)和N多个 .ts文件,并将其(m3u8、N个ts)放置在本地搭建好的webServer服务器的指定目录下,我就可以得到一个可实时播放的URL(类似于:http://localhost/xxx/xxx.m3u8),最终将该URL运用于之前简易封装的AVPlayer和VLC播放器中测试播放,得到了如上图的结果。

    主要步骤:

    1、安装Homebrew;2、安装ffmpeg;3、mp4->m3u8切片处理;4、WebServer提供m3u8播放索引;5、播放测试。

    1、打开终端,输入命令,安装Homebrew

    1.1 先检查是否安装了Homebrew,在终端输入命令:brew help。如图说明安装了,并且你也可以查看它的其他常用命令:

    02.Homebrew帮助命令

    1.2 如果未安装,则在终端输入安装命令:

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

    2、安装FFmpeg(音视频流化处理且可跨平台)工具

    在终端输入命令:

    brew install ffmpeg

    下图可清晰看到ffmpeg共47M(要耐心等待哦~),以及安装在本地的路径(usr/local/Cellar/ffmpeg/3.0.2)。

    03.ffmpeg安装

    3、mp4->m3u8切片处理

    通过刚刚安装的ffmpeg,在终端输入命令(灵活变化):

    ffmpeg -i XXX.mp4 -c:v libx264 -c:a copy -f hls XXX.m3u8

    其中,XXX.mp4为本地视频文件,XXX.m3u8为最终生成的播放索引列表,与此同时还有N多个ts文件。

    4、WebServer提供m3u8播放索引 

    首先在本地启用Apache搭建好WebServer(这里不做介绍了),然后将<步骤3>中的 XXX.m3u8 放置于该服务器下的共享目录下,由此可得到m3u8的播放URL(http://localhost/richyleo/m3u8/war3.m3u8),Richy的真实切片命令共大家参考替换:

    ffmpeg -i /Users/richyleo/Downloads/warcraft.mp4 -c:v libx264 -c:a copy -f hls /Library/WebServer/Documents/RichyLeo/m3u8/war3.m3u8

    5、播放测试

    打开Safari浏览器,或者在App中载入播放视频功能,传入播放地址即可完成。

    最后

    欢迎大家关注我们团队微信公众号,以及博客地址,在这里我们会实时与大家分享优质的技术文章。大家也可以加入我们的技术交流群(QQ群:343640780),共同探讨,共同进步。

    团队微信公众号

    团队博客地址:http://www.52learn.wang

    团队GitHub:https://github.com/wu2LearnTeam

    相关文章

      网友评论

      • LeeCen:请问如何使用 AFNetworking批量下载 M3U8视频?不是批量下载 ts 切片喔
      • Adapa:mp4用ffmpeg切m3u8命令ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict -2 -f hls output.m3u8
        无法设置每片的长度和设置播放列表保存的最多条目
        Adapa:@RichyLeo 谢谢!新年快乐!
        RichyLeo:@WorldLinkTop http://blog.csdn.net/jookers/article/details/21694957 希望帮到你
      • RichyLeo:建议:先执行brew doctor,检查homebrew安装有没有问题。详细可以参考我的另一篇文章:http://www.jianshu.com/p/e5061e9942ee
      • 有缘再会:Last login: Fri Aug 26 10:00:15 on ttys000
        pool-100-2-120-185:~ XC$ brew help
        Example usage:
        brew search [TEXT|/REGEX/]
        brew (info|home|options) [FORMULA...]
        brew install FORMULA...
        brew update
        brew upgrade [FORMULA...]
        brew uninstall FORMULA...
        brew list [FORMULA...]

        Troubleshooting:
        brew config
        brew doctor
        brew install -vd FORMULA

        Brewing:
        brew create [URL [--no-fetch]]
        brew edit [FORMULA...]
        https://github.com/Homebrew/brew/blob/master/share/doc/homebrew/Formula-Cookbook.md

        Further help:
        man brew
        brew help [COMMAND]
        brew home
        pool-100-2-120-185:~ XC$
        这不证明了我已经安装了homebrew

        pool-100-2-120-185:~ XC$ brew install ffmpeg
        Error: Invalid formula: /usr/local/Library/Taps/homebrew/homebrew-core/Formula/gtk+3.rb
        undefined method `rebuild' for #<BottleSpecification:0x007fa7460ee698>
        Error: Invalid formula: /usr/local/Library/Taps/homebrew/homebrew-core/Formula/kafka.rb
        undefined method `rebuild' for #<BottleSpecification:0x007fa7455072f8>
        Error: Invalid formula: /usr/local/Library/Taps/homebrew/homebrew-core/Formula/libgcrypt.rb
        undefined method `rebuild' for #<BottleSpecification:0x007fa746177010>
        Error: Invalid formula: /usr/local/Library/Taps/homebrew/homebrew-core/Formula/nsd.rb
        undefined method `rebuild' for #<BottleSpecification:0x007fa747a68cb8>
        Error: Invalid formula: /usr/local/Library/Taps/homebrew/homebrew-core/Formula/openshift-cli.rb
        undefined method `rebuild' for #<BottleSpecification:0x007fa747a3b010>
        Error: Invalid formula: /usr/local/Library/Taps/homebrew/homebrew-core/Formula/pyenv.rb
        undefined method `version_scheme' for #<Class:0x007fa747aed080>
        Error: Invalid formula: /usr/local/Library/Taps/homebrew/homebrew-core/Formula/repo.rb
        undefined method `version_scheme' for Formulary::FormulaNamespace40d8ccee0d508f247fe53973605182a6::Repo:Class
        Error: Cannot tap homebrew/core: invalid syntax in tap!
        Error: Failure while executing: /usr/local/bin/brew tap homebrew/core -q

        接着一堆错误!这

      本文标题:HLS-m3u8播放列表和ts切片(2)

      本文链接:https://www.haomeiwen.com/subject/wvrksttx.html