ฉันจะเพิ่มและ / หรือเก็บคำบรรยายเมื่อแปลงวิดีโอได้อย่างไร


16

ฉันมีวิดีโอ mkv ฉันต้องการแปลงเป็น mp4 แต่ทุกอย่างที่ฉันลองและแปลง (Handbrake, WinFF, ffmpeg, mencoder, ... ฉันทำคำบรรยายของวิดีโอหายไปฉันจะแปลงวิดีโอรักษาคำบรรยายได้อย่างไร หรือเพิ่ม subtitles.srt

ฉันต้องการเข้ารหัส 2 พาสด้วยบิตเรตวิดีโอ 4054 และบิตเรตเสียง 160

ขอบคุณ

ฉันถูกขอให้ ffmpeg -i:

joe@joe-Leopard-Extreme:/media/Elements/Home Folder/Videos$ ffmpeg -i iron.mkv
ffmpeg version 0.8.3-4:0.8.3-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav     developers
built on Jun 12 2012 16:52:09 with gcc 4.6.3
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
[matroska,webm @ 0x1a319a0] Estimating duration from bitrate, this may be inaccurate
Input #0, matroska,webm, from 'iron.mkv':
Metadata:
title           : Iron 
Duration: 02:06:01.67, start: 0.000000, bitrate: 1280 kb/s
Chapter #0.0: start 0.000000, end 546.170622
Metadata:
  title           : Chapter 00
Chapter #0.1: start 546.170622, end 1080.579489
Metadata:
  title           : Chapter 01
Chapter #0.2: start 1080.579489, end 1609.941667
Metadata:
  title           : Chapter 02
Chapter #0.3: start 1609.941667, end 2101.849733
Metadata:
  title           : Chapter 03
Chapter #0.4: start 2101.849733, end 2595.259333
Metadata:
  title           : Chapter 04
Chapter #0.5: start 2595.259333, end 3158.488667
Metadata:
  title           : Chapter 05
Chapter #0.6: start 3158.488667, end 3564.644400
Metadata:
  title           : Chapter 06
Chapter #0.7: start 3564.644400, end 4052.423356
Metadata:
  title           : Chapter 07
Chapter #0.8: start 4052.423356, end 4304.300000
Metadata:
  title           : Chapter 08
Chapter #0.9: start 4304.300000, end 4711.206489
Metadata:
  title           : Chapter 09
Chapter #0.10: start 4711.206489, end 5080.575489
Metadata:
  title           : Chapter 10
Chapter #0.11: start 5080.575489, end 5700.111067
Metadata:
  title           : Chapter 11
Chapter #0.12: start 5700.111067, end 6269.346400
Metadata:
  title           : Chapter 12
Chapter #0.13: start 6269.346400, end 6811.471333
Metadata:
  title           : Chapter 13
Chapter #0.14: start 6811.471333, end 7561.679000
Metadata:
  title           : Chapter 14
Stream #0.0(eng): Video: h264 (High), yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc
Stream #0.1(eng): Audio: ac3, 48000 Hz, 5.1, s16, 640 kb/s (default)
Metadata:
  title           : 3/2+1
Stream #0.2(ita): Audio: ac3, 48000 Hz, 5.1, s16, 640 kb/s
Metadata:
  title           : 3/2+1
Stream #0.3(eng): Subtitle: pgssub (default)
Stream #0.4(eng): Subtitle: pgssub
Stream #0.5(eng): Subtitle: pgssub
Stream #0.6(eng): Subtitle: pgssub
At least one output file must be specified
joe@joe-Leopard-Extreme:/media/Elements/Home Folder/Videos

คำตอบ:


19

Softsubs

MP4 รองรับคำบรรยายรูปแบบข้อความสตรีมมิ่ง แต่การรองรับการเล่นสำหรับสิ่งนี้ในเครื่องเล่นและอุปกรณ์นั้นไม่เป็นสากล

ตัวอย่างพื้นฐานโดยใช้พฤติกรรมการเลือกสตรีมเริ่มต้นขณะสตรีมคัดลอกเสียง

ffmpeg -i input.mkv -c copy -c:s mov_text output.mp4

เช่นการสตรีมคัดลอกทั้งหมดของสตรีมวิดีโอและเสียงแปลงข้อความทั้งหมดตามกระแสการป้อนคำบรรยาย (รฟท, ASS, VTT ฯลฯ ) เป็นรูปแบบข้อความสตรีมมิ่งและการตั้งค่าภาษาสำหรับสองคนแรกกระแสคำบรรยาย

ffmpeg -i input.mkv -map 0 -c copy -c:s mov_text -metadata:s:s:0 language=eng -metadata:s:s:1 language=ipk output.mp4

เหมือนข้างบน แต่เข้ารหัสวิดีโอและเสียงในรูปแบบที่เข้ากันได้กับคอนเทนเนอร์ MP4 (วิดีโอ H.264 อีกครั้ง:

ffmpeg -i input.mkv -map 0 -c:v libx264 -c:a aac -c:s mov_text -metadata:s:s:0 language=eng -metadata:s:s:1 language=ipk output.mp4

เหมือนกับด้านบน แต่ใช้-mapตัวเลือกเพื่อเลือกสตรีมวิดีโอแรกสตรีมเสียงที่สองและสตรีมคำบรรยายที่สาม:

ffmpeg -i input.mkv -map 0:v:0 -map 0:a:1 -map 0:s:2 -c:v libx264 -c:a aac -c:s mov_text -metadata:s:s:0 language=eng output.mp4

Hardsubs

อินพุตรูปแบบคำบรรยายตามข้อความ

ใช้ตัวกรองคำบรรยายเพื่อจัดรูปแบบคำบรรยายตามข้อความ "เบิร์น" (SRT, ASS, VTT, ฯลฯ ) โปรดทราบว่าต้องใช้การเข้ารหัสซ้ำดังนั้นจึงช้ากว่าการใช้ softsub มาก

ตัวอย่างพื้นฐานโดยใช้พฤติกรรมการเลือกสตรีมเริ่มต้นขณะสตรีมคัดลอกเสียง

ffmpeg -i input.mkv -filter_complex "subtitles=input.mkv" -c:a copy output.mp4

ตัวอย่างการใช้สตรีมวิดีโอที่สามสตรีมคำบรรยายที่ห้าและสตรีมเสียงแรก:

ffmpeg -i input.mkv -filter_complex "[0:v:2]subtitles=input.mkv:si=4[v]" -map "[v]" -map 0:a:0 -c:a copy output.mp4

ตัวอย่างสำหรับไฟล์คำบรรยายแยกต่างหาก ( your-subtitles-file.srt):

ffmpeg -i input.mp4 -filter_complex "subtitles=your-subtitles-file.srt" -c:a copy output.mp4

รูปแบบอินพุตคำบรรยายตามรูป

ใช้ตัวกรองการซ้อนทับ ตัวอย่างนี้จะซ้อนทับคำบรรยายที่สี่บนสตรีมวิดีโอที่สองและสตรีมคัดลอกสตรีมเสียงที่เจ็ด:

ffmpeg -i input.mkv -filter_complex "[0:v:2][0:s:3]overlay[v]" -map "[v]" -map 0:a:6 -c:a copy output.mp4

ยังดู


เรื่องนี้ทำให้ฉันสับสนเล็กน้อย คุณสามารถให้คำสั่งเต็มได้หรือไม่? ใช่ฉันกำลังกำหนดเป้าหมายขนาดไฟล์เอาต์พุตเฉพาะ
JoeSteiger

@JoeSteiger คุณควรอัปเดตคำถามของคุณโดยระบุคอนโซลเอาต์พุตffmpeg -i input.mkvก่อน
llogan

คุณหมายถึงอะไรข้างต้นหรือไม่
JoeSteiger

@JoeSteiger ใช่มันมีประโยชน์
llogan

เคให้ฉันรู้ว่าจะทำอย่างไรต่อไป
JoeSteiger

13

คุณสามารถใช้ -map 0 เพื่อให้แน่ใจว่าสตรีมทั้งหมดจะถูกคัดลอก หากไม่สามารถใช้รูปแบบได้ ffmpeg ควรผิดพลาด

-map 0 บอกให้ ffmpeg / libav รวมสตรีมทั้งหมดไม่ใช่เฉพาะที่คุณกำหนดกฏ convecsion

โดยปกติแล้ว -map จะใช้ในการกำหนดการแมปสตรีม - เช่นสตรีม 1 ในอินพุตควรกลายเป็นสตรีม 0 ในเอาต์พุต ด้วย -map 0 คุณบอกให้ ffmpeg / libav ทำการสตรีมทั้งหมดโดยไม่ต้องสับ


คุณช่วยอธิบายอีกเล็กน้อยได้ไหม?
Kaz Wolfe

ฉันแก้ไขคำตอบของฉัน
Arne Babenhauserheide

1

หากคุณเพียงต้องการแปลงไฟล์ mp4 ให้เป็นง่ายๆคุณสามารถใช้ VLC VLC จะยอมรับไฟล์คำบรรยายและแสดงผลลงในเอาต์พุต

สำหรับการแปลงที่ซับซ้อนยิ่งขึ้นรวมถึงการใส่สไตล์ของคำบรรยายคุณสามารถใช้ OpenShot


-1

ฉันพบวิธีที่จะทำให้มันใช้งานได้ไม่เหมาะ แต่ทำงานได้ ฉันสามารถเพิ่ม srt ลงในวิดีโอด้วย mkvmerge ความหายนะเท่านั้นที่ทำให้วิดีโอ mkv ไม่ใช่ mp4

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.