Как объединить два или более видео с одинаковой шириной и разной высотой в FFMpeg и сохранить одинаковое соотношение сторон? - PullRequest
0 голосов
/ 23 октября 2019

У меня есть пять видео частей, чтобы объединить все. Каждые пять видео имеют одинаковую ширину и высоту. Вторая часть - это hstack еще 2 видео, а третья - это hstack и vstack еще 3 видео. Несмотря на то, что все пять частей видео совпадают, соотношение сторон в конечном видео не сохраняется. Поскольку я новичок в ffmpeg, помогите мне разобраться с проблемой

Я попытался с помощью команды в моем финале с комплексом фильтров и уменьшить размер, который использовал кадр в секунду.

"ffmpeg -i final.mp4 -vf scale=1280:480 -filter:v fps=fps=30 finalNew.mp4"

но ничего не получалось. Также помогите мне использовать hstack с масштабированием, чтобы поддерживать соотношение сторон для второй части в приведенной ниже команде

Команда: ffmpeg -i vid1.mkv -i vid2.mkv -filter_complex "[0: v] масштаб = -1: 480 [v0]; [0: v] [1: v] hstack = входы = 2 "vid3.mkv

Изображения

секундачасть

третья часть

videochunks

У меня есть консоль информация моего видео

ffmpeg -i part1.mkv -i part2.mkv -i part3.mkv -i part4.mkv -i part5.mkv ffmpeg version N-94911-g197985c5bf Copyright (c) 2000-2019 the FFmpeg developers built with gcc 9.1.1 (GCC) 20190807 configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --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-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf libavutil 56. 35.100 / 56. 35.100 libavcodec 58. 56.101 / 58. 56.101 libavformat 58. 32.104 / 58. 32.104 libavdevice 58. 9.100 / 58. 9.100 libavfilter 7. 58.102 / 7. 58.102 libswscale 5. 6.100 / 5. 6.100 libswresample 3. 6.100 / 3. 6.100 libpostproc 55. 6.100 / 55. 6.100 Input #0, matroska,webm, from 'part1.mkv': Metadata: ENCODER : Lavf58.32.104 Duration: 00:00:44.00, start: 0.000000, bitrate: 189 kb/s Stream #0:0(eng): Video: h264 (High), yuv420p(progressive), 640x480 [SAR 9:16 DAR 3:4], 30 fps, 30 tbr, 1k tbn, 60 tbc (default) Metadata: title : Video ENCODER : Lavc58.56.101 libx264 DURATION : 00:00:44.000000000 Input #1, matroska,webm, from 'part2.mkv': Metadata: ENCODER : Lavf58.32.104 Duration: 00:01:22.07, start: 0.000000, bitrate: 113 kb/s Stream #1:0: Video: h264 (High), yuv420p(progressive), 640x240 [SAR 9:16 DAR 3:2], 30 fps, 30 tbr, 1k tbn, 60 tbc (default) Metadata: ENCODER : Lavc58.56.101 libx264 DURATION : 00:01:22.066000000 Input #2, matroska,webm, from 'part3.mkv': Metadata: ENCODER : Lavf58.32.104 Duration: 00:00:42.03, start: 0.000000, bitrate: 405 kb/s Stream #2:0: Video: h264 (High), yuv420p(progressive), 640x720 [SAR 9:16 DAR 1:2], 30 fps, 30 tbr, 1k tbn, 60 tbc (default) Metadata: ENCODER : Lavc58.56.101 libx264 DURATION : 00:00:42.033000000 Input #3, matroska,webm, from 'part4.mkv': Metadata: ENCODER : Lavf58.32.104 Duration: 00:00:21.00, start: 0.000000, bitrate: 298 kb/s Stream #3:0: Video: h264 (High), yuv420p(progressive), 640x240 [SAR 9:16 DAR 3:2], 30 fps, 30 tbr, 1k tbn, 60 tbc (default) Metadata: ENCODER : Lavc58.56.101 libx264 DURATION : 00:00:21.000000000 Input #4, matroska,webm, from 'part5.mkv': Metadata: ENCODER : Lavf58.32.104 Duration: 00:00:16.00, start: 0.000000, bitrate: 169 kb/s Stream #4:0(eng): Video: h264 (High), yuv420p(progressive), 640x480 [SAR 9:16 DAR 3:4], 30 fps, 30 tbr, 1k tbn, 60 tbc (default) Metadata: title : Video ENCODER : Lavc58.56.101 libx264 DURATION : 00:00:16.000000000

1 Ответ

1 голос
/ 24 октября 2019

Если вы хотите сохранить 9:16 SAR для входов:

ffmpeg -i part1.mkv -i part2.mkv -i part3.mkv -i part4.mkv -i part5.mkv -filter_complex "[0]scale=640:480:force_original_aspect_ratio=decrease,pad=640:480:(ow-iw)/2:(oh-ih)/2,setsar=9/16[0v];[1]scale=640:480:force_original_aspect_ratio=decrease,pad=640:480:(ow-iw)/2:(oh-ih)/2,setsar=9/16[1v];[2]scale=640:480:force_original_aspect_ratio=decrease,pad=640:480:(ow-iw)/2:(oh-ih)/2,setsar=9/16[2v];[3]scale=640:480:force_original_aspect_ratio=decrease,pad=640:480:(ow-iw)/2:(oh-ih)/2,setsar=9/16[3v];[4]scale=640:480:force_original_aspect_ratio=decrease,pad=640:480:(ow-iw)/2:(oh-ih)/2,setsar=9/16[4v];[0v][1v][2v][3v][4v]concat=n=5:v=1:a=0[v]" -map "[v]" output.mp4

Но ваши входные данные выглядят растянутыми, поэтому я предполагаю, что вы хотите SAR 1: 1:

ffmpeg -i part1.mkv -i part2.mkv -i part3.mkv -i part4.mkv -i part5.mkv -filter_complex "[0]scale=640:480:force_original_aspect_ratio=decrease,pad=640:480:(ow-iw)/2:(oh-ih)/2,setsar=1[0v];[1]scale=640:480:force_original_aspect_ratio=decrease,pad=640:480:(ow-iw)/2:(oh-ih)/2,setsar=1[1v];[2]scale=640:480:force_original_aspect_ratio=decrease,pad=640:480:(ow-iw)/2:(oh-ih)/2,setsar=1[2v];[3]scale=640:480:force_original_aspect_ratio=decrease,pad=640:480:(ow-iw)/2:(oh-ih)/2,setsar=1[3v];[4]scale=640:480:force_original_aspect_ratio=decrease,pad=640:480:(ow-iw)/2:(oh-ih)/2,setsar=1[4v];[0v][1v][2v][3v][4v]concat=n=5:v=1:a=0[v]" -map "[v]" output.mp4
...