开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 265

shankhand/python-learn

forked from mktime/python-learn
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
python-learn
/
audio-rtmp.py
python-learn
/
audio-rtmp.py
audio-rtmp.py 4.03 KB
一键复制 编辑 原始数据 按行查看 历史
内部项目 提交于 2024年11月14日 17:46 +08:00 . 支持腾讯云直播推流服务
import pyaudio
import subprocess
import sys
import noisereduce as nr
import numpy as np
from datetime import datetime, timedelta
import hashlib
# 设置参数
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 1024
RTMP_URL = 'rtmp://127.0.0.1/live/stream' # 替换为你的 RTMP 服务器地址
DEVICE_INDEX = 0
'''
rtmp服务器搭建指南:
1.编译安装nginx和rtmp module,下载源码.
```
https://nginx.org/download/nginx-1.27.2.tar.gz
https://github.com/arut/nginx-rtmp-module.git
```
生成makefile
```
./configure --prefix=/Users/linus/nginx \
--with-cc-opt=-Wno-unused-but-set-variable \
--add-module=/Users/linus/nginx-rtmp-module;
```
2.配置nginx,在nginx.conf末尾追加
```
rtmp {
server {
listen 1935; # RTMP 端口
chunk_size 4096;
allow publish 127.0.0.1;
deny publish all;
application live {
live on; # 开启直播
record off; # 关闭录制(如果不需要)
}
}
}
```
3.启动nginx
4.运行本代码
python audio-rtmp.py
5.打开vlc,选择网络播放,地址
rtmp://127.0.0.1/live/stream
'''
def start_rtmp_server():
# 初始化 PyAudio
audio = pyaudio.PyAudio()
# 打开音频流
stream = audio.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
# 启动 FFmpeg 进程
ffmpeg_cmd = [
'ffmpeg',
'-f', 's16le', # 输入格式
'-ar', str(RATE), # 采样率
'-ac', str(CHANNELS), # 声道数
'-i', '-', # 输入来自标准输入
'-c:a', 'aac', # 音频编码器
'-f', 'flv', # 输出格式
RTMP_URL
]
process = subprocess.Popen(ffmpeg_cmd, stdin=subprocess.PIPE)
print(f"开始录音并推送到 RTMP 服务器{RTMP_URL}")
try:
while True:
try:
# 从音频流中读取数据
data = stream.read(CHUNK)
# 将字节数据转换为 NumPy 数组
audio_data = np.frombuffer(data, dtype=np.int16)
# 进行降噪处理
reduced_noise = nr.reduce_noise(y=audio_data, sr=RATE)
# 将处理后的数据转换回字节格式
output_data = reduced_noise.astype(np.int16).tobytes()
# 将处理后的数据写入 FFmpeg 进程
process.stdin.write(output_data)
except BrokenPipeError:
print('[warn] pipe write.')
#except Exception:
# print('[warn] opps.')
except KeyboardInterrupt:
print("停止录音.")
# 清理资源
stream.stop_stream()
stream.close()
audio.terminate()
process.stdin.close()
process.wait()
def choose_device():
# 初始化 PyAudio
audio = pyaudio.PyAudio()
# 列出所有音频输入设备
for i in range(audio.get_device_count()):
device_info = audio.get_device_info_by_index(i)
if device_info['maxInputChannels'] > 0:
print(f"Device {i}: {device_info['name']}")
audio.terminate()
print(40 * '*')
print('>>请输入麦克风编号:', end='', flush=True)
DEVICE_INDEX = sys.stdin.readline().strip()
def create_rtmp_url():
'''如果使用腾讯云直播服务,创建推流地址'''
domain = 'push.tlivecloud.com'
app_name = 'live'
stream_name = 'stream'
key = 'key123'
current_date = datetime.now()
next_month = current_date + timedelta(days=30)
_time = int(next_month.timestamp())
hex_time = str(hex(_time))[2:].upper()
_txSecret = key + stream_name + hex_time
txSecret = hashlib.md5(_txSecret.encode('utf-8')).hexdigest()
txTime = hex_time
rtmp_url = f'rtmp://{domain}/{app_name}/{stream_name}?txSecret={txSecret}&txTime={txTime}'
print('rtmp_url:', rtmp_url)
return rtmp_url
if __name__ == '__main__':
#choose_device()
start_rtmp_server()
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

个人AI助理,音频实时监听,GPT对话,opencv获取摄像头视频截图;Python基础编程示例:Excel读写追加处理,XML解析、JSON解析、FLV与MP4转换,PyQT界面应用程序开发示例等,https证书到期检测,糗百爬虫,pdf和图片互相转换,socket使用,百度OCR调用例子,IP及端口快速扫描。
暂无标签
MIT
使用 MIT 开源许可协议
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/wsldwps/python-learn.git
git@gitee.com:wsldwps/python-learn.git
wsldwps
python-learn
python-learn
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /