Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.6k views
in Technique[技术] by (71.8m points)

ant media server - How can I save VoD recordings without stopping streaming?

How can I stop recording intervally without stopping the stream to save the VoD in Ant Media Server in my stream sources and IP cameras?

question from:https://stackoverflow.com/questions/65918569/how-can-i-save-vod-recordings-without-stopping-streaming

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can achieve that with a python script. Assuming you have installed python3 and pip. Following script stops and starts the recording again in user-defined intervals:

import sys
import sched, time
try:
    import requests
    print("requests library already installed!")
except ImportError:
    try:
        import pip
        print("requests library is being installed")
        pip.main(['install', '--user', 'requests'])
        import requests
    except ImportError:
        print("pip is not installed, so it needs to be installed first to proceed further.
You can install pip with the following command:
sudo apt install python3-pip")
slp=sched.scheduler(time.time,time.sleep)
def startStopRecording(s):
    print("Stopping the recording of "+sys.argv[2])
    response=requests.put(sys.argv[1]+"/rest/v2/broadcasts/"+sys.argv[2]+"/recording/false")
    if response.json()["success"]:
        print("recording of "+sys.argv[2]+" stopped successfully")
        print(response.content)
        print("starting the recording of "+sys.argv[2])
        response=requests.put(sys.argv[1]+"/rest/v2/broadcasts/"+sys.argv[2]+"/recording/true")
        print(response.content)
        if response.json()["success"]:
            print("recording of "+sys.argv[2]+" started successfully")
            s.enter(int(sys.argv[3]),1,startStopRecording,(s,))
        else:
            print("Couldn't start the recording of "+sys.argv[2])
            print("content of the response:
"+response.content)
            sys.exit()

    else:
        print("Couldn't stop the recording of "+sys.argv[2])
        print("content of the response:")
        print(response.content)
        sys.exit()
    
slp.enter(int(sys.argv[3]),1,startStopRecording,(slp,))
slp.run()

Example usage would be like: python3 file.py https://domain/{Application} streamId interval

First parameter is the domain you are going to use like: https://someexample.com:5443/WebRTCAppEE

Second parameter is the stream id you want to use. Ex. stream123.

Third parameter is the duration of the interval you want to restart the recording. Duration unit is seconds. So 60 would be equal to 1 minute.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...