Làm cách nào để hợp nhất hai tệp mp4 mà không làm giảm chất lượng?


51

Tôi có hai tệp mp4 chất lượng cao, là hai phần của cùng một chương trình.

Tôi muốn hợp nhất chúng lại với nhau thành 1 tệp và tôi thường sử dụng VirtualDub để hợp nhất các tệp của mình ... Nhưng dường như nó không hỗ trợ mp4.

Những lựa chọn thay thế nào có sẵn (đặc biệt là những lựa chọn không yêu cầu mã hóa lại)?


Câu trả lời:


41

Tôi thường sử dụng VirtualDub để hợp nhất các tệp của mình, nhưng dường như nó không hỗ trợ mp4. Vậy có những lựa chọn thay thế nào?

Avidemux . Nó giống như VirtualDub, chỉ với nhiều định dạng được hỗ trợ và tích hợp codec và bộ lọc. Tôi luôn luôn sử dụng nó trong sở thích; nó tham gia các tệp AVC + AAC.MP4 (không mã hóa lại) đối với tôi.

Để tham gia cùng họ trong AviDemux:

  1. Tệp -> Mở -> Chọn Tệp
  2. Tệp -> Nối -> Chọn Tệp
  3. Đặt tất cả thành Sao chép
  4. Tệp -> Lưu -> Tên tệp
  5. Chờ đợi..

