![비디오 입력을 다른 fps와 동기화하는 방법](https://linux55.com/image/179638/%EB%B9%84%EB%94%94%EC%98%A4%20%EC%9E%85%EB%A0%A5%EC%9D%84%20%EB%8B%A4%EB%A5%B8%20fps%EC%99%80%20%EB%8F%99%EA%B8%B0%ED%99%94%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
나는 이것과 비슷한 것을하고 싶다가이드하지만 이 경우 두 입력 모두 동일한 fps를 가지며 두 개의 서로 다른 프레임 속도 입력을 동기화하고 싶습니다. 예는 다음과 같습니다.
ffmpeg \
-f x11grab \
-video_size 1920x1080 \
-framerate 60 \
-i :0.0 \
-f v4l2 \
-video_size 320x240 \
-framerate 15 \
-i /dev/video0 \
-filter_complex '[0:v][1:v]overlay=10:(H-h)/2[o]' \
-map '[o]' \
-r 60 \
-vcodec libx264 \
-an \
-f mpegts \
udp://127.0.0.1:3333
그런 다음 시청하세요.vlc udp://@127.0.0.1:3333
내 경우에는 어색하게 10fps 정도를 주었고 꽤 얼어붙은 것처럼 보였지만 60을 예상했지만 가장 낮았기 때문에 15일 가능성이 더 높았을 것입니다. 누가 알겠어요...
그러나 웹캠 입력을 제거하고 필터링하면 내가 원하는 전체 60fps가 제공되고, 웹캠을 스트리밍하면 15fps가 제공됩니다.
기반으로이 다른 가이드나는 또한 [1:v]fps=fps=60[wc];[0:v][wc]overlay=10:(H-h)/2[o]
성공하지 못한 채 필터를 시도했습니다.
나는 출력 fps가 60이고 프레임이 정지 효과를 피하기 위해 어떤 방식으로든 잘 분산되기를 원합니다. ffmpeg를 사용하여 두 개의 비디오 입력을 서로 다른 fps로 동기화하는 방법은 무엇입니까?
증거:
- 웹캠을 이용한 화면 녹화
- 웹캠 없이 화면 녹화이는 컴퓨터가 실시간으로 전체 화면을 녹화할 수 있음을 의미합니다.
- 통나무- 웹캠 유무에 관계없이 스트리밍
답변1
아직 정확한 이유를 모르지만 다음이 작동합니다.
ffmpeg \
-f x11grab \
-video_size 1920x1080 \
-framerate 60 \
-i :0.0 \
-f v4l2 \
-video_size 320x240 \
-framerate 15 \
-i /dev/video0 \
-filter_complex '[0:v]setpts=RTCTIME-RTCSTART[dt];[1:v]setpts=PTS-STARTPTS[wc];[dt][wc]overlay=10:(H-h)/2[o]' \
-map '[o]' \
-r 60 \
-vcodec libx264 \
-an \
-f mpegts \
udp://127.0.0.1:3333
문서에서 말하는 내용은 RTCTIME
더 이상 사용되지 않으며 대부분의 사람들이 사용하는 내용에도 불구하고 PTS-STARTPTS
스트림이 일련의 숫자가 아닌 시간을 기반으로 하도록 강제하는 것 같습니다.
편집하다:
다음 필터를 사용하는 것도 효과가 있으며, 이것이 더 적절하다고 생각합니다.
[0:v]setpts=N/FRAME_RATE/TB[dt];[1:v]setpts=N/FRAME_RATE/TB,fps=fps=60[wc];[dt][wc]overlay=10:(H-h)/2[o]
고정된 프레임 속도를 보장하고 출력이 예상 프레임 속도와 동일하도록 웹캠을 조정합니다.