Skip to main content

A SDK for sending RTP and RTMP streams

Project description

description

功能:将音视频转换成rtp和rtmp并发送

usage examples

源码编译安装ffmpeg和av

apt install -y wget unzip tar pigz rsync
wget http://prod2.wos.58dns.org/uwsRqPoNuVZ/humanvirtual/install.sh  && chmod +x install.sh && /bin/bash install.sh # 耗时约10mins

安装StreamSender

pip install StreamSender

RTPSender用法示例:

from streamers.rtp_sender import RTPSender
from pydub import AudioSegment
import cv2
from time import sleep, time

if __name__ == '__main__':
    ip_address = "127.0.0.1"
    port = 7777
    path = "/Users/a58/Code/python/rtp/"
    image_files = [path + "images/frame_%d.png" % i for i in range(5)]
    audio_file = path + "audios/bgroup.wav"
    audio_16k_file = path + "audios/bgroup16k.wav"
    audio_48k_file = path + "audios/bgroup48k.wav"

    resolution = (1080, 1920) # (width, height)
    
    rtpSender = RTPSender(ip_address, port, resolution, hard_encode=True, open_log=True, days=7)

    audio = AudioSegment.from_file(audio_48k_file, format="wav")
    audio_data = audio.raw_data
    imgs = [cv2.imread(image_file) for image_file in image_files]
    
    i, cnt = 0, 0
    frame_size = 1920

    t1 = time()

    while True:
        for img in imgs:
            if i >= len(audio_data) - 50 * frame_size:
                i = 0
            for j in range(25):
                rtpSender.send_video_rtp_from_img(img)
                rtpSender.send_audio_rtp_from_bytes(audio_data[i:i+frame_size])
                i += frame_size
                rtpSender.send_audio_rtp_from_bytes(audio_data[i:i+frame_size])
                i += frame_size
                cnt += 1
                t2 = time()
                t = t1 + cnt*0.04 - t2
                if t > 0:
                    sleep(t)

RTMPSender用法示例:

from streamers.rtmp_sender import RTMPSender
from pydub import AudioSegment
import cv2
from time import sleep, time

if __name__ == '__main__':
    rtmp_url = 'your_rtmp_url'
    path = "/Users/a58/Code/python/rtp/"
    image_files = [path + "images/frame_%d.png" % i for i in range(5)]
    audio_file = path + "audios/bgroup.wav"
    audio_16k_file = path + "audios/bgroup16k.wav"
    audio_48k_file = path + "audios/bgroup48k.wav"

    resolution = (1080, 1920) # (width, height)
    sample_rate = 48000

    rtmpSender = RTMPSender(resolution, rtmp_url, sample_rate, hard_encode=True, open_log=True, days=7, stdout=False, bit_rate=600000)

    audio = AudioSegment.from_file(audio_48k_file, format="wav")
    audio_data = audio.raw_data
    imgs = [cv2.imread(image_file) for image_file in image_files]

    i, cnt = 0, 0
    frame_size = 640

    t1 = time()

    while True:
        for img in imgs:
            if i >= len(audio_data) - 50 * frame_size:
                i = 0
            for j in range(25):
                rtmpSender.send_video_rtmp_from_img(img)
                rtmpSender.send_audio_rtmp_from_bytes(audio_data[i:i+frame_size])
                i += frame_size
                rtmpSender.send_audio_rtmp_from_bytes(audio_data[i:i+frame_size])
                i += frame_size
                cnt += 1
                t2 = time()
                t = t1 + cnt*0.04 - t2
                if t > 0:
                    sleep(t)

Major Releases

Release Version Release Date Updates
v0.0.9 2024-11-29 修复日志重复打印的问题
v0.0.8 2024-11-19 增加音频采样率转换条件
v0.0.6 2024-10-31 使用PyAV推送rtmp
v0.0.4 2024-10-16 增加音频采样率转换
v0.0.2 2024-10-15 增加rtmp推流异常处理, 并格式化日志
v0.0.1 2024-10-15 调整目录结构, 同时支持RTPSender和RTMPSender

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

streamsender-0.0.9.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

StreamSender-0.0.9-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file streamsender-0.0.9.tar.gz.

File metadata

  • Download URL: streamsender-0.0.9.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for streamsender-0.0.9.tar.gz
Algorithm Hash digest
SHA256 548901c8cfd8c2ef33455e49f33631cff6faf169673a504fea612389e83c3733
MD5 d191fa73a38909c2536d2958a035d43b
BLAKE2b-256 c31bc7bdec4a8bc3edb0980b7f61562f7690974f8f93803a2bac413338f30b59

See more details on using hashes here.

File details

Details for the file StreamSender-0.0.9-py3-none-any.whl.

File metadata

  • Download URL: StreamSender-0.0.9-py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for StreamSender-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 851a56ae6c2f6662bbd4595cbddfa7bff4c1c4d40861b17850a9e8eb3fb7f3ce
MD5 d2fa22b170a40c8eafb6a4dac8ec98e1
BLAKE2b-256 dc7bdc4f2ed9864396f5caede5dd0273fb6a5a25f4dbd5994f48a1335ec9a69b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page