1. ffmpeg-3.2 version
2. ass overlay video
./ffmpeg -i war.ts -vf ass=t1.ass -an -c:v libx264 -s 640x360 ff.ts
3. ass subtitle stream
ffmpeg -i war.ts -i t1.ass -an -c:v libx264 -s 640x360 -c:s ass ff_ass.ts
4. srt subtitle stream
ffmpeg -i war.ts -i tt.srt -an -c:v libx264 -s 640x360 -c:s srt ff_srt.ts
5. ass subtitle stream
ffmpeg -i war.ts -i t1.ass -map 0:0 -an -c:v libx264 -s 640x360 -map 1:0 -c:s ass ff1_ass.ts
6. srt subtitle stream
ffmpeg -i war.ts -i tt.srt -map 0:0 -an -c:v libx264 -s 640x360 -map 1:0 -c:s srt ff1_srt.ts
ffmpeg -i war.ts -sub_charenc UTF-8 -i tt.srt -map 0:0 -an -c:v libx264 -s 640x360 -map 1:0 -c:s srt -metadata:s:s:0 language=Chinese ff3_srt.ts
ffmpeg -i war.ts -sub_charenc UTF-8 -i tt.srt -map 0:0 -map 0:1 -map 1:0 -c:a copy -c:v copy -c:s ass ff1_srt_ass.ts
7. ass subtitle stream
ffmpeg -i war.ts -i t1.ass -map 0:0 -map 0:1 -map 1 -c:a copy -c:v copy -c:s copy ff6_ass.mkv
8. srt subtitle stream
ffmpeg -i war.ts -i tt.srt -map 0:0 -map 0:1 -map 1 -c:a copy -c:v copy -c:s copy ff6_srt.mkv
注意:
是否生成 subtitle 流, 与容器格式有关系。 对于 ts 流, 不能生成 字幕流。 不知为什么?
对于 flv, 不能生成字幕流。
对于 mkv, 能生成字幕流。
提取字幕流
1)原始文本输出
ffmpeg -i output.mkv -an -vn -bsf:s mov2textsub -scodec copy -f rawvideo sub.txt
ffmpeg -i output.mkv -an -vn -c:s copy -f rawvideo -map 0:s sub2.txt
2)ass格式输出
ffmpeg -i output.mkv -an -vn -scodec copy sub3.ass
//
./ffmpeg -f mpegts -re -i war.ts -c:v libx264 -s 640x360 \
-c:a libmp3lame -ar 44100 -metadata title="Track #5" \
-metadata author="Unknown Artist" \
-metadata composer="Composer Unknown" \
-metadata album="Tracer Video Game Soundtrack" \
-metadata year="1996" \
-metadata track="5" \
-metadata comment="This is redbook CD audio track #5 from the Windows game Tracer" \
-metadata genre="Game Soundtrack" \
-metadata copyright="Copyright 1996 Future Endeavors, Inc." \
-metadata description="Nifty techno background tune for a futuristic video game" \
-metadata synopsis="Hey, is thing on? This is where the 'synopsis' field shows up." \
-metadata show="Tracer" \
-metadata episode_id="108" \
-metadata network="Some network" \
-f flv rtmp://localhost/hls/test1