Làm cách nào để chỉnh sửa phụ đề của tệp MKV trong khi duy trì các luồng video, âm thanh và tệp đính kèm?


0

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 vorbisvà 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ụ đề?

Câu trả lời:


0

# 1 Trích xuất phụ đề

ffmpeg -i input.mkv -c copy -map 0:s:0 subs.ass

# 2 Mux đã chỉnh sửa phụ

ffmpeg -i input.mkv -i subs.ass  \
       -map 0:v -map 0:a -map 1 -map 0:t -c copy -disposition:s:0 default output.mkv

Cảm ơn bạn! Quá trình cũ của tôi mất khá nhiều thời gian, nhưng hai lệnh này chỉ đơn giản là kết thúc sau vài giây.
Flair
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.