프로세스를 중지하지 않고 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에서 카메라나 기타 녹화 장치로 전환하려는 경우에는 "스위처"를 작성해야 합니다(스트리밍하는 경우 스트리밍이 중지될 수도 있음). 코딩에 도움이 필요하시면 이메일을 보내주세요! (댓글을 달기에는 평판이 충분하지 않습니다)