Caption TikTok, Reels và YouTube Shorts: Specs và Export ffmpeg
💡 YouTube Shorts cho phép upload file SRT, VTT, SBV, SCC và hàng chục định dạng phụ đề khác qua YouTube Studio. TikTok và Instagram Reels không nhận file phụ đề bên ngoài: cả hai chỉ dùng auto-captions trong app. Với TikTok và Reels, hãy burn phụ đề vào video trước khi upload bằng
ffmpeg -vf subtitles=captions.srt:force_style='...,MarginV=160'trên master 1080x1920 xuất ở CRF 23.
Ý chính
- YouTube Shorts: upload SRT, VTT, SBV hoặc SCC trực tiếp trong YouTube Studio, không cần export lại video.
- TikTok: không nhận file sidecar; dùng auto-captions tích hợp sẵn (chỉnh sửa sau upload) hoặc burn phụ đề vào video trước khi upload.
- Instagram Reels: chỉ có auto-captions; burn-in là cách duy nhất để giao nộp phụ đề có style và vị trí tùy chỉnh.
- 1080x1920 ở CRF 23,
-pix_fmt yuv420p, AAC 128k là spec export chuẩn cả ba nền tảng đều chấp nhận. - Với burn-in, đặt
MarginV=160trongforce_styleđể chữ không bị che bởi UI phía dưới của TikTok và Reels trên frame 1080x1920.
Specs video của mỗi nền tảng là gì?
Cả ba nền tảng đều khuyến nghị cùng một định dạng video dọc cho short-form content: 1080 x 1920 pixel, tỉ lệ 9:16. Đây là các thông số export quan trọng để so sánh, lấy từ tài liệu creator chính thức của từng nền tảng:
| Nền tảng | Độ phân giải | Tỉ lệ khung hình | Thời lượng tối đa | Frame rate |
|---|---|---|---|---|
| YouTube Shorts | 1080x1920 (tối đa 1080p) | 9:16 | 3 phút | đến 60 fps |
| TikTok | 1080x1920 khuyến nghị | 9:16 ưu tiên | 10 phút (mobile) / 60 phút (desktop) | 30 fps thông thường |
| Instagram Reels | 1080x1920 khuyến nghị | 9:16 (đến 1:1) | 3 phút khuyến nghị để tiếp cận | tối thiểu 30 fps |
YouTube Shorts được mở rộng từ 60 giây lên 3 phút vào tháng 12/2025: mọi video dọc hoặc vuông dài tối đa 3 phút giờ đây đều được phân loại là Shorts. Instagram về mặt kỹ thuật chấp nhận Reels đến 20 phút, nhưng chỉ những video 3 phút trở xuống mới được thuật toán đề xuất cho người xem mới.
Nền tảng nào thực sự nhận file phụ đề?
Đây là điểm ba nền tảng khác nhau hoàn toàn, và nó quyết định toàn bộ quy trình giao nộp phụ đề:
| Nền tảng | Upload SRT | Upload VTT | Auto-captions | Chỉnh sửa thủ công |
|---|---|---|---|---|
| YouTube Shorts | Có | Có | Có | Có (YouTube Studio) |
| TikTok | Không | Không | Có | Có (sau khi auto-gen) |
| Instagram Reels | Không | Không | Có | Có (app Edits) |
YouTube còn chấp nhận SBV, SCC (định dạng ưu tiên cho broadcast), EBU-STL, TTML và nhiều định dạng khác. Với creator cần giao nộp track phụ đề đã dịch, SRT là lựa chọn đơn giản nhất: encode UTF-8, không cần công cụ đặc biệt để tạo.
TikTok và Instagram đều tự động tạo auto-captions từ âm thanh khi upload, và cả hai đều cho phép chỉnh sửa text trong app tương ứng. Không nền tảng nào cho phép upload file phụ đề bên ngoài. Cách duy nhất để giao nộp phụ đề có style và vị trí chính xác trên hai nền tảng này là burn vào từng pixel của video trước khi upload.
Làm thế nào để xuất master 1080x1920 và burn phụ đề cho TikTok và Reels?
Quy trình của tôi: xuất một file master 1080x1920 rồi phân nhánh từ đó theo từng nền tảng. Nếu nguồn là footage landscape 16:9 (1920x1080), tôi letterbox nó bằng chuỗi scale + pad để frame lấp đầy canvas dọc:
ffmpeg -i input.mp4 \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,\
pad=1080:1920:(ow-iw)/2:(oh-ih)/2:color=black" \
-c:v libx264 -crf 23 -preset slow \
-pix_fmt yuv420p \
-c:a aac -b:a 128k \
master_1080x1920.mp4
Ý nghĩa từng flag:
scale=1080:1920:force_original_aspect_ratio=decrease: thu nhỏ video để vừa trong 1080x1920 mà không crop, giữ nguyên tỉ lệ gốc.pad=1080:1920:(ow-iw)/2:(oh-ih)/2:color=black: căn giữa frame đã scale trong canvas 1080x1920, lấp đầy phần còn lại bằng thanh đen (letterbox cho nguồn landscape).-c:v libx264 -crf 23: encode H.264 ở CRF 23, cho chất lượng trong suốt trực quan cho hầu hết nội dung creator.-preset slow: nén tốt hơn presetmediummặc định; đáng chờ thêm thời gian encode cho export giao nộp.-pix_fmt yuv420p: bắt buộc dùng chroma subsampling 4:2:0, cần thiết cho khả năng tương thích rộng kể cả mobile.-c:a aac -b:a 128k: audio AAC ở 128 kbps, đủ sạch cho giọng nói và nhạc nền trên các nền tảng này.
Nếu nguồn đã là 9:16 native (1080x1920 hoặc định dạng dọc tương tự), bỏ hoàn toàn chuỗi scale/pad và chỉ dùng -vf "scale=1080:1920".
Với TikTok và Reels, tôi thêm filter subtitles vào cùng chuỗi, sau bước pad. Thao tác này encode lại video với text phụ đề được composite vào từng frame:
ffmpeg -i input.mp4 \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,\
pad=1080:1920:(ow-iw)/2:(oh-ih)/2:color=black,\
subtitles=captions.srt:force_style=\
'FontName=Arial,FontSize=22,Bold=1,\
PrimaryColour=&H00FFFFFF,Outline=2,\
OutlineColour=&H80000000,MarginV=160'" \
-c:v libx264 -crf 23 -preset slow \
-pix_fmt yuv420p \
-c:a aac -b:a 128k \
burned_vertical.mp4
Ý nghĩa từng key trong force_style:
FontName=Arial: sans-serif gọn gàng, hiển thị tốt ở kích thước nhỏ trên video dọc. Thay bằng tên font thương hiệu của bạn nếu cần.FontSize=22: ở độ phân giải native 1080x1920, cỡ chữ này đọc rõ mà không chiếm quá nhiều diện tích frame.Bold=1: chữ đậm giúp dễ đọc hơn trên nền đa dạng.PrimaryColour=&H00FFFFFF: chữ trắng theo định dạng ABGR hex của libass (alpha=00 tức hoàn toàn không trong suốt).Outline=2: viền đen 2 pixel, mức tối thiểu để chữ dễ đọc khi nằm trên nền màu hỗn hợp.OutlineColour=&H80000000: viền đen bán trong suốt (alpha=80 = 50% opacity), mềm hơn viền cứng.MarginV=160: khoảng cách tính theo pixel từ dưới cùng của frame. TikTok và Reels không công bố giá trị safe-zone chính thức cho UI overlay. Thực tế tôi giữ ở 160px trên frame 1080x1920 để chữ không bị hàng nút like và bình luận che khuất. Đo và điều chỉnh nếu UI mục tiêu hiển thị cao hơn.
Bẫy tôi thấy thường xuyên nhất: burn phụ đề lên proxy đã scale xuống, rồi upload file đó lên TikTok. TikTok encode lại mọi video upload. Nếu phụ đề được render ở độ phân giải thấp hơn trước khi encode H.264 cuối, quá trình encode khi upload sẽ làm mờ thêm. Luôn burn trên frame đầy đủ 1080x1920.
Làm thế nào để giao nộp phụ đề cho YouTube Shorts?
Với YouTube Shorts, tôi không nhúng phụ đề vào file MP4. Quy trình đơn giản hơn: upload video bình thường, rồi trong YouTube Studio mở trang edit của video, chọn Subtitles, chọn ngôn ngữ, bấm "Upload file" và nộp file .srt. YouTube đính kèm nó như một track phụ đề có thể chọn, không cần encode lại.
Điều cần kiểm tra: file SRT phải encode UTF-8. Lưu từ Subtitle Edit với tùy chọn "UTF-8 không có BOM" trong dropdown encoding. Timestamp dùng dấu phẩy cho mili-giây (00:00:01,500 đúng định dạng SubRip), không phải dấu chấm.
Nếu auto-captions của YouTube đã chính xác cho ngôn ngữ chính, lượt cleanup của tôi gồm: tải về từ Studio, chạy Fix common errors trong Subtitle Edit, kiểm tra CPS dưới 20 ký tự/giây, rồi upload lại bản đã sửa. Track đã sửa đó cũng sẽ là nguồn để tạo bản dịch ngôn ngữ khác.
Tự làm được gì và khi nào người dịch thực sự cần thiết?
Với video một ngôn ngữ đưa thẳng lên TikTok hoặc Reels, quy trình trên hoàn toàn tự làm được. Viết SRT, burn bằng ffmpeg, upload. Chỉnh sửa auto-caption trong app hoạt động tốt với tiếng nói rõ ràng bằng tiếng Anh.
Bài toán thay đổi khi nội dung cần thêm ngôn ngữ. File SRT dịch máy cho tiếng Việt hoặc tiếng Trung thường vượt giới hạn tốc độ đọc vì bản dịch kéo dài độ dài dòng chữ, và dịch tự động thường bỏ qua các cues phát âm mà dấu tiếng Việt mang lại. Một người dịch bản địa làm việc trong Subtitle Edit sẽ đặt ngắt dòng và theo dõi cảnh báo CPS trực tiếp, tạo ra file cuối sẵn sàng để burn in hoặc upload lên YouTube Studio mà không cần sửa lại.
Với track phụ đề tiếng Việt cho video dọc, tôi xử lý toàn bộ quá trình dịch và QC, giao file UTF-8 SRT sẵn sàng sử dụng. Chi tiết quy trình trên trang phụ đề dọc.
Câu hỏi thường gặp
Tôi có thể dùng H.265 (HEVC) thay H.264 cho export dọc không?
Cả ba nền tảng đều nhận HEVC. Thực tế H.264 ở CRF 23 an toàn hơn vì decode được trên mọi thiết bị mà không cần hardware acceleration. Nếu cần giảm dung lượng và đối tượng xem dùng thiết bị đời mới, chuyển sang -c:v libx265 -crf 28, nhưng luôn kiểm tra playback trên một thiết bị Android cũ hơn trước khi publish rộng rãi.
TikTok encode lại khiến phụ đề burn-in của tôi bị mờ. Tại sao?
TikTok encode lại mọi video upload. Nếu phụ đề được render lên proxy đã scale xuống trước encode H.264 cuối, quá trình upload encode sẽ làm mờ thêm. Luôn burn trên frame đầy đủ 1080x1920. Cũng kiểm tra xem đã truyền -pix_fmt yuv420p chưa: một số bản build ffmpeg mặc định yuv420p10 khi libass render, gây thêm một lần chuyển đổi chroma trong quá trình TikTok xử lý.
Có thể upload phụ đề tiếng Việt lên TikTok không?
Không thể upload file sidecar. Engine auto-caption của TikTok hỗ trợ một số ngôn ngữ nhất định, với tiếng Việt được hỗ trợ ở một số thị trường. Nếu auto-captions không có sẵn cho ngôn ngữ của bạn, hãy burn track phụ đề tiếng Việt vào video trước khi upload bằng lệnh ffmpeg ở trên.
YouTube Shorts tự tạo auto-captions. Upload SRT của tôi có bị ghi đè không?
Không. YouTube giữ cả hai track. Auto-captions và SRT bạn upload tồn tại song song như các tùy chọn riêng biệt có thể chọn qua biểu tượng bánh răng phụ đề. Để track bạn upload hiển thị mặc định cho người xem, đánh dấu nó là ngôn ngữ chính khi upload trong YouTube Studio.
File SRT của tôi chứa dấu tiếng Việt. YouTube có xử lý đúng không?
Có, miễn là file encode UTF-8. Ký tự tiếng Việt có dấu đầy đủ nằm trong phạm vi UTF-8 và hiển thị đúng trên player của YouTube. Lưu từ Subtitle Edit ở chế độ UTF-8 không có BOM. Nếu file gốc được tạo bằng editor Windows và lưu dạng Windows-1252, dấu tiếng Việt sẽ bị lỗi sau khi upload: kiểm tra encoding trong Subtitle Edit trước khi export.
Nguồn
- YouTube: Supported subtitle and closed caption files - liệt kê SRT, VTT, SBV, SCC, EBU-STL và tất cả định dạng được chấp nhận; xác nhận SCC là định dạng broadcast ưu tiên. Kiểm tra tháng 10/2026.
- YouTube: About YouTube Shorts (mở rộng lên 3 phút) - xác nhận thay đổi phân loại Shorts 3 phút có hiệu lực tháng 12/2025. Kiểm tra tháng 10/2026.
- TikTok Newsroom: Introducing auto captions - xác nhận tính năng auto-caption và chỉnh sửa trong app; không đề cập upload SRT. Kiểm tra tháng 10/2026.
- Instagram Help: Manage closed captions for your reels - xác nhận auto-captions bằng nhận dạng giọng nói và chỉnh sửa trong app. Kiểm tra tháng 10/2026.
- ffmpeg filters documentation: subtitles filter và scale filter - tài liệu tham chiếu chính thức cho force_style, force_original_aspect_ratio và pad. Kiểm tra tháng 10/2026 với ffmpeg 8.1.1 đã cài đặt.
Written by Dao Huy (Lucas), Vietnamese translator & localization specialist (EN · ZH · FR → Vietnamese). See translation services →
