吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8951|回复: 105
上一主题 下一主题
收起左侧

[Python 原创] 利用python+ffmpeg实现24小时无人值守直播

    [复制链接]
跳转到指定楼层
楼主
zhengduimen 发表于 2024-7-22 10:08 回帖奖励
本帖最后由 zhengduimen 于 2024-12-3 09:43 编辑

步骤1、可以是自己电脑、最好是闲置的云服务器;
2、安装python3,具体过程不做赘述,搜索方案很多;注:如为云服务器安装的版本或许是python2,目测是不大支持直接卸载安装python3;
3、ffmpeg官网,自行选择对应的系统下载编译安装  这里不同的系统可能会遇到各种问题,这里是详细的安装过程,但每个人遇到的情况不同,自行借助搜索引擎解决 安装编译的东西比较多,这一步应该是最难的,搞定之后一路畅通;
4、安装完ffmpeg之后 验证,出现下方即为成功
$ 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
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 & 这时候 就可以关掉 命令窗口 无人值守直播 启动完毕;
10、完整的说明描述:https://blog.csdn.net/u014449096/article/details/140034518?spm=1001.2014.3001.5501   
11、演示地址,不保证随时能用,因为我可能会停掉或者切换推流地址:https://www.huya.com/15732718



本地直播推流可执行软件下载:
移除下载链接,没必要用这个,跑一下代码就起来了,这部分代码不多。



免费评分

参与人数 9吾爱币 +14 热心值 +8 收起 理由
yangon + 1 + 1 用心讨论,共获提升!
xy6538 + 1 谢谢@Thanks!
jie5201055 + 1 + 1 我很赞同!
angelmean120 + 1 + 1 我很赞同!
guoruihotel + 1 + 1 谢谢@Thanks!
zhuzi77 + 1 + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
a5436539 + 1 我很赞同!
cm26408 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
xiaomingtt 发表于 2024-8-2 15:47
树莓派上弄好了。树莓派4B,安装最新树莓派OS,自带python3和ffmpeg,代码基本拿过来就能用。
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import os
import subprocess
import time
import re
 
push_url = "rtmp://tx.direct.huya.com/huyalive/1299644932728-1299644932728-0-2399289286892-10057-A-1722472914-1?seq=1722472915126&type=simple"
video_dir = "/home/lee/Desktop/video"
 
def natural_sort_key(s):
    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}\" -c:v libx264 -preset fast -c:a aac -strict -2 -f flv \"{push_url}\""
        print(f"Running command: {cmd}")
        subprocess.call(cmd, shell=True)
    time.sleep(0.1)


一起来练八段锦:珂珂酷酷其他直播直播_珂珂酷酷视频直播 - 虎牙直播 (huya.com)

另外树莓派上连接了带麦克风的USB摄像头,修改一下ffmpeg命令就可以实现摄像头直播。
摄像头视频直播,无音频:
[Asm] 纯文本查看 复制代码
1
2
3
4
ffmpeg -f v4l2 -i /dev/video0 -r 15 -s 1280x720 \
       -vcodec libx264 -preset veryfast -maxrate 1500k -bufsize 3000k \
       -g 30 -keyint_min 30 -sc_threshold 0 -profile:v main -level 3.1 \
       -pix_fmt yuv420p -f flv '推流地址'

摄像头音视频直播:
[Asm] 纯文本查看 复制代码
1
2
3
4
5
ffmpeg -f v4l2 -i /dev/video0 -f alsa -i default -r 15 -s 1280x720 \
       -vcodec libx264 -preset veryfast -maxrate 1500k -bufsize 3000k \
       -g 30 -keyint_min 30 -sc_threshold 0 -profile:v main -level 3.1 \
       -pix_fmt yuv420p -acodec aac -strict -2 -ar 44100 \
       -f flv '推流地址'


还是上面的连接,有缘就可以看到我上班摸鱼的画面。
推荐
 楼主| zhengduimen 发表于 2024-7-31 13:44 |楼主
树下彩虹025 发表于 2024-7-31 13:30
不错,特地去虎牙看了。播放的视频必须是本地视频吗?可以转发第三方视频吗?比如放在其他储存服务器或者网 ...

转发 似乎也可以做 不过 估计得改代码。
沙发
H721 发表于 2024-7-22 10:50
3#
xiaomiKO 发表于 2024-7-22 10:50
会被判定无人直播吗
4#
sdieedu 发表于 2024-7-22 10:51
这个厉害啊
5#
bypassYing 发表于 2024-7-22 11:07

这个厉害啊 跟随大佬的脚步
6#
 楼主| zhengduimen 发表于 2024-7-22 11:15 |楼主
xiaomiKO 发表于 2024-7-22 10:50
会被判定无人直播吗

虎牙,斗鱼 、b站本就支持 无人直播 ,其他平台 我没试。
7#
 楼主| zhengduimen 发表于 2024-7-22 11:19 |楼主
ffmpeg官网 追加的 连接 没了  ,这是官网 下载地址 :https://www.ffmpeg.org/download.html   
https://blog.csdn.net/u014449096/article/details/140034518?spm=1001.2014.3001.5501  这个上半部分 有如何编译ffmpeg的方法,具体编译情况还是要跟自己服务器环境有关。出现问题博客上没有的话,需要自行检索处理方案
8#
huancaixi 发表于 2024-7-22 11:23
抖音可以吗
9#
yuanshang000 发表于 2024-7-22 11:26
感谢分享
10#
 楼主| zhengduimen 发表于 2024-7-22 11:38 |楼主

抖音 不够1000粉 没试 ;但理论上是可以的 ,只要获取正确的rtmp地址就没问题
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-5-20 08:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表