Làm cách nào tôi có thể hợp nhất hoặc ghép hai hoặc nhiều tệp MP4 tạo một tệp MP4 khác? [bản sao]


14

Làm cách nào tôi có thể nối hoặc hợp nhất 2 hoặc nhiều tệp MP4, trong một tệp MP4 đầu ra cuối cùng?

Tôi đã thử trong cửa sổ DOS để sử dụng lệnh COPY (tôi đã đọc nó ở đâu đó) nhưng nó không hoạt động tốt.


Đồng thời xem superuser.com/questions/43588/ trên để biết thêm thông tin. Không chắc chắn nếu tôi sẽ phân loại câu hỏi này là một bản sao.
Đột phá

1
vui lòng thêm hệ điều hành của bạn dưới dạng thẻ.
tumchaaditya

Câu trả lời:


12

MP4Box có thể làm điều này, mặc dù bạn có thể muốn sử dụng GUI cho nó như YAMB hoặc GUI MP4Box của tôi . (NB: Cá nhân tôi không phải chương trình của tôi , đó chỉ là tên.) Các tệp nhị phân MP4Box cho Windows có sẵn từ trang web này .

Thí dụ:

MP4Box -tmp $HOME -add vid.01.m4v \
    -cat vid.02.m4v -cat vid.03.m4v vid-out.mp4

4

Tôi khuyên bạn nên sử dụng ffmpeg , có sẵn cho Mac OS X, Linux và Windows .

Đây là một bài kiểm tra tốt về cách ghép hai bộ phim: http://www.ffmpeg.org/faq.html#SEC27

Ở bước cuối cùng, bạn chỉ cần đảm bảo rằng bạn tạo một thùng chứa MP4, cho tệp kết quả.


Theo tôi hiểu câu trả lời FAQ của ffmpeg được đưa ra, điều này không thể thực hiện được với video MP4 (có lẽ là H.264), vì đó không phải là một trong những "định dạng đặc quyền".
ttarchala

@ttarchala: Tôi sẽ thử nếu nó có thể được thực hiện. Tôi đã chuyển đổi thành MP4 với FFmpeg trước đây, nhưng chưa bao giờ ghép hai phim. Ngoài ra: Tôi muốn chỉ ra rằng FFmpeg có sự phát triển rất nhanh. Những gì không hoạt động với một phiên bản, có thể chỉ hoạt động trong phiên bản tiếp theo.
Polemon

1
Không phải tất cả các bản dựng của FFMPEG đều có hỗ trợ MP4. Đối với một điều, đó là một công nghệ được cấp bằng sáng chế và được cho là bất hợp pháp khi phân phối các bộ mã hóa MP4 ở Hoa Kỳ mà không phải trả phí. Tuy nhiên, nhiều bản dựng có thể làm điều này.
CarlF

@CarlF: Đối với Linux và Mac OS X, đây thực sự không phải là một vấn đề. Mã có thể được phân phối tự do, vì vậy về cơ bản, bất cứ ai xây dựng FFmpeg của riêng họ, tất cả đều tốt. Về bằng sáng chế, tôi muốn chia sẻ một nhận xét: Tôi sẽ không tìm thấy trang này ngay bây giờ, nhưng bằng sáng chế đầu tiên hết hạn cho AAC (được xác định một phần trong MPEG-4), là vào năm 2022. Và đó là chỉ là cái đầu tiên, còn nhiều thứ nữa cần hết hạn cho đến khi nó hoàn toàn hợp pháp ...
Polemon

4

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

mkfifo temp0 temp1
ffmpeg -i input0.mp4 -c copy -bsf h264_mp4toannexb -f mpegts -y temp0 2> /dev/null & \
ffmpeg -i input1.mp4 -c copy -bsf 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, 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, đó là trên hệ thống không hỗ trợ những người bạn phải sử dụng các tệp trung gian:

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

Nếu không phải là h264 mà là mpeg4 thì sao?
Edison

2

Cập nhật: Chỉ cần kiểm tra avidemux như tôi đã cài đặt, sau khi đọc câu trả lời khác. Đó là những gì bạn đang tìm kiếm (không nghĩ rằng nó có thể làm MP4 vì tên của nó).

Tôi nghĩ VirtualDubMod có khả năng mp4, mặc dù vậy tôi đã không sử dụng nó vì vậy tôi không chắc chắn.

Bạn có thể muốn kiểm tra MeGUI . Đây là một ứng dụng và công cụ khá phức tạp và giàu tính năng.

Công cụ để nhúng vào một thùng chứa (mp4 trong trường hợp của bạn) được gọi là muxer, mà người ta có thể không thể nối chúng mặc dù.

Bạn có thể sử dụng nó kết hợp với VirtualDub. Virtualdub để nối các luồng video và muxer để biến nó thành mp4 một lần nữa (mà không phải mã hóa lại).


1

Tôi đang làm điều đó với mencoder, sau khi đã chuyển đổi chúng thành avi với ffmpeg

đây là một tập lệnh đơn giản, giả sử bạn có 15 tệp, được đặt tên là 01.mp4 ... 15.mp4

#!/bin/bash
for j in `seq -w 1 15`;
do
    echo converting file $j.avi
    ffmpeg -i $j.mp4 $j.avi        

    echo adding file $j.avi to list
    z="$z $j.avi"
done 

echo doing append
mencoder -oac copy -ovc copy $z -o all.avi

chúc mừng


1

Đây là lệnh:

ffmpeg -i concat:"video1.ts|video2.ts"

Có phải nhân vật đường ống cần phải được trốn thoát? Hay tôi hoàn toàn đọc sai lệnh đó?
sát thủ

nó cần phải được trốn thoát Giáo sư.
rogerdpack
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.