Nó sẽ dễ dàng. Trên thực tế, nó có thể là dễ dàng. Có lẽ tôi chỉ bị câm. Tôi có hai video, quay cùng một lúc nhưng với hai máy ảnh khác nhau. Một video là 1920x1080 @ 60, video còn lại là 640x480 @ 29,85. Tôi muốn tạo một video trong đó cả hai đều chạy đồng thời (hình ảnh trong ảnh, màn hình chia nhỏ, bất cứ điều gì; đó không phải là vấn đề). Khi tôi làm điều này, một trong những video kết thúc vài giây trước video kia. Tôi chắc chắn điều này là do tốc độ khung hình khác nhau, nhưng không có sự kết hợp giữa -framerator hoặc -r, dù là tham số đầu vào hoặc đầu ra (hoặc cả hai), sẽ mang lại cho tôi các video được đồng bộ hóa. Họ bắt đầu đồng bộ, nhưng cuối cùng có một vài giây khác biệt.
Tôi đã thử một số thứ, như được chỉ ra ở trên. Dưới đây là một số thử nghiệm (đừng bận tâm đến các giá trị thực tế; hầu hết chúng chỉ đang cố gắng xem hiệu ứng là gì):
ffmpeg -i% 1 -r% outrate% -c: v libx264 -profile: v high -level 4.1 -preset rất nhanh -y% đầu ra%
ffmpeg -i% 1 -filter: v "setpts = 0.25 * PTS" -c: v libx264 -profile: v high -level 4.1 -preset rất nhanh -y% đầu ra%
ffmpeg -r% inrate% -i% 1 -r% outrate% -c: v libx264 -profile: v high -level 4.1 -preset Veryfast -shortest -y% output%
Dưới đây là thông tin cho mỗi tệp:
ffmpeg version N-91330-ga990184007 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 7.3.0 (GCC)
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth
libavutil 56. 18.102 / 56. 18.102
libavcodec 58. 20.103 / 58. 20.103
libavformat 58. 17.100 / 58. 17.100
libavdevice 58. 4.101 / 58. 4.101
libavfilter 7. 25.100 / 7. 25.100
libswscale 5. 2.100 / 5. 2.100
libswresample 3. 2.100 / 3. 2.100
libpostproc 55. 2.100 / 55. 2.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000020412f7a040] st: 0 edit list: 1 Missing key frame while searching for timestamp: 1000
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000020412f7a040] st: 0 edit list 1 Cannot find an index entry before timestamp: 1000.
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '60fps.mov':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2015-01-01T00:04:15.000000Z
Duration: 00:05:40.00, start: 0.000000, bitrate: 31673 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 29717 kb/s, 60 fps, 60 tbr, 60k tbn, 120k tbc (default)
Metadata:
creation_time : 2015-01-01T00:04:15.000000Z
handler_name : iCatch Alias Data Handler
encoder : iCatch AVCC
Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 44100 Hz, stereo, s16, 1411 kb/s (default)
Metadata:
creation_time : 2015-01-01T00:04:15.000000Z
handler_name : iCat Alias Data Handler
[avi @ 0000020413a3e280] non-interleaved AVI
Guessed Channel Layout for Input Stream #1.1 : mono
Input #1, avi, from '29fps.avi':
Duration: 00:05:04.36, start: 0.000000, bitrate: 7266 kb/s
Stream #1:0: Video: mjpeg (MJPG / 0x47504A4D), yuvj422p(pc, bt470bg/unknown/unknown), 640x480, 7071 kb/s, 29.85 fps, 29.85 tbr, 29.85 tbn, 29.85 tbc
Stream #1:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 8000 Hz, mono, s16, 128 kb/s
At least one output file must be specified
Tôi biết điều này là đơn giản. Nhưng tôi không thể nghĩ ra được, và những ngày tìm kiếm của tôi đã không đến với nó. Kung Fu của tôi kém hơn. Tôi cúi cho bạn.
ffmpeg -i 60fps.mp4 -i 29fps.mp4 2> logfile.txt