Sử dụng ffmpeg để sao chép siêu dữ liệu từ tệp này sang tệp khác


17

Tôi muốn sử dụng ffmpeg để sao chép tất cả dữ liệu meta không liên quan đến các khía cạnh cốt lõi của video (tốc độ khung hình, độ phân giải) từ video này sang video khác. Có một cách đơn giản để làm điều này với một lệnh duy nhất?

Câu trả lời:


19

Sử dụng -map_metadata.

Trong ví dụ này, siêu dữ liệu toàn cầu và luồng sẽ được sao chép từ đó in0.mkv. Các luồng video và âm thanh sẽ được sao chép từ in1.mkv:

ffmpeg -i in0.mkv -i in1.mkv -map 1 -c copy \
# copies all global metadata from in0.mkv to out.mkv  
-map_metadata 0 \
# copies video stream metadata from in0.mkv to out.mkv
-map_metadata:s:v 0:s:v \
# copies audio stream metadata from in0.mkv to out.mkv
-map_metadata:s:a 0:s:a \
out.mkv

Điều này sẽ dẫn đến một cái gì đó như:

Output #0, matroska, to 'out.mkv':
  Metadata:
    title           : Global Title
    AUTHOR          : Global Author
    Stream #0:0: Video: h264
    Metadata:
      title           : Stream 0 Title
    Stream #0:1: Audio: vorbis
    Metadata:
      title           : Stream 1 Title

Theo mặc định, siêu dữ liệu toàn cầu được sao chép từ tệp đầu vào đầu tiên, do đó -map_metadata 0có thể bị bỏ qua.


1
Nếu video nguồn của bạn là tệp .mov, bạn cũng cần thêm cờ -movflags use_metadata_tagshoặc video đầu ra sẽ không chứa siêu dữ liệu.
Mastergalen

-3

Nếu tất cả những gì bạn cần là những điều cơ bản (ngày tạo, v.v.), thì chạm -r FILE1 FILE2 sẽ hoạt động như một siêu dữ liệu đối phó quyến rũ từ FILE1 đến FILE2


Nếu bạn đọc câu hỏi, mục tiêu là dữ liệu meta video, không phải dữ liệu meta tệp.
fixer1234
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.