Linux系统实现youtube推流直播

系统:centos-7

软件:FFMPEG, youtube-dl

1. 安装FFMPEG

创建并cd到一个目录,下载最新的FFMPEG

$ cd /home/john

$ wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz

$ wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz.md5

下载完成后,可以检查完整性

$ md5sum -c ffmpeg-git-amd64-static.tar.xz.md5

ffmpeg-git-amd64-static.tar.xz: OK

解压(有可能需要解压两次,我解压一次就可以了)

$ tar xvf ffmpeg-git-amd64-static.tar.xz

现在得到目录”ffmpeg-git-20180203-amd64-static“(日期为最新版本日期,使用命令ls -a“查看当前目录所有目录文件)

$ ls ffmpeg-git-20180203-amd64-static

ffmpeg ffprobe GPLv3.txt manpages model qt-faststart readme.txt

阅读readme.txt(hit "q" to exit out of "less")

$ less ffmpeg-git-20180203-amd64-static/readme.txt

使用相对路径

$ pwd

/home/john

$ ./ffmpeg-git-20180203-amd64-static/ffmpeg

ffmpeg version N-89948-ge3d946b3f4-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2018 the FFmpeg developers

built with gcc 6.4.0 (Debian 6.4.0-11) 20171206

(snipped output to save space)

或者使用绝对路径

$ pwd

/home/john

$ /home/john/ffmpeg-git-20180203-amd64-static/ffmpeg

ffmpeg version N-89948-ge3d946b3f4-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2018 the FFmpeg developers

built with gcc 6.4.0 (Debian 6.4.0-11) 20171206

(snipped output to save space)

要全局安装它,我需要将二进制文件移动到shell的路径中。“PATH”是环境中的一个变量,它被设置为shell用来定位二进制文件的冒号分隔目录列表。这是我的系统路径。

$ echo $PATH

/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/john/.local/bin:/home/john/bin

检查是否安装旧版本

$ whereis ffmpeg

ffmpeg: /usr/bin/ffmpeg

这列出了安装在/usr/bin中的较老版本的ffmpeg。我可以卸载旧版本,或者将新的ffmpeg二进制文件放在/usr/bin之前搜索的路径中。应该是/usr/local/bin

将二进制文件ffmpeg和ffprobe移动到shell的路径中(sudo自行搜索安装,也可以直接mv,但比较麻烦)

$ sudo mv ffmpeg-git-20180203-amd64-static/ffmpeg ffmpeg-git-20180203-amd64-static/ffprobe /usr/local/bin/

$ whereis ffmpeg

ffmpeg: /usr/local/bin/ffmpeg

$ whereis ffprobe

ffprobe: /usr/local/bin/ffprobe

安装完成了

$ ffmpeg

ffmpeg version N-89948-ge3d946b3f4-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2018 the FFmpeg developers

built with gcc 6.4.0 (Debian 6.4.0-11) 20171206

(snipped output to save space)

卸载(当然安装是用不到的)

$ sudo rm /usr/local/bin/ffmpeg /usr/local/bin/ffprobe

2.安装youtube-dl

$ pip install you-get

3.推流

$ youtube-dl -f best $URL -o - | ffmpeg -re -i pipe:0 -c:v copy -c:a aac -f flv $RTMP

$RTMP为rtmp地址+直播码,需要加引号""

但是断开连接后推流会停止,在命令最后加 & 保持后台运行

备注:

1)使用youtube-dl下载视频的命令:youtube-dl -f best jNQXAC9IVRw

这个命令使用 -f best 参数寻找最佳画质,jNQXAC9IVRw 作为视频的番号告诉 youtube-dl 你想要下载哪个视频。

2)使用streamlink 播放视频的命令:streamlink $URL best