Theo các diễn đàn AViDemux, quá trình tham gia này là không mất mát ( http://www.avidemux.org/smf/index.php?topic=9467.0 )


vâng, nó có vẻ rất tuyệt vời khi giữ âm thanh đồng bộ với video trong khi những người khác trả lời câu hỏi này là nghi vấn trên IMHO đó.
djangofan

1
Tôi đã thử sử dụng Avidemux để nối hai tệp lại với nhau nhưng âm thanh không đồng bộ.
GiddyUpHorsey

Bạn có thể gặp sự cố đồng bộ hóa khi số lượng vật liệu âm thanh khả dụng không khớp với độ dài của khung hình video hoặc có bất kỳ lỗi truyền phát nào. Bạn có thể khắc phục sự cố này bằng các tính năng 'sửa lỗi luồng' của VideoRedo hoặc ProjectX.
bobince

1
Nhưng phương pháp này đã có hiệu quả: superuser.com/a/255566/1780 Hoan hô!
Christopher Galpin

4
Nếu bạn sử dụng AviDemux để tham gia hai tệp mp4, đừng quên chọn tùy chọn mp4 Demux ở góc dưới bên trái. Nếu không, nó có thể cố gắng chuyển đổi nó thành avi!

28

Bạn có thể làm điều này với ffmpeg:

mkfifo temp0 temp1
ffmpeg -i input0.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -y temp0 2> /dev/null & \
ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -y temp1 2> /dev/null & \
ffmpeg -f mpegts -i "concat:temp0|temp1" -c copy -absf aac_adtstoasc output.mp4

Điều này không mã hóa lại bất cứ thứ gì, nó đặt chúng vào một thùng chứa luồng vận chuyển mới, giúp chúng dễ dàng ghép nối hơn, và sau đó ghép chúng lại thành một MP4. Nếu output.mp4 đã tồn tại, lệnh sẽ thất bại. Phiên bản trên sử dụng các đường dẫn có tên, nếu bạn đang sử dụng hệ thống không hỗ trợ những người bạn phải sử dụng các tệp trung gian (như cửa sổ):

ffmpeg -i input0.mp4 -c copy -bsf:v h264_mp4toannexb temp0.ts
ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb temp1.ts
ffmpeg -i "concat:temp0.ts|temp1.ts" -c copy -bsf:a aac_adtstoasc output.mp4

ai đó có thể giải thích làm thế nào điều này được thực hiện với avconvthay vì ffmpeg? Tôi đã có thể hoàn thành hai bước đầu tiên, nhưng bước cuối cùng không nhận ra tùy chọn-absf
vẫy gọi

@becko Xem chỉnh sửa của tôi. Bây giờ bạn nên sử dụng một công cụ xác định luồng (xem tại đây libav.org/avconv.html#Advified-options ).
slhck

2
1 chỉ để tham khảo trong tương lai, bạn có thể thay thế avconvcho ffmpegtrong các lệnh trên và nó sẽ làm việc.
vẫy gọi

15

Trình giải thích concat

Trình giải mã concat đã được thêm vào ffmpeg 1.1. Nếu phiên bản ffmpeg của bạn đã cũ, hãy lấy tệp nhị phân tĩnh mới nhất từ ​​đây: http://www.ffmpeg.org/doad.html

Hướng dẫn

Tạo một tệp mylist.txtvới tất cả các tệp bạn muốn ghép nối theo mẫu sau (Các dòng bắt đầu bằng dấu gạch ngang được bỏ qua):

# this is a comment
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'

Lưu ý rằng đây có thể là đường dẫn tương đối hoặc tuyệt đối. Sau đó, bạn có thể mã hóa các tệp của mình bằng:

ffmpeg -f concat -i mylist.txt -c copy output

Có thể tạo tệp danh sách này bằng một bash for loop hoặc sử dụng printf. Một trong những điều sau đây sẽ tạo ra một tệp danh sách chứa mọi * .wav trong thư mục làm việc:

for f in ./*.wav; do echo "file '$f'" >> mylist.txt; done
printf "file '%s'\n" ./*.wav > mylist.txt

Nguồn: wiki ffmpeg


8

YAMB cùng với MP4BOX là một lựa chọn tốt.
Tải xuống cả hai và giải nén chúng (không cần cài đặt và cùng nhau khoảng 5 MB), trong YAMB chọn Cài đặt và đặt đường dẫn thư mục của MP4box.
Để tham gia tập tin mp4, chọn Chỉnh sửa> Nhấp để Tham gia được hỗ trợ ...


1
Có vẻ như là giải pháp tốt nhất, giữ định dạng chứa .mp4 có vẻ là tùy chọn hấp dẫn hơn đối với tác giả ^^
Oskar Duveborn

1
Sau khi gặp khó khăn, tôi đã sử dụng cấu hình này: MP4Box_path = E: \ Software \ Video Chỉnh sửa \ Yamb-2.1.0.0_beta2 \ MP4Box \ MP4Box.exe trong nỗ lực hợp nhất 4 tệp MP4 500 MB được tạo từ AVIDemux. Nó không hoạt động. Chương trình chỉ ngồi đó 45 phút không làm gì cho đến khi tôi cuối cùng bỏ cuộc.
djangofan

1
tôi gặp sự cố khi sử dụng phương pháp này vì sự cố đồng bộ hóa âm thanh. đó là một cơn ác mộng ... không thử lại lần nữa.
djangofan

6

SUPER © (Trình mã hóa & Trình kết xuất Trình phát Đa năng Đơn giản hóa) cung cấp Quy trình đầu ra bổ sung sau:

Mọi tệp đa phương tiện đầu vào được hỗ trợ đều có thể được xử lý:

      o Join Format-Identical Files.
      o Mux Video & Audio Streams.
      o DeMux Extract Streams. 

Tất nhiên, MP4 là một định dạng được hỗ trợ.

SUPER © là phần mềm miễn phí.


5
Giao diện người dùng của nó là khủng khiếp nhất tôi từng thấy trong đời. Tôi không đùa, nó thật kinh khủng. Tôi nhấn mạnh nó một lần nữa: Tôi không thể đặt tên cho một giao diện tồi tệ hơn, tôi nghiêm túc về nó, tôi chưa bao giờ thấy bất cứ điều gì dưới "ngưỡng SIÊU".
Camilo Martin

5

Hãy thử sử dụng bộ chứa video Matroska.

Đầu tiên, bạn cần mkvtoolnix . Tải xuống và cài đặt nó, sau đó bạn cần kích hoạt GUI mkvmerge (trừ khi bạn thích các công cụ dòng lệnh, điều này cũng ổn đối với tôi - mặc dù bạn có thể muốn xem phần liên kết tệp của tài liệu mkvmerge ).

Thêm tệp đầu tiên của bạn bằng cách nhấp vào "thêm". Sau đó, nhấp vào "chắp thêm" và mở tệp thứ hai của bạn. Đặt tệp đầu ra, nhấn "Bắt đầu muxing" ở dưới cùng và bạn đi ngay!

Nếu container không phù hợp với nhu cầu của bạn, bạn có thể mã hóa lại hoặc thử chuyển đổi nó sang định dạng khác ... Mặc dù MKV là một container rất đáng yêu!


nó phải được muxed? tôi không thể tham gia mà không muxing?
djangofan

Chà, nếu bạn đang sử dụng một container MKV, về mặt kỹ thuật bạn đang làm lại nó. Hãy thử nó, không có hình phạt thời gian thực ...
Đột phá

1

Nếu bạn có thể phát chúng trên hệ thống của mình / cài đặt codec, Windows Movie Maker có thể là cách nhanh nhất (và miễn phí) để tham gia hai tệp. Sau đó, bạn có thể sử dụng Virtualdub để chuyển đổi sang định dạng khác.


Audacity dường như là dành cho các tập tin âm thanh. Đây là một tập tin video.
Paolo Bergantino

Rất xin lỗi, tôi đã đọc sai, chỉ thấy phần MP và bộ não của tôi mặc dù táo bạo.
William Hilsum

Chỉnh sửa câu trả lời ...
William Hilsum

AFAIK, Movie Maker không hỗ trợ mp4 và chuyển đổi sang định dạng khác có nghĩa là mất chất lượng mà câu hỏi chỉ định là không mong muốn.
Eran

Tôi đã thử MovieMaker trên windows7 và âm thanh không đồng bộ khi nối các tệp MP4 vào WMV. Tùy chọn này sẽ không hoạt động.
djangofan

1

Một giải pháp khác là Open Video Joiner . Nó cũng có hiệu ứng chuyển tiếp.

nhập mô tả hình ảnh ở đây


Đó là một phần mềm chia sẻ mặc dù. và với giá 30 đô la, nó không rẻ khi chỉ hợp nhất các tệp video
Eran

Nó được cho là phần mềm miễn phí. Xin lỗi nếu tôi bị lừa.
harrymc
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.