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