这个命令中 best 参数告诉了你想寻找最佳画质的资源, $URL 作为视频的播放地址告诉 streamlink 你想要播放哪个网页上的视频。如果你的电脑上安装了ffplay、ffmpeg等软件,还可以使用 --player=ffplay 指定你要使用哪个播放器播放,这里就用 ffplay 播放器。

3)使用ffmpeg推流的命令:cat example.mp4 | ffmpeg -re -i pipe:0 -c:v copy -c:a aac -f flv $RTMP

这个命令将告诉 cat 程序从你想要播放的视频文件中读取数据,| 符号表示创建一个从 cat 程序到 ffmpeg 程序的数据管道,将视频源源不断地传输过去。之后的参数中,-i pipe:0 参数告诉 ffmpeg 要从数据管道中读取数据。

-re 参数:表示告诉 ffmpeg 要按照视频正常播放的帧数来处理。

-i 参数:表示告诉 ffmpeg 要从什么地方读取媒体流数据。这里,pipe:0 是从管道读取数据,pipe:1 是向管道写入数据。

-c 参数:告诉 ffmpeg 编码方案。这里的 -c copy 表示完全拷贝,如果使用 -c:v copy -c:a aac ,则表示只拷贝视频,而音频使用 aac 格式重新编码。

-f 参数:表示文件的输入输出位置。这里的 -f flv 表示输出为 flv 格式,$RTMP 表示推流到BILIBILI直播网站的地址,这里就替换成完整的直播间 RTMP 推流地址。

举例:

1)从 Youtube 转播到 BILIBILI:youtube-dl -f best $URL -o - | ffmpeg -re -i pipe:0 -c:v copy -c:a aac -f flv $RTMP

这是一个简单的转播案例,使用UNIX的通信管道,简单地将 youtube-dl 下载的媒体流转发给 ffmpeg,此时 ffmpeg 只做简单的音频转码和格式处理就把媒体流发送到BILIBILI直播间的RTMP推流地址上。由于行为十分简单,计算机资源占用极少。

2)从 Ustream 转播到 BILIBILI:streamlink $URL best -O | ffmpeg -re -i pipe:0 -c copy -f flv $RTMP

这是一个简单的转播案例,使用UNIX的通信管道,简单地将 streamlink 下载的媒体流转发给 ffmpeg,此时 ffmpeg 只做简单的镜像拷贝就把媒体流发送到BILIBILI直播间的RTMP推流地址上。同样由于行为十分简单,计算机资源占用极少。

3)从 Youtube 转播到任意RTMP服务器:youtube-dl -f best $URL -o - | ffmpeg -re -i pipe:0 -c:v copy -c:a aac -f flv $RTMP

这个例子和前面两个别无二致,只需要替换 $RTMP 地址即可。

参考:

