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

步骤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 & 这时候 就可以关掉 命令窗口 无人值守直播 启动完毕;

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python obs推流是指使用Python编程语言中的OBS(Open Broadcaster Software)库来实现推流功能。OBS是一款开源的多媒体直播软件,它可以将音频和视频内容进行编码并发送到服务器,从而实现实时直播的功能。 使用Python obs推流需要首先安装obs-python库,并且需要在计算机上安装OBS软件。然后,通过编写Python代码来实现推流功能。 首先,需要导入obs-python库,然后创建一个OBS对象: ```python import obspython as obs obs.obs_startup() # 创建OBS对象 obs_object = obs.obs_get_instance() ``` 接下来,需要设置推流的输出设置,包括视频和音频的相关参数。这些参数可以从OBS软件中获取: ```python # 设置输出设置 settings = obs.obs_data_create() obs_output = obs.obs_get_output(obs_object) # 获取输出设置 obs.obs_output_get_video_settings(output_settings, settings) obs.obs_output_get_audio_settings(output_settings, settings) # 设置视频和音频参数 obs.obs_data_set_int(settings, "width", 1920) obs.obs_data_set_int(settings, "height", 1080) obs.obs_data_set_double(settings, "fps_num", 30.0) obs.obs_data_set_double(settings, "fps_den", 1.0) obs.obs_data_set_int(settings, "bitrate", 5000) obs.obs_data_set_int(settings, "audio_bitrate", 128) obs.obs_data_set_int(settings, "audio_channels", 2) obs.obs_data_set_int(settings, "audio_sample_rate", 44100) # 更新输出设置 obs.obs_output_update(obs_output, settings) obs.obs_data_release(settings) ``` 最后,需要开始推流: ```python # 启动推流 obs.obs_output_start(obs_output) ``` 当推流完成时,可以通过调用停止推流的函数来结束推流: ```python # 停止推流 obs.obs_output_stop(obs_output) ``` 最后,记得释放资源并关闭OBS对象: ```python obs.obs_output_release(obs_output) obs.obs_shutdown() ``` 以上就是使用Python obs推流的基本步骤,通过编写相应的代码即可实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DNCS高级工程师

你的创作是我打赏的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值