Pyrogram support module for Telegram VoIP Library for Python
Project description
pytgvoip_pyrogram
Sample usage of PytgVoIP library with Pyrogram
Hopefully pytgvoip
support will be integrated in Pyrogram itself, but this repository would still be available as reference even after merge.
Detailed pytgvoip
usage guide is also available here
# making outgoing calls
from pyrogram import Client
from tgvoip_pyrogram import VoIPFileStreamService
app = Client('account')
app.start()
service = VoIPFileStreamService(app, receive_calls=False)
call = service.start_call('@bakatrouble')
call.play('input.raw')
call.play_on_hold(['input.raw'])
call.set_output_file('output.raw')
@call.on_call_ended
def call_ended(call):
app.stop()
# accepting incoming calls
from pyrogram import Client
from tgvoip_pyrogram import VoIPFileStreamService, VoIPIncomingFileStreamCall
app = Client('account')
app.start()
service = VoIPFileStreamService(app)
@service.on_incoming_call
def handle_call(call: VoIPIncomingFileStreamCall):
call.accept()
call.play('input.raw')
call.play_on_hold(['input.raw'])
call.set_output_file('output.raw')
# you can use `call.on_call_ended(lambda _: app.stop())` here instead
@call.on_call_ended
def call_ended(call):
app.stop()
Requirements
- Python 3.5 or higher
- PytgVoIP (listed as dependency)
- Pyrogram (listed as dependency)
Installing
pip3 install pytgvoip-pyrogram
Encoding audio streams
Streams consumed by libtgvoip
should be encoded in 16-bit signed PCM audio.
$ ffmpeg -i input.mp3 -f s16le -ac 1 -ar 48000 -acodec pcm_s16le input.raw # encode
$ ffmpeg -f s16le -ac 1 -ar 48000 -acodec pcm_s16le -i output.raw output.mp3 # decode
Copyright & License
- Copyright (C) 2019 bakatrouble
- Licensed under the terms of the GNU Lesser General Public License v3 or later (LGPLv3+)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.