linux推流软件推荐,Linux直播推流相关推荐

  1. linux推流软件推荐,linux环境rtmp推流

    [实例简介] linux环境,基于rtmp推流源代码,源文件可以下载参考学习 [实例截图] [核心代码] live-rtmp-publisher-master └── live-rtmp-publis ...

  2. linux推流软件推荐,在Linux 系统使用ffmpeg软件做哔哩哔哩视频网站推流 | IT工程师的生活足迹...

    一般哔哩哔哩网站的UP主,都是使用Windows的推流软件做视频直播:最近有些空,就研究一下怎么使用Linux系统做视频推流直播. Linux 系统我最熟悉就是CentOS了,所以就选择了CentOS ...

  3. 视频直播源码 直播软件搭建进行直播推流时,对声音进行音质优化

    视频直播源码 直播软件搭建进行直播推流时,对声音进行音质优化 最近我们在使用WebRTC进行直播推流的时候,遇到了音乐音质不好的问题,对此进行优化后,音乐音质有很大提升,因此记录下优化过程,分享出来 ...

  4. 魔坊APP项目-26-直播、docker安装OSSRS流媒体直播服务器、基于APICloud的acLive直播推流模块实现RTMP直播推流、直播流管理

    一.docker安装OSSRS流媒体直播服务器 在外界开发中, 如果要实现直播功能.常用的方式有: 1. 通过第三方接口来实现.可以申请阿里云,腾讯云,网易云,七牛云的直播接口,根据文档,下载集成SD ...

  5. linux输入法大小,推荐linux下的输入法--五笔+拼音

    推荐linux下的输入法--五笔+拼音 (2012-03-19 15:35:57) 标签: yum 输入法 repo ibus wubi pinyin 杂谈 在linux下,输入法问题曾经困扰过我一段 ...

  6. linux安装软件imagemagick,linux下的ImageMagick安装方法

    linux下的ImageMagick安装方法 由于没有图形化界面的支持,在Linux(CentOS 6.4 x64)上的配置相对Windows XP还是麻烦了一点. 1.下载ImageMagick和J ...

  7. manjaro linux下载软件,manjaro linux

    manjaro linux下载.manjaro linux是基于Arch Linux开发的Linux操作系统!对于裸服务器.虚拟机.IaaS 和 PaaS 方面都得到了加强,而且内置了强大的数据中心满 ...

  8. linux打印软件,KX-MB2033CN Linux

    1.打印机驱动程序 本软件是用于Linux(R)的Panasonic打印机驱动. 您可以通过CUPS(Common Unix Printing System)进行打印,CUPS适用于Linux的打印系 ...

  9. linux安装软件w,Linux软件安装小结

    一.Linux中软件安装的方式 在Linux中一切皆文件,软件都是由源码编译生成的二进制文件.因此在Linux中安装软件有多种方式,一种是使用软件管理器安装软件,二是使用前端软件管理器安装,三是自行编 ...

  10. android rtmp推流,Android使用libRtmp直播推流

    初始化rtmp //分配空间 RTMP *rtmp = RTMP_Alloc(); //初始化 RTMP_Init(rtmp); //设置推流URL RTMP_SetupURL(rtmp, url); ...

最新文章

  1. 华为笔记本写代码真香!包邮送一台!
  2. POJ 2104 K-th Number 划分树
  3. CVE-2014-4877 wget: FTP Symlink Arbitrary Filesystem Access
  4. jvm内存模型_JVM内存模型的相关概念
  5. hdu3265一种错误的做法
  6. python前端调用后端模型_前端调用后端的方法(基于restful接口的mvc架构)
  7. 53 - II. 0~n-1中缺失的数字
  8. HTML5 Video DOM 入门体验
  9. Python编程基础11:字典
  10. java 不能继承的类_java中不能继承的类有哪些?
  11. python sqlalchemy core
  12. 【Elasticsearch】Elasticsearch 动态模板(Dynamic templates)
  13. java数组存入mysql_将数组存入数据库的解决方法及用VC与数据库交互
  14. Spring Data Rest如何暴露ID字段
  15. Android日历操作
  16. vue第五天笔记02——vuex数据仓库
  17. WORD脚注引用添加
  18. read-shrinkwrap This version of npm is compatible with lockfileVersion@1, but package-lock.json was
  19. 工业控制计算机固态硬盘,我们如何选择一款好的工业级固态硬盘?
  20. XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 查找校验xml文件中相同的节点属性值 java遍历文件夹解析XML

热门文章

  1. PDF编辑器中文版免费下载哪里可以下载?
  2. 嵌入式的c语言,嵌入式c语言
  3. James+Javamail构建邮箱服务
  4. ipad mini2降级刷10.3.3系统教程
  5. adb与java端口冲突,如何解决adb devices 端口被占用的问题zz
  6. c语言程序中不能表示数制的是,2017计算机c语言二级考试题库及答案
  7. visual studio 2015安装教程
  8. 手写键盘计算机,鼠标手写输入法计算机版本v2017最新版本
  9. OPPO发力感知和计算领域,布局泛在服务未来
  10. teamview linux命令行安装参数