2010-08-24 52 views
6

Tôi có hai tệp video MTS, mỗi tệp dài 2 phút. Tôi cần để có thể tham gia các tập tin với nhau và chuyển đổi định dạng sang MPEG4. Tôi có một dòng lệnh phù hợp để chuyển đổi MTS sang MP4 nhưng không biết làm thế nào để tham gia các tập tin với nhau ở nơi đầu tiên.Sử dụng FFMPEG để ghép hai tệp MTS với nhau

Một số bài viết trên web đề nghị sử dụng lệnh CAT, như:

cat video1.mts video2.mts > whole_video.mts 

Tuy nhiên điều này không làm việc và theo FFMPEG, "whole_video.mts" chỉ dài 2 phút, không 4 phút.

Có ai biết cách tham gia các tệp với nhau không? FFMPEG là chương trình tốt nhất để sử dụng để làm điều này? Cảm ơn trước.

Trả lời

8

Sau đây làm việc một cách hoàn hảo đối với tôi (tức là dẫn đến kết nối liên tục):

ffmpeg -i "concat:00019.MTS|00020.MTS|00021.MTS|00022.MTS" output.mp4 
+0

Chỉ cần thêm này như là một newbie: Tôi đã phải 'cd' vào thư mục nguồn và chạy lệnh từ đó (tôi thậm chí sao chép các ffmpeg bineries trong thư mục nhưng thats có lẽ không cần thiết). Trước tiên, tôi đã cố gắng để 'cd' trong ffmpeg thư mục chạy lệnh và sử dụng đường dẫn tuyệt đối cho các tập tin để nối. Điều đó không hiệu quả. –

+0

Làm việc tốt cho tôi. Có cách nào để thực hiện điều này mà không cần mã hóa lại không? Tôi đã thử "output.MTS" nhưng nó vẫn có vẻ muốn đi qua khung của khung (nó đã được nhanh hơn mặc dù). – dgig

+2

Thêm '-codec copy' vào dòng lệnh. – TobiX

1

OK, tôi đã sắp xếp. Sử dụng phiên bản mới nhất của SVN FFMPEG, x264 và MP4Box (GPAC), đây là những gì tôi đã làm ...

Sử dụng FFMPEG để chuyển đổi các tập tin MTS sang MP4 như bình thường:

ffmpeg -i video1.mts -vcodec libx264 -deinterlace -crf 25 -vpre hq -f mp4 -s hd480 -ab 128k -threads 0 -y 1.mp4 
ffmpeg -i video2.mts -vcodec libx264 -deinterlace -crf 25 -vpre hq -f mp4 -s hd480 -ab 128k -threads 0 -y 2.mp4 

Sử dụng MP4Box tham gia MP4 tập tin với nhau:

MP4Box -cat 1.mp4 -cat 2.mp4 output.mp4 

này gia nhập các tập tin với nhau thành "output.mp4", tuy nhiên khi tôi sử dụng "ffmpeg output.mp4 -i" nó nói trong suốt thời gian dài mà nó phải được. Để khắc phục điều này, tôi phải sử dụng FFMPEG lần nữa:

ffmpeg -i output.mp4 -vcodec copy -y final.mp4 

Và thì đấy! Truy vấn tệp "final.mp4" bằng FFMPEG hiển thị thời lượng chính xác và video phát tốt.

Hy vọng điều này sẽ giúp bất kỳ ai khác gặp phải sự cố tương tự.

+0

tôi nhận được lỗi này, khi tôi cố gắng lệnh đầu tiên ở trên: "File cho cài sẵn 'hq' không tìm thấy" –

+0

Nhìn vào tài liệu ffmpeg. "hq" đã được thay thế một lúc trước. – Reado

+1

Bước đầu tiên của bạn sẽ mã hóa lại các tệp và giảm chất lượng. – TobiX

3

Sử dụng mèo hoạt động. Chỉ các trình phát video của nó sẽ bị đánh lừa về độ dài video trong khi đọc toàn bộ video_video.mts. Sẽ thường có một dấu thời gian nhảy bất ngờ, nơi tập tin đã được cắt trước đó. Nhưng điều này vẫn ổn. Bạn có thể mã hóa nó và sau đó bạn sẽ nhận được một tập tin timestamped đúng.

Mã hóa bằng ffmpeg và sau đó tham gia với MP4Box là một ý tưởng tồi. Bạn sẽ nhận được hình ảnh xấu xí với các khối bị thiếu ở vị trí giao nhau nếu tệp thứ hai không bắt đầu bằng khung hình chính (xảy ra khi nó bị cắt bởi máy quay vì giới hạn tệp 2 GB). Do tham gia và sau đó mã hóa, không phải ngược lại.

Các vấn đề liên quan