Example #1
0
def startAudioCaptureLinux():

    audioPort = getAudioPort()
    websocketRelayHost = getWebsocketRelayHost()
    audioHost = websocketRelayHost['host']
    audioDevNum = robotSettings.audio_device_number
    if robotSettings.audio_device_name is not None:
        audioDevNum = audio_util.getAudioDeviceByName(
            robotSettings.audio_device_name)

    ffmpegLocation = ''
    try:
        subprocess.Popen("ffmpeg")
        print("ffmpeg found at ffmpeg")
        ffmpegLocation = 'ffmpeg'
    except:
        print("ffmpeg not found at ffmpeg")
        try:
            subprocess.Popen("/usr/local/bin/ffmpeg")
            print("ffmpeg found at /usr/local/bin/ffmpeg")
            ffmpegLocation = '/usr/local/bin/ffmpeg'
        except:
            print("ffmpeg not found at /usr/local/bin/ffmpeg")
    audioCommandLine1 = '%s -f alsa -ar 44100 -ac %d -i hw:%d -f mpegts -codec:a mp2 -b:a 32k -muxdelay 0.001 http://%s:%s/%s/640/480/' % (
        ffmpegLocation, robotSettings.mic_channels, audioDevNum, audioHost,
        audioPort, robotSettings.stream_key)
    audioCommandLine2 = 'arecord -D hw:%d -c %d -f S16_LE -r 32000 | %s -i - -ar 32000 -threads 4 -f mpegts -codec:a mp2 -b:a 128k -bufsize 8192k -muxdelay 0.001 http://%s:%s/%s/640/480/' % (
        audioDevNum, robotSettings.mic_channels, ffmpegLocation, audioHost,
        audioPort, robotSettings.stream_key)
    if robotSettings.arecord:
        print(audioCommandLine1)
        return subprocess.Popen(shlex.split(audioCommandLine1))
    else:
        print(audioCommandLine2)
        return subprocess.Popen(audioCommandLine2, shell=True)
def startAudioCaptureLinux():

    audioPort = getAudioPort()
    websocketRelayHost = getWebsocketRelayHost()
    audioHost = websocketRelayHost['host']
    audioDevNum = robotSettings.audio_device_number
    if robotSettings.audio_device_name is not None:
        audioDevNum = audio_util.getAudioDeviceByName(
            robotSettings.audio_device_name)

    audioCommandLine = '/usr/local/bin/ffmpeg -f alsa -ar 44100 -ac %d -i hw:%d -f mpegts -codec:a mp2 -b:a 32k -muxdelay 0.001 http://%s:%s/%s/640/480/' % (
        robotSettings.mic_channels, audioDevNum, audioHost, audioPort,
        robotSettings.stream_key)

    print audioCommandLine
    return subprocess.Popen(shlex.split(audioCommandLine))
Example #3
0
def startAudioCaptureLinux():

    audioEndpoint = getAudioEndpoint()
    audioHost = audioEndpoint['host']
    audioPort = audioEndpoint['port']

    audioDevNum = robotSettings.audio_device_number
    if robotSettings.audio_device_name is not None:
        audioDevNum = audio_util.getAudioDeviceByName(
            robotSettings.audio_device_name)

    #audioCommandLine = '%s -f alsa -ar 44100 -ac %d -i hw:%d -f mpegts -codec:a mp2 -b:a 32k -muxdelay 0.001 http://%s:%s/%s/640/480/' % (robotSettings.ffmpeg_path, robotSettings.mic_channels, audioDevNum, audioHost, audioEndpoint['port'], robotSettings.stream_key)
    audioCommandLine = '%s -f alsa -ar 48000 -ac %d -i hw:%d -f mpegts -codec:a mp2 -b:a 64k -muxdelay 0.01 http://%s:%s/%s/640/480/'\
                        % (robotSettings.ffmpeg_path, robotSettings.mic_channels, audioDevNum, audioHost, audioPort, robotSettings.stream_key)
    print(audioCommandLine)
    #return subprocess.Popen(shlex.split(audioCommandLine))
    return runAndMonitor("audio", shlex.split(audioCommandLine))
Example #4
0
def startAudioCaptureLinux():

    audioPort = getAudioPort()
    websocketRelayHost = getWebsocketRelayHost()
    audioHost = websocketRelayHost['host']
    audioDevNum = robotSettings.audio_device_number
    if robotSettings.audio_device_name is not None:
        audioDevNum = audio_util.getAudioDeviceByName(
            robotSettings.audio_device_name)

    audioCommandLine = '/usr/local/bin/ffmpeg -f alsa -ar 44100 -ac %d -i hw:%d -f mpegts -codec:a mp2 -b:a 32k -muxdelay 0.001 http://%s:%s/%s/640/480/' % (
        robotSettings.mic_channels, audioDevNum, audioHost, audioPort,
        robotSettings.stream_key)

    # Windows command
    #    audioCommandLine = 'c:/ffmpeg/bin/ffmpeg.exe -f dshow -ar 44100 -ac %d -audio_buffer_size 250 -i audio="%s" -f mpegts -codec:a libtwolame -b:a 32k -muxdelay 0.001 http://%s:%s/%s/640/480/' % (robotSettings.mic_channels, 'TOSHIBA Web Camera - HD', audioHost, audioPort, robotSettings.stream_key)

    print(audioCommandLine)
    return subprocess.Popen(shlex.split(audioCommandLine))
