시청자가 채팅창에 한 줄을 칩니다. 몇 초 뒤, 화면에 뜬 장면이 그 말대로 흘러갑니다. 미리 찍어둔 영상을 순서대로 트는 게 아니라, 방금 올라온 문장이 다음 클립 줄거리가 된 겁니다.
fal이 이 구조를 통째로 오픈소스로 풀었습니다. 무한히 돌아가는 AI 방송을 만드는 코드입니다. 공개 글에는 북마크만 810건이 붙었어요.
여기서 새로운 건 화질도 연출도 아닙니다. 속도가 선을 하나 넘었다는 사실입니다.
방송이 왜 끊기지 않을까요?
산수 하나면 설명이 끝납니다.
fal이 미니맥스 H3 Max를 가져다 추가 학습과 추론 최적화를 다시 걸었습니다. 이 가속판은 5초짜리 영상을 3초 안에 뽑아냅니다. 15초짜리는 9초쯤 걸려요. 공식판보다 처리량이 열 배입니다.
숫자를 나란히 놓아 봅니다. 화면에서 5초짜리 클립이 재생되는 동안, 다음 5초짜리 클립을 만드는 데 3초가 듭니다. 한 회차 돌 때마다 2초씩 여유가 남아요. 이 여유가 쌓이는 한 재생 대기열은 절대 비지 않습니다.
방송이 끊기는 사고는 대개 다음 소스가 늦게 도착해서 생깁니다. 생성이 재생보다 빠르면 그 사고가 구조적으로 사라져요. 그래서 이 방송에는 끝이 없습니다. 사람이 끄기 전까지 계속 돕니다.
한 자릿수 배수 차이가 여기서 성질을 바꿉니다. 열 배 느린 모델로 같은 코드를 돌리면 5초 클립을 만드는 데 30초가 걸려요. 그러면 화면은 25초씩 멈춰 섭니다. 같은 파이프라인인데 하나는 방송이고 하나는 로딩 화면입니다.
두 숫자를 나눠 보면 같은 비율이 나옵니다. 5초를 3초에, 15초를 9초에. 둘 다 실제 재생 시간보다 1.6배 넘게 빠릅니다. 클립을 길게 잡아도 여유 폭 비율은 그대로 유지된다는 뜻이에요.
운영자가 돌릴 손잡이도 여기서 하나 생깁니다. 클립을 짧게 끊으면 채팅이 화면에 반영되는 시간이 빨라져요. 대신 쌓이는 여유도 같이 줄어서, 서버가 잠깐 밀리면 바로 티가 납니다. 길게 끊으면 여유는 커지는데 시청자가 친 말이 화면에 뜰 때까지 더 기다려야 합니다. 5초 클립이면 다음 장면까지 최대 5초, 15초 클립이면 최대 15초예요. 반응 속도와 안정성을 맞바꾸는 자리입니다.
이 방송은 어떻게 돌아갈까요?
실시간으로 프레임을 그려내는 물건이 아닙니다. 모듈 다섯 개를 루프로 돌립니다.
첫째, 트위치 채팅을 받습니다. 중국어권에서 탄막이라 부르는 그 흐르는 글자들이 입력입니다.
둘째, LLM이 그 말을 읽고 다음 장면 프롬프트로 고쳐 씁니다. 시청자가 쓴 문장을 영상 모델이 알아듣는 지시문으로 옮기는 자리예요.
셋째, fal 위에 올라간 영상 모델이 몇 초짜리 클립을 새로 뽑습니다.
넷째, FFmpeg이 나온 클립을 앞 영상에 이어붙이고 RTMP로 트위치에 쏩니다.
다섯째가 이 설계에서 제일 중요한 대목입니다. 지금 클립을 트는 동안 다음 클립을 미리 만들어 둡니다. 재생과 생성을 겹쳐 돌리는 겁니다.
부품만 보면 전부 흔합니다. 채팅 API, LLM 호출, 영상 모델, FFmpeg, RTMP 송출. 새 기술은 하나도 없어요. 순서를 이렇게 겹쳐 놓고 앞단 속도를 밀어 올린 게 전부입니다. 그래서 이 레포는 논문이 아니라 배관 도면에 가깝습니다.
왜 이 순서가 처음일까요?
지금까지 AI 영상은 만들어 두고 나중에 올리는 물건이었습니다. 프롬프트를 넣고, 결과를 받고, 마음에 들면 편집해서 게시합니다. 만드는 시점과 보는 시점이 떨어져 있었어요.
이 방송은 그 간격을 없앴습니다. AI 생성 콘텐츠가 선제작 후 발행이라는 틀에서 나와 실시간 방송 스트림 안으로 직접 들어간 겁니다.
시청자 자리도 같이 바뀝니다. 기존 방송에서 채팅은 반응이었어요. 이미 정해진 화면을 놓고 떠드는 자리입니다. 여기서는 채팅이 입력입니다. 한마디 칠 때마다 다음 장면 줄거리가 바뀔 수 있어요.
콘텐츠를 보는 사람과 만드는 사람이 같은 순간에 겹치는 구조입니다. 저는 이게 이번 공개에서 제일 큰 대목이라고 봅니다. 속도는 언젠가 누구나 따라잡지만, 시청자를 생산 라인 안에 집어넣은 배치는 따라 한다고 되는 물건이 아니거든요.
실제 사례도 이미 나왔습니다. @rehan_shei는 이 가속판을 방송에 직결해 멈추지 않는 방송국을 세웠어요. 데모가 아니라 계속 켜져 있는 채널입니다.
그럼 아직 뭐가 안 될까요?
정직하게 짚을 대목이 있습니다.
이건 프레임 단위 실시간 생성이 아닙니다. 몇 초짜리 클립을 계속 이어붙이는 방식이에요. 클립과 클립 사이에서 인물이 달라지거나 배경이 튈 여지가 그대로 남습니다. 게임 화면처럼 매끈하게 흐르는 그림을 기대하면 실망합니다.
연출 통제도 미지수입니다. 시청자 채팅이 프롬프트로 들어간다는 말은, 방송 줄거리를 아무나 흔들 수 있다는 말이기도 해요. 재미로 보면 즉흥극이고, 운영자로 보면 사고 위험입니다.
화질도 마찬가지입니다. 속도를 위해 최적화한 모델이 얼마나 버텨주는지는 아직 아무도 길게 검증하지 않았어요. 몇 시간 돌린 채널과 몇 주 돌린 채널은 다른 문제를 만듭니다.
비용 얘기도 빠져 있습니다. 끊기지 않는다는 말은 영상 모델을 24시간 쉬지 않고 호출한다는 말이에요. 시청자가 한 명이든 천 명이든 GPU는 똑같이 돕니다. 무한 방송이라는 이름값을 실제로 치르는 쪽은 결국 고지서입니다.
저는 이 공개를 어떻게 읽을까요?
저는 이 물건이 방송보다 게임에 가깝다고 읽습니다.
방송은 만든 사람이 보여주고 보는 사람이 받는 구조입니다. 게임은 플레이어가 입력하고 화면이 반응하는 구조예요. 채팅 한 줄이 다음 장면을 바꾸는 순간, 이 채널은 후자로 넘어갑니다. 시청 시간이 아니라 참여 횟수로 성적을 재는 물건이 된 겁니다.
코드는 통째로 오픈소스입니다. 레포가 깃허브에 그대로 올라와 있어요. 회사 데모로 끝나지 않고, GPU 값만 감당할 수 있으면 누구나 자기 채널을 세울 수 있습니다. 기술 장벽이 사라진 자리에는 대신 다른 문제가 옵니다. 무엇을 틀 것인가, 채팅을 어디까지 받아줄 것인가. 이제부터는 코드가 아니라 편성 판단이 채널을 가릅니다.
생성 속도가 재생 속도를 넘어선 날짜가 언제인지는 나중에 아무도 기억하지 않을 겁니다. 다만 그날 이후 콘텐츠가 완성된 상태로 도착하지 않게 됐다는 사실은 남습니다.
원문·소스
- 생성이 재생을 추월했다 (@HoodyLiu): https://x.com/HoodyLiu/status/2093967959723065743
- fal 무한 AI 방송 오픈소스 해설 (@HoodyLiu): https://x.com/HoodyLiu/status/2093912275203854440
- infinite-tv 레포: https://github.com/alex-remade/infinte-tv
FAQ
자주 묻는 질문
- 방송이 왜 끊기지 않을까요?
- 5초짜리 영상을 3초 안에 뽑아내, 한 회차마다 2초씩 여유가 남습니다. 이 여유가 쌓이는 한 재생 대기열은 비지 않아요. 생성이 재생보다 빠르면 다음 소스가 늦게 도착하는 사고가 구조적으로 사라집니다.
- 이 방송은 어떻게 돌아갈까요?
- 트위치 채팅을 받고, LLM이 장면 프롬프트로 고쳐 쓰고, 영상 모델이 클립을 뽑고, FFmpeg이 RTMP로 송출하는 다섯 단계 루프입니다. 지금 클립을 트는 동안 다음 클립을 미리 만들어, 재생과 생성을 겹쳐 돌립니다. 부품은 전부 흔하지만 순서를 겹쳐 놓고 앞단 속도를 밀어 올린 게 핵심이에요.
- 왜 이 순서가 처음일까요?
- 지금까지 AI 영상은 만들어 두고 나중에 올리는 물건이었습니다. 이 방송은 만드는 시점과 보는 시점 사이 간격을 없앴어요. 채팅이 입력이 되면서 시청자가 생산 라인 안에 들어간 구조입니다.
- 그럼 아직 뭐가 안 될까요?
- 클립과 클립 사이에서 인물이 달라지거나 배경이 튈 여지가 남아 있습니다. 시청자 채팅이 프롬프트로 들어가므로 연출 통제가 어렵고, 24시간 영상 모델을 호출하는 비용도 빠져 있어요. 속도를 위해 최적화한 모델의 화질이 장시간 버텨주는지도 아직 검증되지 않았습니다.