HLS点播实现(H.264和AAC码流)

前言

使用VideoToolbox硬编码H.264 使用VideoToolbox硬解码H.264 使用AudioToolbox编码AAC 使用AudioToolbox播放AAC 在前面我们介绍了从麦克风采集声音并用AudioToolbox编码成AAC码流从摄像头采集图像并用VideoToolbox编码成H.264码流,这次我们不使用VideoToolbox和AudioToolbox播放音视频,而是把这两个格式的文件打包成TS流,并用通过HLS协议在浏览器播放。

核心思路

用FFmpeg把H.264和AAC码流封装成mp4格式再打包成TS流,把生成的ts和m3u8文件放到Nginx的服务器目录下,用Safari访问对应的m3u8文件实现HLS的点播。

效果展示

具体步骤

1、安装Homebrow(已安装的看下一步)

Homebrew(brew缩写)是Mac的上安装和卸载软件的管理工具(类似其他系统的yum和apt-get),Homebrow的官方地址。 在terminal输入:

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

通过brew -h,我们看看brew的常用指令:

  • brew search 搜索;
  • brew install 安装;
  • brew remove 卸载;
  • brew info 查看;

2、安装Nginx(已安装的看下一步)

Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器。 先glone nginx项目到本地,在terminal输入:

brew tap homebrew/nginx

完成后再输入:

brew install nginx-full

最后用brew info看看是否安装成功和nginx的相关信息

brew info nginx-full

/usr/local/etc/nginx/nginx.conf (配置文件路径) /usr/local/var/www (服务器默认路径) /usr/local/Cellar/ (安装路径) open -t /usr/local/etc/nginx/nginx.conf 可以用文本编辑器打开配置文件 nginx -s reload 重新加载配置 nginx -s reopen 重新打开log nginx -s stop 停止nginx nginx -s quit 退出nginx

如果在修改配置文件,重启遇到 [error] open() "/usr/local/var/run/nginx.pid" failed 可以用下面的命令重新加载配置 nginx -c /usr/local/etc/nginx/nginx.conf

接着启动Nginx,在terminal输入:nginx

打开Safari输入http://localhost:8080,检查是否安装nginx成功,正常页面会有welcome to nginx!

ps -ef | grep nginx 可以查看当前nginx进程pid

3、安装FFmpeg(已安装的看下一步)

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。 在terminal输入:

brew install ffmpeg

再通过brew info ffmpeg查看是否安装成功。

4、打包ts流并放入服务器

FFmpeg的打包指令来源--FFmpeg常用命令汇总

  • 1、把H.264和AAC码流封装成mp4格式
ffmpeg -i abc.h264 -i abc.aac -vcodec copy -f mp4 abc.mp4

封装结果如下:

  • 2、把mp4视频打包成ts流
ffmpeg -i abc.mp4 -c:v libx264 -c:a copy -f hls abc.m3u8

打包结果如下:

  • 3、复制这三个文件到/usr/local/var/www路径下 (可以用finder直接复制,也可以用cp命令)
  • 4、用Safari打开http://localhost:8080/abc.m3u8 播放。

总结

HLS的点播已实现,下一步尝试进行HLS的直播和推流。 这两篇在实现过程中帮助很大 Nginx的搭建 HLS点播

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏七夜安全博客

无线安全专题_攻击篇--MAC泛洪攻击

18740
来自专栏Java架构沉思录

一文读懂负载均衡之LVS

根据官方文档LVS支持三种负载工作方式:NAT方式、TUN方式和DR方式。为了说明这三种方式的工作原理,我们首先需要了解一下基础的IP/TCP报文(注意,IP报...

24730
来自专栏java思维导图

《HTTP权威指南》思维导图一览全书

文章作者:yrq110 原始链接:http://yrq110.me/2017/03/04/20170304-http-mindmap/ 高清原图:请下拉到底点...

30630
来自专栏Python中文社区

Python写ARP局域网主机存活扫描与ARP欺骗工具

專 欄 ❈exploit,Python中文社区专栏作者,入坑Python一年。希望与作者交流或者对文章有任何疑问的可以与作者联系: QQ:1585173691...

60150
来自专栏Laoqi's Linux运维专列

LVS工作总结之原理篇–DR模式

393110
来自专栏运维小白

18.7 LVS介绍

LVS介绍 LVS是由国人章文嵩开发 流行度不亚于apache的httpd,基于TCP/IP做的路由和转发,稳定性和效率很高 LVS最新版本基于Linux内核2...

24380
来自专栏开发与安全

浅谈网络数据包传递过程中涉及的话题

概括来说:首先我们在浏览器地址栏敲下域名地址,浏览器发出get请求,接下来进行dns域名解析(后面再详谈),此时浏览器已经得知目标IP,此时还得知道默认网关的m...

24550
来自专栏Laoqi's Linux运维专列

堡垒机–搭建简易的跳板机

1.3K20
来自专栏散尽浮华

Centos下PPTP环境部署记录

PPTP(点到点隧道协议)是一种用于让远程用户拨号连接到本地的ISP,通过因特网安全远程访问公司资源的新型技术。它能将PPP(点到点协议)帧封装成IP数据包,以...

59280
来自专栏编程软文

远程桌面链接内网服务器(外网和内网)详细介绍

88930

扫码关注云+社区

领取腾讯云代金券