Example #5
0
def startAudioCaptureLinux():

    audioEndpoint = getAudioEndpoint()
    audioHost = audioEndpoint['host']
    audioPort = audioEndpoint['port']

    audioDevNum = robotSettings.audio_device_number
    if robotSettings.audio_device_name is not None:
        audioDevNum = audio_util.getAudioDeviceByName(
            robotSettings.audio_device_name)

    #audioCommandLine = '%s -f alsa -ar 44100 -ac %d -i hw:%d -f mpegts -codec:a mp2 -b:a 32k -muxdelay 0.001 http://%s:%s/%s/640/480/' % (robotSettings.ffmpeg_path, robotSettings.mic_channels, audioDevNum, audioHost, audioEndpoint['port'], robotSettings.stream_key)
    audioCommandLine = '%s -f alsa -ar %d -ac %d -i hw:%d -f mpegts -codec:a mp2 -b:a 64k -muxdelay 0.01 http://%s:%s/%s/640/480/'\
                        % (robotSettings.ffmpeg_path, robotSettings.audio_rate, robotSettings.mic_channels, audioDevNum, audioHost, audioPort, robotSettings.stream_key)
    print(audioCommandLine)
    if commandArgs.usb_reset_id != None:
        if len(commandArgs.usb_reset_id) == 8:
            vendor_id = int(commandArgs.usb_reset_id[0:4], 16)
            product_id = int(commandArgs.usb_reset_id[4:], 16)
            dev = finddev(idVendor=vendor_id, idProduct=product_id)
            dev.reset()
    #return subprocess.Popen(shlex.split(audioCommandLine))
    return runAndMonitor("audio", shlex.split(audioCommandLine))
Example #6
0
def startRTCffmpeg(videoEndpoint, SSRCV, audioEndpoint, SSRCA):

    # set brightness
    if (robotSettings.brightness is not None):
        print("brightness")
        os.system("v4l2-ctl -c brightness={brightness}".format(
            brightness=robotSettings.brightness))

    # set contrast
    if (robotSettings.contrast is not None):
        print("contrast")
        os.system("v4l2-ctl -c contrast={contrast}".format(
            contrast=robotSettings.contrast))

    # set saturation
    if (robotSettings.saturation is not None):
        print("saturation")
        os.system("v4l2-ctl -c saturation={saturation}".format(
            saturation=robotSettings.saturation))

    audioDevNum = robotSettings.audio_device_number
    if robotSettings.audio_device_name is not None:
        audioDevNum = audio_util.getAudioDeviceByName(
            robotSettings.audio_device_name)

    if robotSettings.protocol == 'video/VP8':
        #ffmpeg -h encoder=libvpx
        videoParameters =   '-c:v libvpx \
                                {VPXextraParams} \
                                -tune psnr \
                                -deadline realtime \
                                -quality realtime \
                                -cpu-used  16 \
                                -pix_fmt yuv420p \
                                -b:v {kbps}k \
                                -preset ultrafast \
                                -map 0:v:0'\
                                .format(kbps=robotSettings.kbps,
                                        VPXextraParams=robotSettings.VPXextraParams)
    else:
        #ffmpeg -h encoder=libx264
        videoParameters =   '-c:v libx264 \
                                -pix_fmt yuv420p \
                                -vsync 2 \
                                -x264-params "{h264codecParams}" \
                                -b:v {kbps}k -minrate {kbps}k -maxrate {kbps}k -bufsize 2M \
                                -preset {h264preset} \
                                {h264extraParams}\
                                -g 50 \
                                -map 0:v:0'\
                                .format(kbps=robotSettings.kbps,
                                        h264codecParams=robotSettings.h264codecParams,
                                        h264preset=robotSettings.h264preset,
                                        h264extraParams=robotSettings.h264extraParams)


    videoCommandLine = '{ffmpeg_path} \
                        -f v4l2 -video_size {xres}x{yres} -r {framerate} -i /dev/video{video_device_number} {rotation_option}  \
                        -f alsa -i hw:{audio_device_number} \
                        {video} \
                        -c:a libopus \
                            -b:a {kbpsAudio}k \
                            -async 1 \
                            -preset ultrafast \
                            -map 1:a:0 \
                        -f tee "[select=a:f=rtp:ssrc={SSRCA}:payload_type=100]rtp://{audio_host}:{audio_port}|[select=v:f=rtp:ssrc={SSRCV}:payload_type=101]rtp://{video_host}:{video_port}"'\
                        .format(ffmpeg_path=robotSettings.ffmpeg_path,
                                video_device_number=robotSettings.video_device_number,
                                xres=robotSettings.xres,
                                yres=robotSettings.yres,
                                framerate=robotSettings.framerate,
                                audio_device_number=audioDevNum,
                                rotation_option=rotationOption(),
                                video=videoParameters,
                                kbpsAudio=robotSettings.kbps_audio,
                                audio_host=audioEndpoint['localIp'], audio_port=audioEndpoint['localPort'],
                                video_host=videoEndpoint['localIp'], video_port=videoEndpoint['localPort'],
                                SSRCA=SSRCA, SSRCV=SSRCV)

    print(videoCommandLine)
    return runAndMonitor("video", shlex.split(videoCommandLine))