Vì vậy, khi tôi nhìn vào video gốc:
ffprobe -v error -show_entries stream=index,codec_name,codec_type example.mkv
Tôi thấy một cái gì đó như thế này:
[STREAM]
index=0
codec_name=h264
codec_type=video
[/STREAM]
[STREAM]
index=1
codec_name=aac
codec_type=audio
[/STREAM]
[STREAM]
index=2
codec_name=ass
codec_type=subtitle
[/STREAM]
[STREAM]
index=3
codec_name=ttf
codec_type=attachment
[/STREAM]
Quá trình của tôi liên quan đến việc giải nén tập tin ass thông qua:
ffmpeg -i input.mkv -map 0:s:0 subs.ass
Tôi chỉnh sửa tập tin phụ đề trong vim
. Sau đó, tôi cố gắng thêm tệp phụ đề trở lại vào tệp mkv với nội dung như sau:
ffmpeg -i input.mkv -f ass -i subs.ass \
-map 0:0 -map 0:1 -map 1:0 -c:v copy -c:a copy \
-c:s copy output.mkv
Nhưng khi tôi thăm dò output.mkv, tôi chỉ thấy
[STREAM]
index=0
codec_name=h264
codec_type=video
[/STREAM]
[STREAM]
index=1
codec_name=aac
codec_type=audio
[/STREAM]
[STREAM]
index=2
codec_name=ass
codec_type=subtitle
[/STREAM]
Như bạn có thể thấy, tôi mất luồng đính kèm và phụ đề không còn được phát theo mặc định. Vì vậy, tôi đã xem qua các lệnh khác:
Đặt phụ đề mặc định:
ffmpeg -i output.mkv -f ass -i subs.ass -c copy -disposition:s:0 default out.mkv
Phông chữ kết xuất từ bản gốc:
ffmpeg -dump_attachment:t "" -i original.mkv
Đính kèm Phông chữ vào video đã chỉnh sửa:
ffmpeg -i out.mkv -attach OpenSans-Semibold.ttf -metadata:s:3 mimetype=application/x-truetype-font final.mkv
Nhưng sau đó bằng cách nào đó dọc theo các quá trình đó, âm thanh thay đổi từ aac
đến vorbis
và video thay đổi từ h264 (native)
đến h264 (libx264)
. Làm cách nào để bảo toàn luồng trong khi thực hiện các thay đổi lỗi đơn giản cho phụ đề?