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()
- Python 3.5 or higher
- PytgVoIP (listed as dependency)
- Pyrogram (listed as dependency)
pip3 install pytgvoip-pyrogram
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 (C) 2019 bakatrouble
- Licensed under the terms of the GNU Lesser General Public License v3 or later (LGPLv3+)