python+ffmpeg实现推送本地音频/视频/本地话筒/本地桌面等到RTMP服务器

摘要:
流媒体服务器设置:https://blog.csdn.net/qq_21454973/article/details/102894919上层代码:importosos。环境['path']=os。环境get('path')+';C: Tools的importsubprocess#将日志输出的时间类型转换为秒defget_秒(time):h=int(time[0:2]

流媒体服务器搭建:https://blog.csdn.net/qq_21454973/article/details/102894919

上代码:

import os
os.environ['path'] = os.environ.get('path')+';C:\tools'
import subprocess


# 将日志输出的时间类型转换成秒
def get_seconds(time):
    h = int(time[0:2])
    # print("时:" + str(h))
    m = int(time[3:5])
    # print("分:" + str(m))
    s = int(time[6:8])
    # print("秒:" + str(s))
    ms = int(time[9:12])
    # print("毫秒:" + str(ms))
    ts = (h * 60 * 60) + (m * 60) + s + (ms / 1000)
    return ts


# size=   25189kB time=00:04:28.67 bitrate= 768.0kbits/s speed= 748x
# video:0kB audio:25189kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000302%
#'-keyint_min', '25','-g', '25', 关键帧
# FrontMic (Realtek High Definiti
cmd = ['ffmpeg', '-re','-i', '''C:\1.mp3''', '-vn', '-acodec', 'copy',
       '-f', 'flv', 'rtmp://192.168.1.3:1935/rtmp/test']




cmd = ['ffmpeg', '-re','-i', '''C:\source\p2tl4ij80h.mp4''', '-vcodec', 'copy', '-acodec', 'copy','-r','60',
       '-f', 'flv', 'rtmp://192.168.1.3:1935/rtmp/pjk516b3']
process = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, encoding="utf-8",
                           text=True)
# process = subprocess.Popen('''ffmpeg -f dshow -i audio="FrontMic (Realtek High Definiti" -f flv rtmp://192.168.1.3:1935/rtmp/test''', shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, encoding="utf-8",
#                            text=True)
for line in process.stdout:
    print(line)

    # duration_res = re.search(r'sDuration: (?P<duration>S+)', line)
    # if duration_res is not None:
    #     duration = duration_res.groupdict()['duration']
    #     duration = re.sub(r',', '', duration)
    #
    # result = re.search(r'stime=(?P<time>S+)', line)
    # if result is not None:
    #     elapsed_time = result.groupdict()['time']
    #     # 此处可能会出现进度超过100%,未对数值进行纠正
    #     progress = (get_seconds(elapsed_time) / get_seconds(duration)) * 100
    #     print(elapsed_time)
    #     print(progress)
    #     print("进度:%3.2f" % progress + "%")
process.wait()
if process.poll() == 0:
    print("success:", process)
else:
    print("error:", process)

  推送音频:

cmd = ['ffmpeg', '-re','-i', '''C:\1.mp3''', '-vn', '-acodec', 'copy',
       '-f', 'flv', 'rtmp://192.168.1.3:1935/rtmp/test']

  推送视频:

cmd = ['ffmpeg', '-re','-i', '''C:\source\p2tl4ij80h.mp4''', '-vcodec', 'copy', '-acodec', 'copy','-r','60',
       '-f', 'flv', 'rtmp://192.168.1.3:1935/rtmp/pjk516b3']

  推送话筒:

process = subprocess.Popen('''ffmpeg -f dshow -i audio="FrontMic (Realtek High Definiti" -f flv rtmp://192.168.1.3:1935/rtmp/test''', shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, encoding="utf-8",
                          text=True)

  FrontMic (Realtek High Definiti 是可推送设备名称,可参考:

https://www.cnblogs.com/wohuiyijiu/p/12808957.html

推送桌面需要安装一个录屏软件【Screen Capturer Recorder】自行百度下载

命令:
ffmpeg  -f dshow -i video="screen-capture-recorder":audio="virtual-audio-capturer"  -f flv rtmp://192.168.1.3:1935/rtmp/test

替换下命令即可

告辞!

免责声明:文章转载自《python+ffmpeg实现推送本地音频/视频/本地话筒/本地桌面等到RTMP服务器》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇fs.readdirSync[.net 面向对象程序设计进阶] (22) 团队开发利器(一)简单易用的代码管理工具VSS下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C#使用FFMPEG推流,并且获取流保存在本地,随时取媒体进行播放!

最近开发了基于C#的推流器一直不大理想,终于在不懈努力之后研究了一点成果,这边做个笔记;本文着重在于讲解下如何使用ffmpeg进行简单的推流,看似简单几行代码没有官方的文档很吃力。并获取流的源代码:如下→ #region RTMP推流(**已成功推流至服务器**)Network.Create() ....

FFmpeg笔记--vcodec和-c:v,-acodec和-c:a的区别?

在看ffmpeg命令的时候经常会看到有些地方使用--vcodec指定视频解码器,而有些地方使用-c:v指定视频解码器,那这两个有没有区别呢? ffmpeg的官方文档: -vcodec codec (output) Set the video codec. This is an alias for -codec:v. 也就是说-vcodec和-code...

基于ffmpeg不同编码方式转码后的psnr对比

一、测试说明: 源文件:1080psrc.mp4 时长:900秒 源文件信息:Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 2960 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)...

关于ffmpeg的安装具体步骤和说明

一、windows安装:直接下载地址:https://ffmpeg.zeranoe.com/builds/https://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-20160316-git-d0a9114-win64-static.7z解压后就可以使用:ffmpeg -i C:ffmpeg est.avi...

C#取视频某一帧图片

首先下载 ffmpeg http://ffmpeg.org/  注意一定要从官网下载,其他地方可以会有问题 解压后在 bin 目录下找到 ffmpeg.exe   用到的使命是 -i 视频地址 -ss 第几帧 -f image2 图片存放地址 用cmd试一下,首先切换到ffmpeg.exe所在目录,输入命令,回车    最后上C#代码 using (...

【转】FFmpeg采集设备

ffmpeg在linux下支持的采集设备的种类比较多。 在操作设备之前,我们可以查看当前系统可以支持的操作设备: ffmpeg -hide_banner -devices Devices: D. = Demuxing supported //输入的设备 .E = Muxing supported //输出的设备 -- DE alsa ALSA audio...