使用 USB 网络摄像头流 (pytgcalls) 的电报视频通话
Telegram video call with USB webcam stream (pytgcalls)
我正在尝试在 Telegram 上使用 pytgcalls
发送 USB 网络摄像头的流。 documentation 中没有相关内容,但有几个流式传输 youtube 视频或本地 mp4 文件的示例。我发现了这个流式传输 youtube 视频的示例,我认为流式传输 usb 网络摄像头非常相似。
首先,导入模块:
import asyncio
from pyrogram import Client
from pytgcalls import idle
from pytgcalls import PyTgCalls
from pytgcalls import StreamType
from pytgcalls.types.input_stream import AudioImagePiped, AudioVideoPiped
from pytgcalls.types.input_stream.quality import HighQualityVideo, HighQualityAudio, LowQualityAudio, LowQualityVideo
现在,启动 pyrogram 和 pytgcalls 客户端:
app = Client('py-tgcalls', api_id=API_ID, api_hash=API_HASH)
call_py = PyTgCalls(app)
call_py.start()
声明将 youtube link 转换为流的函数:
def get_youtube_stream():
async def run_async():
proc = await asyncio.create_subprocess_exec(
'youtube-dl',
'-g',
'-f',
'best[height<=?720][width<=?1280]',
# Some random YT link
'https://www.youtube.com/watch?v=AAAAAAA',
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE,
)
stdout, stderr = await proc.communicate()
return stdout.decode().split('\n')[0]
return asyncio.get_event_loop().run_until_complete(run_async())
在群中声明通过电报发送流的功能:
def youtube():
remote = get_youtube_stream()
call_py.join_group_call(
# Group ID
-10011111111,
AudioVideoPiped(
remote,
HighQualityAudio(),
HighQualityVideo(),
),
stream_type=StreamType().pulse_stream,
)
现在函数youtube()
可以执行了:
youtube()
使用 idle()
来阻止脚本:
idle()
这是脚本,有人可以帮我直播 USB 网络摄像头吗?
最近 pytgcalls (0.9.0) 增加了从 upd 流流式传输的可能性,您可以直接使用 ffmpeg 捕获媒体设备并制作本地 UDP 流式传输
我正在尝试在 Telegram 上使用 pytgcalls
发送 USB 网络摄像头的流。 documentation 中没有相关内容,但有几个流式传输 youtube 视频或本地 mp4 文件的示例。我发现了这个流式传输 youtube 视频的示例,我认为流式传输 usb 网络摄像头非常相似。
首先,导入模块:
import asyncio
from pyrogram import Client
from pytgcalls import idle
from pytgcalls import PyTgCalls
from pytgcalls import StreamType
from pytgcalls.types.input_stream import AudioImagePiped, AudioVideoPiped
from pytgcalls.types.input_stream.quality import HighQualityVideo, HighQualityAudio, LowQualityAudio, LowQualityVideo
现在,启动 pyrogram 和 pytgcalls 客户端:
app = Client('py-tgcalls', api_id=API_ID, api_hash=API_HASH)
call_py = PyTgCalls(app)
call_py.start()
声明将 youtube link 转换为流的函数:
def get_youtube_stream():
async def run_async():
proc = await asyncio.create_subprocess_exec(
'youtube-dl',
'-g',
'-f',
'best[height<=?720][width<=?1280]',
# Some random YT link
'https://www.youtube.com/watch?v=AAAAAAA',
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE,
)
stdout, stderr = await proc.communicate()
return stdout.decode().split('\n')[0]
return asyncio.get_event_loop().run_until_complete(run_async())
在群中声明通过电报发送流的功能:
def youtube():
remote = get_youtube_stream()
call_py.join_group_call(
# Group ID
-10011111111,
AudioVideoPiped(
remote,
HighQualityAudio(),
HighQualityVideo(),
),
stream_type=StreamType().pulse_stream,
)
现在函数youtube()
可以执行了:
youtube()
使用 idle()
来阻止脚本:
idle()
这是脚本,有人可以帮我直播 USB 网络摄像头吗?
最近 pytgcalls (0.9.0) 增加了从 upd 流流式传输的可能性,您可以直接使用 ffmpeg 捕获媒体设备并制作本地 UDP 流式传输