FFMPEG:プロセスを中断せずに入力を変更する

FFMPEG:プロセスを中断せずに入力を変更する

プロセスを停止せずにLinux Debian 9でffmpegの入力を変更するには?私はDecklinkユーザー入力で、ファイルmp4入力に変更する必要があります。

ffmpeg -f decklink -i 'DeckLink Mini Recorder' -vf setpts=PTS-STARTPTS -pix_fmt uyvy422 -s 1920x1080 -r 25000/1000 -f decklink 'DeckLink Mini Monitor'

答え1

この答えを期待している他の人のために、私は次の解決策を使用しました(pythonとCV2を使用)。

ステップ1:ローカルでリアルタイムでカメラ(または他のffmpeg入力)を実行します。

ffmpeg -i /dev/video0 -b 50k -r 20 -s 720x480 -f mpegts udp://127.0.0.1:2000 

ステップ2:表示したい広告または動画の解像度を入力として選択し、最も重要なのは.3gp動画ファイルとして保存することです。ステップ3:.3gpファイルがあるディレクトリにswitcher.pyファイルを作成します。

import cv2
import sys
def main(argv):
    adName = argv[0]
    cap = cv2.VideoCapture("udp://127.0.0.1:2000")
    showAd = 2
    while cap.isOpened():
        if showAd == 1:
        cap.release()
        del cap
        cap = cv2.VideoCapture(adName)
        showAd = 0
        if showAd == 2:
        cap.release()
        del cap
        cap = cv2.VideoCapture("udp://127.0.0.1:2000")
        showAd = 0

        ret, frame = cap.read()
        try:
            height, width, channels = frame.shape
        except: 
        cap.release()
        del cap
        cap = cv2.VideoCapture("udp://127.0.0.1:2000")
        key = cv2.waitKey(33)
        if key==27:
        showAd = 1
        if key==32:
        showAd = 2

        if(ret):
        sys.stdout.write(frame.tostring())
        cv2.imshow("frame",frame)


    cap.release()

if __name__ == "__main__":
    main(sys.argv[1:])

ステップ5:広告名と出力を使用してswitcher.pyを実行します。

python switcher.py ad.3gp| ffplay -f rawvideo -pixel_format bgr24 -video_size 720x480 -i - 

ステップ6:広告を表示するには、「Esc」をクリックしてください!

画面値を変更することを忘れないでください!

私が他の人を助けてくれて欲しい! (おそらくこの記事にいくつかの修正があるでしょう)

答え2

うーん、質問はよくわかりません…

DeckLinkとffmpegの使用に問題がある場合は、次のサイトが役に立ちます。

https://www.ffmpeg.org/ffmpeg-devices.html#decklink

https://trac.ffmpeg.org/wiki/Capture/Blackmagic

DeckLinkからカメラやその他の録画デバイスに切り替えたい場合は、「スイッチャー」を作成する必要があります(ストリーミング中にストリーミングが停止することがあります)。コーディングの助けが必要な場合は、電子メールを送ってください! (コメントするには評判が足りません)

関連情報