Xóa bài viết
Bạn có chắc chắn muốn xóa bài viết này không ?
Xóa bình luận
Bạn có chắc chắn muốn xóa bình luận này không ?
FFMPEG HLS STREAM MULTIPLE AUDIO/SUBTITLES
File source : check.mp4 (gồm luồng audio và subtitle)
ffprobe check.mp4
Stream #0:0(und): Video: hevc (Main 10) (hev1 / 0x31766568), yuv420p10le(tv, progressive), 640x360 [SAR 1:1 DAR 16:9], 998 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 23.98 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 7.1, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
Stream #0:2(und): Subtitle: mov_text (tx3g / 0x67337874), 640x360, 0 kb/s (default)
Metadata:
handler_name : SubtitleHandler
Stream #0:3(eng): Subtitle: mov_text (tx3g / 0x67337874), 640x360, 0 kb/s
Metadata:
handler_name : SubtitleHandler
Stream #0:4(eng): Data: bin_data (text / 0x74786574)
1. SUBTITLE
Tách file sub :
ffmpeg -i check.mp4 -map 0:2 -f webvtt sub.vtt
or
ffmpeg -i check.mp4 -map 0:s:0 -f webvtt sub.vtt
HLS SUBTITLE :
ffmpeg -i sub.vtt -f segment -segment_time 10 -segment_list_size 0 -segment_list subtitle/sub.m3u8 -segment_format webvtt -scodec copy subtitle/sub-%d.vtt
2. AUDIO
HLS audio :
ffmpeg -i check.mp4 -threads 0 -muxdelay 0 -y -map 0:1 -codec copy -f segment -segment_time 10 -segment_list_size 0 -segment_list audio/audio.m3u8 -segment_format mpegts audio/audio_%d.aac
3. VIDEO
Converse clip H265 > H264 :
ffmpeg -i check.mp4 -threads 0 -muxdelay 0 -y -pix_fmt yuv420p -movflags +faststart -r 29.97 -g 60 -refs 1 -vcodec libx264 -profile:v baseline -scodec copy -f mpegts check.ts
HLS video :
ffmpeg -i check.ts -threads 0 -muxdelay 0 -y -map 0:v -vcodec copy -f hls -hls_time 10 -hls_list_size 0 video/index.m3u8
4. File M3U8
index.m3u8 :
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Vietnamese",FORCED=NO,AUTOSELECT=YES,URI="subtitle/sub.m3u8",LANGUAGE="vi"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",LANGUAGE="en",NAME="English",DEFAULT=YES,AUTOSELECT=YES,URI="audio/audio.m3u8",
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=520929,CODECS="avc1.4d4015,mp4a.40.2",RESOLUTION=640x360,AUDIO="aac",SUBTITLES="subs"
video/index.m3u8
Ghi chú / Note
Bạn có thể gộp chung tất cả command trên lại thành 1 dòng :
ffmpeg -i check.mp4 -map 0:s:0 -f webvtt - | ffmpeg -i - -f segment -segment_time 10 -segment_list_size 0 -segment_list subtitle/sub.m3u8 -segment_format webvtt -scodec copy subtitle/sub-%d.vtt | ffmpeg -i check.mp4 -threads 0 -muxdelay 0 -y -map 0:a:0 -codec copy -f segment -segment_time 10 -segment_list_size 0 -segment_list audio/audio.m3u8 -segment_format mpegts audio/audio_%d.aac | ffmpeg -i check.mp4 -threads 0 -muxdelay 0 -y -pix_fmt yuv420p -movflags +faststart -r 29.97 -g 60 -refs 1 -vcodec libx264 -profile:v baseline -scodec copy -f mpegts - | ffmpeg -i - -threads 0 -muxdelay 0 -y -map 0:v -vcodec copy -f hls -hls_time 10 -hls_list_size 0 video/index.m3u8
DOWNLOAD LAB TEST
Full file : https://drive.google.com/file/d/1rU6yhN_DSpILi1i8OalTl4VtJt5WlzSN/view
Clip test (check.mp4) : http://www.mediafire.com/file/3johtl8ffd3uolx/check.mp4
Bình luận

{{ comment.user.name }}
Bỏ hay
Hay

Cùng một tác giả

18
10
FFmpeg là một tool dạng dòng lệnh được sử dụng để chuyển đổi các tập tin đa phương tiện giữa các định dạng khác nhau. Bài viết này trình bày cách s...

5
8
1. Vài câu lệnh encode với FFMPEG Thường câu lệnh FFMPEG có định dạng : ffmpeg i i: input file Chuyển đổi MPEG sang 3GP ffmpeg i movie1.mpeg a...

1
0
MPEGDASH Media Presentation Description (MPD) là dạng XML document chứa thông tin về các phân đoạn media, các mối quan hệ và thông tin cần thiết để...
Bài viết liên quan

28
6
Xin chào mọi người :D Trong bài viết này mình sẽ trình bày một cách cơ bản để ứng dụng kỹ thuật Http Live Streaming (HLS) để play video trên web, ...

5
8
1. Vài câu lệnh encode với FFMPEG Thường câu lệnh FFMPEG có định dạng : ffmpeg i i: input file Chuyển đổi MPEG sang 3GP ffmpeg i movie1.mpeg a...