async def play_video(file: str, height: int, width: int, quality: int, seek: int = None): r_width, r_height = get_quality_ratios(width, height, quality) ffmpeg_parm = f'-ss {seek} -atend -to {CURRENT_SONG["duration"]}' if seek else '' try: await call.change_stream( CHAT_ID, AudioVideoPiped(file, video_parameters=VideoParameters( r_width, r_height, 25), additional_ffmpeg_parameters=ffmpeg_parm)) except NotInGroupCallError: await call.join_group_call( CHAT_ID, AudioVideoPiped(file, video_parameters=VideoParameters( r_width, r_height, 25), additional_ffmpeg_parameters=ffmpeg_parm)) if not seek: CURRENT_SONG['start'] = time.time()
from pytgcalls import idle from pytgcalls import PyTgCalls from pytgcalls import StreamType from pytgcalls.types.input_stream import AudioVideoPiped from pytgcalls.types.input_stream.quality import HighQualityAudio from pytgcalls.types.input_stream.quality import HighQualityVideo app = Client( 'py-tgcalls', api_id=123456789, api_hash='abcdef12345', ) call_py = PyTgCalls(app) call_py.start() remote = 'http://docs.evostream.com/sample_content/assets/sintel1m720p.mp4' call_py.join_group_call( -1001234567890, AudioVideoPiped( remote, HighQualityAudio(), HighQualityVideo(), additional_ffmpeg_parameters='EVERYTHING BEFORE THE INPUT (-i) ' '-atend ' 'EVERYTHING AFTER ALL ARGUMENTS', ), stream_type=StreamType().pulse_stream, ) idle()
from pytgcalls.types.input_stream.quality import HighQualityAudio from pytgcalls.types.input_stream.quality import HighQualityVideo app = Client( 'py-tgcalls', api_id=123456789, api_hash='abcdef12345', ) call_py = PyTgCalls(app) call_py.start() remote = 'http://docs.evostream.com/sample_content/assets/sintel1m720p.mp4' call_py.join_group_call( -1001234567890, AudioVideoPiped( remote, HighQualityAudio(), HighQualityVideo(), # You can add --video or --audio to the ffmpeg # command line to specify to what you want to add these parameters additional_ffmpeg_parameters='EVERYTHING BEFORE THE INPUT (-i) ' '-atmid ' 'EVERYTHING AFTER THE INPUT (-i) ' '-atend ' 'EVERYTHING AFTER ALL ARGUMENTS', ), stream_type=StreamType().pulse_stream, ) idle()
async def vc_vplay(event): title = event.pattern_match.group(1) replied = await event.get_reply_message() chat = await event.get_chat() titlegc = chat.title chat_id = event.chat_id from_user = vcmention(event.sender) if ( replied and not replied.video and not replied.document and not title or not replied and not title ): return await edit_or_reply(event, "**Silahkan Masukan Judul Video**") if replied and not replied.video and not replied.document: xnxx = await edit_or_reply(event, "`Searching...`") query = event.text.split(maxsplit=1)[1] search = ytsearch(query) RESOLUSI = 720 hmmm = HighQualityVideo() if search == 0: await xnxx.edit( "**Tidak Dapat Menemukan Video** Coba cari dengan Judul yang Lebih Spesifik" ) else: songname = search[0] title = search[0] url = search[1] duration = search[2] thumbnail = search[3] videoid = search[4] ctitle = await CHAT_TITLE(titlegc) thumb = await gen_thumb(thumbnail, title, videoid, ctitle) hm, ytlink = await ytdl(url) if hm == 0: await xnxx.edit(f"`{ytlink}`") elif chat_id in QUEUE: pos = add_to_queue(chat_id, songname, ytlink, url, "Video", RESOLUSI) caption = f"💡 **Video Ditambahkan Ke antrian »** `#{pos}`\n\n**🏷 Judul:** [{songname}]({url})\n**⏱ Durasi:** `{duration}`\n🎧 **Atas permintaan:** {from_user}" await xnxx.delete() await event.client.send_file( chat_id, thumb, caption=caption, reply_to=event.reply_to_msg_id ) else: try: await call_py.join_group_call( chat_id, AudioVideoPiped( ytlink, HighQualityAudio(), hmmm, ), stream_type=StreamType().pulse_stream, ) add_to_queue(chat_id, songname, ytlink, url, "Video", RESOLUSI) await xnxx.edit( f"**🏷 Judul:** [{songname}]({url})\n**⏱ Durasi:** `{duration}`\n💡 **Status:** `Sedang Memutar Video`\n🎧 **Atas permintaan:** {from_user}", link_preview=False, ) except AlreadyJoinedError: await call_py.leave_group_call(chat_id) clear_queue(chat_id) await xnxx.edit( "**ERROR:** `Karena akun sedang berada di obrolan suara`\n\n• Silahkan Coba Play lagi" ) except Exception as ep: clear_queue(chat_id) await xnxx.edit(f"`{ep}`") elif replied: xnxx = await edit_or_reply(event, "📥 **Sedang Mendownload**") dl = await replied.download_media() link = f"https://t.me/c/{chat.id}/{event.reply_to_msg_id}" if len(event.text.split()) < 2: RESOLUSI = 720 else: pq = event.text.split(maxsplit=1)[1] RESOLUSI = int(pq) if replied.video or replied.document: songname = "Telegram Video Player" if chat_id in QUEUE: pos = add_to_queue(chat_id, songname, dl, link, "Video", RESOLUSI) caption = f"💡 **Video Ditambahkan Ke antrian »** `#{pos}`\n\n**🏷 Judul:** [{songname}]({link})\n**👥 Chat ID:** `{chat_id}`\n🎧 **Atas permintaan:** {from_user}" await event.client.send_file( chat_id, QUEUE_PIC, caption=caption, reply_to=event.reply_to_msg_id ) await xnxx.delete() else: if RESOLUSI == 360: hmmm = LowQualityVideo() elif RESOLUSI == 480: hmmm = MediumQualityVideo() elif RESOLUSI == 720: hmmm = HighQualityVideo() try: await call_py.join_group_call( chat_id, AudioVideoPiped( dl, HighQualityAudio(), hmmm, ), stream_type=StreamType().pulse_stream, ) add_to_queue(chat_id, songname, dl, link, "Video", RESOLUSI) caption = f"🏷 **Judul:** [{songname}]({link})\n**👥 Chat ID:** `{chat_id}`\n💡 **Status:** `Sedang Memutar Video`\n🎧 **Atas permintaan:** {from_user}" await xnxx.delete() await event.client.send_file( chat_id, PLAY_PIC, caption=caption, reply_to=event.reply_to_msg_id ) except AlreadyJoinedError: await call_py.leave_group_call(chat_id) clear_queue(chat_id) await xnxx.edit( "**ERROR:** `Karena akun sedang berada di obrolan suara`\n\n• Silahkan Coba Play lagi" ) except Exception as ep: clear_queue(chat_id) await xnxx.edit(f"`{ep}`") else: xnxx = await edit_or_reply(event, "`Searching...`") query = event.text.split(maxsplit=1)[1] search = ytsearch(query) RESOLUSI = 720 hmmm = HighQualityVideo() if search == 0: await xnxx.edit("**Tidak Menemukan Video untuk Keyword yang Diberikan**") else: songname = search[0] title = search[0] url = search[1] duration = search[2] thumbnail = search[3] videoid = search[4] ctitle = await CHAT_TITLE(titlegc) thumb = await gen_thumb(thumbnail, title, videoid, ctitle) hm, ytlink = await ytdl(url) if hm == 0: await xnxx.edit(f"`{ytlink}`") elif chat_id in QUEUE: pos = add_to_queue(chat_id, songname, ytlink, url, "Video", RESOLUSI) caption = f"💡 **Video Ditambahkan Ke antrian »** `#{pos}`\n\n🏷 **Judul:** [{songname}]({url})\n**⏱ Durasi:** `{duration}`\n🎧 **Atas permintaan:** {from_user}" await xnxx.delete() await event.client.send_file( chat_id, thumb, caption=caption, reply_to=event.reply_to_msg_id ) else: try: await call_py.join_group_call( chat_id, AudioVideoPiped( ytlink, HighQualityAudio(), hmmm, ), stream_type=StreamType().pulse_stream, ) add_to_queue(chat_id, songname, ytlink, url, "Video", RESOLUSI) caption = f"🏷 **Judul:** [{songname}]({url})\n**⏱ Durasi:** `{duration}`\n💡 **Status:** `Sedang Memutar Video`\n🎧 **Atas permintaan:** {from_user}" await xnxx.delete() await event.client.send_file( chat_id, thumb, caption=caption, reply_to=event.reply_to_msg_id ) except AlreadyJoinedError: await call_py.leave_group_call(chat_id) clear_queue(chat_id) await xnxx.edit( "**ERROR:** `Karena akun sedang berada di obrolan suara`\n\n• Silahkan Coba Play lagi" ) except Exception as ep: clear_queue(chat_id) await xnxx.edit(f"`{ep}`")
from pytgcalls import idle from pytgcalls import PyTgCalls from pytgcalls import StreamType from pytgcalls.types import Browsers from pytgcalls.types.input_stream import AudioVideoPiped from pytgcalls.types.input_stream.quality import HighQualityAudio from pytgcalls.types.input_stream.quality import HighQualityVideo app = Client( 'py-tgcalls', api_id=123456789, api_hash='abcdef12345', ) call_py = PyTgCalls(app) call_py.start() remote = 'http://docs.evostream.com/sample_content/assets/sintel1m720p.mp4' call_py.join_group_call( -1001234567890, AudioVideoPiped( remote, HighQualityAudio(), HighQualityVideo(), headers={ 'User-Agent': Browsers().chrome_windows, }, ), stream_type=StreamType().pulse_stream, ) idle()
# CHANGE THIS BASED ON WHAT YOU WANT 'best[height<=?720][width<=?1280]', 'https://www.youtube.com/watch?v=msiLgFkXvD8', 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()) app = Client( 'py-tgcalls', api_id=123456789, api_hash='abcdef12345', ) call_py = PyTgCalls(app) call_py.start() remote = get_youtube_stream() call_py.join_group_call( -1001234567890, AudioVideoPiped( remote, HighQualityAudio(), HighQualityVideo(), ), stream_type=StreamType().pulse_stream, ) idle()
from pyrogram import Client from pytgcalls import idle from pytgcalls import PyTgCalls from pytgcalls import StreamType from pytgcalls.types.input_stream import AudioVideoPiped app = Client( 'py-tgcalls', api_id=123456789, api_hash='abcdef12345', ) call_py = PyTgCalls(app) call_py.start() video_file = 'test.mkv' call_py.join_group_call( -1001234567890, AudioVideoPiped(video_file, ), stream_type=StreamType().pulse_stream, ) idle()