利用python+ffmpeg实现24小时无人值守直播

步骤1、可以是自己电脑、最好是闲置的云服务器;

2、安装python3,具体过程不做赘述,搜索方案很多;注:如为云服务器安装的版本或许是python2,目测是不大支持直接卸载安装python3;

3、ffmpeg官网,自行选择对应的系统下载编译安装 这里不同的系统可能会遇到各种问题,这里是详细的安装过程,但每个人遇到的情况不同,自行借助搜索引擎解决 安装编译的东西比较多,这一步应该是最难的,搞定之后一路畅通;

4、安装完ffmpeg之后 验证,出现下方即为成功

python 复制代码
$ ffmpeg -version
ffmpeg version N-102343-g4d3474432f Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-44)
configuration: --prefix=/root/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --extra-libs=-lpthread --extra-libs=-lm --bindir=/root/bin --enable-gpl --enable-libfdk_aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
libavutil      57.  0.100 / 57.  0.100
libavcodec     59.  0.100 / 59.  0.100
libavformat    59.  0.100 / 59.  0.100
libavdevice    59.  0.100 / 59.  0.100
libavfilter     8.  0.101 /  8.  0.101
libswscale      6.  0.100 /  6.  0.100
libswresample   4.  0.

5、当ffmpeg安装编译成功之后,以我的服务器举例

cd home

之后创建 任意目录 内部创建一个 存放视频的 目录

例如 home 下 创建videoList

下面是我服务器上的:

root@iZ0jlcmvdsbq3c2pzlpt2oZ home\]# cd huya \[root@iZ0jlcmvdsbq3c2pzlpt2oZ huya\]# ls huya_live.py nohup.out videoList \[root@iZ0jlcmvdsbq3c2pzlpt2oZ huya\]# pwd /home/huya 6、直播推流脚本 live.py ```python import os import subprocess import time import re # 导入正则表达式模块 push_url = "rtmp://a.rtmp.youtube.com/live2/8hb5-8vze-gpf7-rk0t-dmeh" // 这里拿虎牙举例 ,需要自身是主播 ,在网页端 主播设置中 获取推流地址 ; video_dir = "/Users/ljj/Downloads/fanqie/video" // 这里 就是视频路径地址 ,这个地址要跟自己创建的 视频目录完全一致 def natural_sort_key(s): # 从文件名中提取数字 -- 这里是按照视频中的 数字进行排序 所以 请注意 保证视频中有索引 例如 完美世界1.mp4 ,1代表第一集 ;当然这个是为了保证剧集多的情况下不乱,当播放的是电影的时候 无所谓,随意处理就行; numbers = [int(text) for text in re.findall(r'\d+', s)] # 如果没有数字,则返回一个非常大的负数 if not numbers: return float('-inf') # 返回数字列表的第一个元素用于排序 return numbers[0] while True: video_list = sorted(os.listdir(video_dir), key=natural_sort_key) for video_file in video_list: video_path = os.path.join(video_dir, video_file) print(f"Processing file: {video_path}") # 打印正在处理的文件 cmd = f"ffmpeg -re -i \"{video_path}\" -vcodec copy -acodec copy -f flv '{push_url}'" # ffmpeg -loglevel debug -re -i "/Users/ljj/Downloads/fanqie/video/1.mp4" -vcodec copy -acodec copy -f flv "rtmp://a.rtmp.youtube.com/live2/8hb5-8vze-gpf7-rk0t-dmeh" print(f"Running command: {cmd}") # 打印FFmpeg命令 subprocess.call(cmd, shell=True) time.sleep(0.1) ``` 7、将 live.py 存放到刚才创建的与视频目录平级的地址 当然这个不是硬性能找到即可; 8、如何启动推流 :python3 live.py 这个可以启动测试 窗口关掉 则推流断掉; 9、当测试完毕:nohup python3 live_stream.py \& 这时候 就可以关掉 命令窗口 无人值守直播 启动完毕;

相关推荐
波波0077 分钟前
写出稳定C#系统的关键:不可变性思想解析
开发语言·c#·wpf
dr_yingli28 分钟前
fMRI(3-1)报告(个体化报告)生成器说明
开发语言·matlab
hrhcode29 分钟前
【java工程师快速上手go】一.Go语言基础
java·开发语言·golang
l1t31 分钟前
用wsl自带的python 3.10下载适用于3.12的pandas版本结合uv安装python 3.12模拟离线安装场景
python·pandas·uv
飞Link1 小时前
【AI大模型实战】万字长文肝透大语言模型(LLM):从底层原理解析到企业级Python项目落地
开发语言·人工智能·python·语言模型·自然语言处理
妙蛙种子3111 小时前
【Java设计模式 | 创建者模式】 原型模式
java·开发语言·后端·设计模式·原型模式
翻斗包菜1 小时前
第 03 章 Python 操作 MySQL 数据库实战全解
数据库·python·mysql
LlNingyu1 小时前
Go 实现无锁环形队列:面向多生产者多消费者的高性能 MPMC 设计
开发语言·golang·队列·mpmc·数据通道
Lyyaoo.1 小时前
【JAVA基础面经】线程的状态
java·开发语言
John.Lewis1 小时前
C++进阶(8)智能指针
开发语言·c++·笔记