zoukankan      html  css  js  c++  java
  • ffmpeg 模仿腾讯视频实现高并发情况下播放视频的处理思路

    前言

    平时开发过程中,如果客户端需要播放视频,我们经常的做法是给一个文件地址。比如是html端,使用video标签,直接把视频地址放上去就可以播放了。这样的做法在高并发高访问量的情况下,是会出现问题的。文件在硬盘上的读写连接数,网络传输的带宽,都是这种做法的瓶颈。

    我们打开腾讯视频,随便打开一个电视,f12打开网络请求界面,我们可以看到,视频缓冲是分段加载的,每次缓冲都有个ts结尾的文件

    然后在网上查询视频处理ts文件发现插件ffmpeg,ffmpeg 可以做很多操作,对视频的转码,对视频的截取,对音频的截取都可做。下面就开始正题了,ffmpeg 的安装配置

    首先去官网根据自己的操作系统下载安装包:https://ffmpeg.org/download.html 

    我自己使用的安装包:windows:

    链接:https://pan.baidu.com/s/1bHS-_laqtKdrBBY6u-r3Vw
    提取码:e9yv

    centos :

    链接:https://pan.baidu.com/s/1pkOkNlV88kaSmh1dIpsAtA
    提取码:u4l1

    链接:https://pan.baidu.com/s/1GaawsgnBr-S0S2My2_Xuzw
    提取码:xnsu

    windows 安装

    下载zip后,解压到自己的目录,并配置环境变量。

    cmd执行 ffmpeg -version 有以下输出即为安装成功

    centos7 部署

    上传安装包至 /usr/local/ 下。
    解压文件: tar xvJf ffmpeg-4.1.tar.xz
    重命名文件: mv ffmpeg-4.1 /user/local/ffmpeg
    安装yasm:回到主目录:cd //
    新建文件夹:mkdir yasm
    解压文件:tar zxvf yasm-1.3.0.tar.gz
    进入文件夹:cd yasm-1.3.0
    执行配置:./configure
    编译安装:make && make install
    回到FFmpeg目录:cd /userl/local/ ffmpeg
    执行配置命令:./configure --enable-shared --prefix=/usr/local/ffmpeg
    执行make(执行时间较久): make
    执行安装:make install
    修改文件/etc/ld.so.conf:vim /etc/ld.so.conf
    文件末尾添加:/usr/local/ffmpeg/lib/
    输入ldconfig使修改生效
    验证是否安装成功:/usr/local/ffmpeg/ffmpeg/ffmpeg -version

    利用ffmpeg视频转换

    命令:ffmpeg -i xxx.mp4 -f segment -segment_time 60 -segment_format mpegts -segment_list /home/higherlevel/video-folder/video_name.m3u8 -c copy -bsf:v h264_mp4toannexb -map 0 /home/higherlevel/video-folder/course-%04d.ts

    这条命令可以使用java 执行脚本命令来执行。

    这个是把xxx.mp4视频切成功每60秒一个小的ts视频的m3u8  文件   

    关于m3u8文件,其实就是多个ts文件的播放清单,某些浏览器或者播放器,可以直接解析这种文件,并把多个ts文件组合起来播放。

    做到这一步,基本上核心功能都有了。剩下的就根据自己业务来设计系统架构。可以对ts文件做主从,负载均衡,这样把一个大的视频文件。分成多个小的ts文件。减少带宽的性能消耗。避免出现性能问题。

  • 相关阅读:
    C++-蓝桥杯-大臣的旅费[dfs][树的直径]
    C++-蓝桥杯-剪格子-[2013真题][爆搜?]
    微信公众平台运营指导
    ALGO-84 大小写转换
    ALGO-84 矩阵乘法
    ALGO-49 寻找数组中最大值
    ALGO-92 前缀表达式
    ALO-42 送分啦
    ALGO-90 出现次数最多的整数
    【微信】公众号群发相关使用
  • 原文地址:https://www.cnblogs.com/rolayblog/p/12800917.html
Copyright © 2011-2022 走看看