# Từ ảnh và nhạc AI đến video quảng bá 15 giây Đây là **bài mẫu cho một quán trà giả lập**, không phải hình ảnh, sản phẩm hay chương trình bán hàng của một quán có thật. Bộ tải về gồm ảnh nguồn, nhạc nền, video dọc thành phẩm, prompt và script dựng lại. Video có chuyển động camera số nhẹ và ba cảnh chữ; **không phải video được sinh khung hình bằng một model text-to-video**. | File | Vai trò | | --- | --- | | `lotus-tea-hero.png` | Ảnh quảng bá 9:16 do công cụ tạo ảnh tạo theo `image_prompt.txt` | | `lotus-tea-music.mp3` | Bản nhạc không lời 20 giây do ACE-Step 1.5 chạy trên GPU local tạo theo `music_request.json` | | `lotus-tea-reel.mp4` | Video 15 giây 720×1280, H.264/AAC, dựng bằng FFmpeg | | `ai_prompt.txt`, `ai_draft.json` | Yêu cầu và bản nháp ba cảnh chữ do API AI Model Mark trả về | | `draft_with_aimodelmark.py` | Script gọi API để tạo lại phần chữ, tùy chọn | | `build_video.py` | Script tạo lớp chữ, ghép ảnh, nhạc và xuất MP4 | ## Thứ tự công cụ đã dùng thật 1. Viết một brief hẹp cho quán trà giả lập: cần một ảnh dọc, nhạc nhẹ không lời, video 15 giây và không khẳng định tác dụng sức khỏe, giá hay địa chỉ. Brief này tránh hứa những thông tin kinh doanh chưa có. 2. Dùng công cụ tạo ảnh với đúng nội dung `image_prompt.txt`. Xem lại bằng mắt: vật thể chính phải rõ, không có chữ/logo lỗi, còn khoảng trống cho lớp chữ. Bản mẫu được lưu ở `lotus-tea-hero.png`. 3. Chạy [ACE-Step 1.5](https://github.com/ace-step/ACE-Step-1.5) trong WSL trên RTX 3060 12 GB để sinh 20 giây nhạc không lời từ `music_request.json`. Nguồn mở của dự án ghi giấy phép MIT; trước khi dùng thương mại, vẫn cần tự kiểm tra bản nhạc đầu ra và quyền đối với mọi tài liệu đầu vào của bạn. Bản WAV được mã hóa lại thành MP3 để tải nhanh. 4. Dùng alias `gpt-5.6-luna` của AI Model Mark qua Chat Completions để nháp ba dòng chữ. Prompt và phản hồi nguyên văn ở `ai_prompt.txt`/`ai_draft.json`. Kiểm tra lại câu chữ; bản nháp này không tự tạo ảnh, nhạc hay video. 5. Chạy `build_video.py` với Pillow và FFmpeg. Script dựng ba lớp chữ ở mốc 0–5, 5–10, 10–15 giây, chuyển động phóng nhẹ, cắt nhạc 15 giây và fade out. Mở MP4 trên điện thoại để xem chữ có đọc được và nghe nhạc có phù hợp không. ## Cách tự dựng lại video từ các file tải về Cài [FFmpeg](https://ffmpeg.org/download.html) để lệnh `ffmpeg` hoạt động trong terminal và cài Pillow cho Python (`python -m pip install Pillow`). Đặt các file của bộ mẫu trong một thư mục rồi chạy: ```bash python build_video.py ``` Script dùng font Lato trên Linux/WSL hoặc Arial trên Windows. Bạn có thể sửa ba dòng `text` trong `ai_draft.json`, nhưng phải giữ các mốc thời gian 0–5, 5–10, 10–15 giây và tối đa bảy từ mỗi dòng. Để nháp lại chữ qua AI Model Mark, đặt API key trong `AI_MODEL_MARK_KEY` hoặc đường dẫn file key **nằm ngoài thư mục tải về** trong `AI_MODEL_MARK_KEY_FILE`, rồi chạy `python draft_with_aimodelmark.py`. Không gửi key vào prompt hoặc ZIP. Nếu muốn tạo **một bản nhạc mới**, cài ACE-Step theo README chính thức của dự án: clone repo, `uv sync`, rồi `uv run acestep-api`. Gửi `music_request.json` đến `POST http://127.0.0.1:8001/release_task`, lấy `task_id`, kiểm tra `POST /query_result` đến khi hoàn thành và tải file qua `GET /v1/audio`. Lần chạy đầu phải tải trọng số model nên chậm hơn những lần sau. Sau đó đổi WAV sang MP3 bằng FFmpeg và dựng lại video. API ACE-Step nên chỉ bind ở `127.0.0.1` khi thử trên máy cá nhân. ## Kiểm chứng và giới hạn File mẫu đã được kiểm tra bằng `ffprobe`: ảnh 941×1672 px; nhạc MP3 dài 20 giây; video dài 15 giây, 720×1280 px, 25 fps, H.264/AAC. Ba khung hình ở giây thứ 2, 7 và 12 đã được xem lại để xác nhận chữ tiếng Việt không cắt xén. Mức âm lượng đỉnh của file video xấp xỉ −1 dBFS; cần nghe lại bằng tai trước khi phát hành chính thức. Quy trình này chứng minh **phối hợp công cụ để làm ra sản phẩm**, không chứng minh API AI Model Mark hiện cung cấp image generation, music generation hoặc video generation. Nếu cần chuyển động hình ảnh mới (nhân vật/vật thể thật sự cử động), cần thử riêng một model image-to-video hoặc dịch vụ video chuyên dụng, rồi kiểm tra tốc độ, chi phí, bản quyền và chất lượng từng cảnh trước khi công bố tính năng.