2014-10-08 18 views
6

Tôi đang cố gắng nối một số tập tin mp4 cái khác. Tôi thực hiện như sau:ffmpeg 2.4.2 concatenate mp4 files

ffmpeg -i concat:1.mp4\|2.mp4\|3.mp4\|4.mp4 -c copy final_output.mp4 

Nhưng luôn luôn nhận được thông báo "[mov, mp4, m4a, 3gp, 3g2, mj2 @ 0x148d420] Tìm thấy đôi MOOV Atom Bỏ qua nó."

Đây là kết quả:

ffmpeg version 2.4.2 Copyright (c) 2000-2014 the FFmpeg developers 
    built on Oct 6 2014 17:33:05 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) 
    configuration: --prefix=/opt/ffmpeg --libdir=/opt/ffmpeg/lib/ --enable-shared --enable-avresample --disable-stripping --enable-gpl --enable-version3 --enable-runtime-cpudetect --build-suffix=.ffmpeg --enable-postproc --enable-x11grab --enable-libcdio --enable-vaapi --enable-vdpau --enable-bzlib --enable-gnutls --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libfaac --enable-libvo-aacenc --enable-nonfree --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfdk_aac --enable-libopus --enable-pthreads --enable-zlib --enable-libvpx --enable-libfreetype --enable-libpulse --enable-debug=3 
    libavutil  54. 7.100/54. 7.100 
    libavcodec  56. 1.100/56. 1.100 
    libavformat 56. 4.101/56. 4.101 
    libavdevice 56. 0.100/56. 0.100 
    libavfilter  5. 1.100/5. 1.100 
    libavresample 2. 1. 0/2. 1. 0 
    libswscale  3. 0.100/3. 0.100 
    libswresample 1. 1.100/1. 1.100 
    libpostproc 53. 0.100/53. 0.100 
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x148d420] Found duplicated MOOV Atom. Skipped it 
    Last message repeated 2 times 
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'concat:1.mp4|2.mp4|3.mp4|4.mp4': 
    Metadata: 
    encoder   : Lavf56.4.101 
    major_brand  : isom 
    minor_version : 512 
    compatible_brands: isomiso2avc1mp41 
    Duration: 00:00:10.00, start: 0.000000, bitrate: 741 kb/s 
    Stream #0:0(und): Video: h264 (High 4:2:2) (avc1/0x31637661), yuv422p, 640x480, 177 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default) 
    Metadata: 
     handler_name : VideoHandler 
Output #0, mp4, to 'final_output.mp4': 
    Metadata: 
    compatible_brands: isomiso2avc1mp41 
    major_brand  : isom 
    minor_version : 512 
    encoder   : Lavf56.4.101 
    Stream #0:0(und): Video: h264 ([33][0][0][0]/0x0021), yuv422p, 640x480, q=2-31, 177 kb/s, 30 fps, 15360 tbn, 15360 tbc (default) 
    Metadata: 
     handler_name : VideoHandler 
Stream mapping: 
    Stream #0:0 -> #0:0 (copy) 
Press [q] to stop, [?] for help 
frame= 300 fps=0.0 q=-1.0 Lsize=  221kB time=00:00:09.90 bitrate= 183.0kbits/s  
video:217kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.995090% 

Kết quả là tôi có tệp đầu ra, chỉ chứa 1.mp4.

Tôi nghe nói về mp4 không thể ghép nối mà không cần mã hóa lại. Nhưng thực sự tôi có vấn đề này (Tìm thấy bản sao MOOV Atom) cho bất kỳ định dạng nào mà tôi đã thử (ts, mpg và v.v.).

Vui lòng cho tôi biết điều gì sai ở đây. Bởi vì có vẻ như không ai có cùng vấn đề với tôi.

Xin cảm ơn trước.

Trả lời

1

tôi đã tìm thấy các giải pháp, mà làm việc cho tôi:

ffmpeg -f concat -i ffmpeg-sound.txt -c copy output-sound.mp4 

Nó là khá kỳ lạ tại sao những người khác không làm việc, bởi vì nó dường như với tôi rằng đây là gần như giống nhau.

+3

Lệnh của bạn trong câu hỏi của bạn sử dụng [giao thức concat] (http://ffmpeg.org/ffmpeg-protocols.html#concat). Lệnh của bạn trong câu trả lời của bạn sử dụng [concat demuxer] (http://ffmpeg.org/ffmpeg-formats.html#concat). [Chúng khác nhau] (http://ffmpeg.org/faq.html#How-can-I-join-video-files_003f). – LordNeckbeard

+0

@LordNeckbeard Cảm ơn bạn đã chỉ ra sự khác biệt. Tôi đã không phân biệt trước ... http://www.ffmpeg.org/faq.html#How-can-I-concatenate-video-files_003f – Sun

+0

ffmpeg-sound.txt là gì? – SpaceDog

3

Câu trả lời đúng, nhưng chưa hoàn thành. Giải pháp là sử dụng một tập lệnh concat, nó trông giống như bạn đã làm. Các "ffmpeg-sound.txt" trong câu trả lời của bạn sẽ trông giống như thế này:

file 1.mp4 
file 2.mp4 
file 3.mp4 
file 4.mp4 

Với tập tin đó, bạn cung cấp cho nó để ffmpeg như đầu vào bằng cách sử dụng định dạng concat:

ffmpeg -f concat -i ffmpeg-sound.txt -c copy final_output.mp4 

Cảm ơn bạn để đăng giải pháp. Tôi hy vọng điều này làm rõ định dạng tập tin đầu vào sẽ giúp người tiếp theo.

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