Jar*_*ler 2 audio video ffmpeg
结果
4.1。实际结果
4.2. 预期成绩
我试图修复这个错误是什么?
如何重现此错误:提供所需数据的最小且可测试的示例
问题
来源
我想将音频 WAV 设置为视频 WEBM 的背景声音。视频可以比音频短或长。目前我在视频上添加音频,我不知道两个流的长度。音频必须重复直到视频结束(如果视频在音频的最后一次重复结束之前结束,则音频可以被截断)。
我使用 ffmpeg 版本 4.2.2-1ubuntu1~18.04.sav0。
ffmpeg 在处理以混合音频和视频时似乎进入无限循环。此外,当前生成的输出文件(包含视频和音频)的长度等于音频的长度,而不是视频的长度。
这个问题似乎是由这个命令行触发的:
ffmpeg -i directory_1/video.webm -stream_loop -1 -fflags +shortest -max_interleave_delta 50000 -i directory_2/audio.wav directory_3/video_and_audio.webm
Run Code Online (Sandbox Code Playgroud)
三件事:
ffmpeg进程的无限循环:我必须手动停止ffmpeg进程
带有音乐的输出视频文件(当前正在生成但仍然输出):它包含音频和视频。但是输出文件的长度等于音频的长度,而不是视频的长度。
以下输出日志:
ffmpeg 版本 4.2.2-1ubuntu1~18.04.sav0 版权所有 (c) 2000-2019 使用 gcc 7 构建的 FFmpeg 开发人员(Ubuntu 7.5.0-3ubuntu1~18.04)
配置:--prefix=/usr --extra-version='1ubuntu1~18.04.sav0'--toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping -- enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack--enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared libavutil 56. 31.100 / 56. 31.100 libavcodec 58. 54.100 / 58. 54.100 libavformat 58. 29.100 / 58. 29.100 libavdevice 58. 8.100 / .105 libavdevice 58. 8.100 / .104 libavcode .704 libavcodec .07.04 . 0 libswscale 5. 5.100 / 5. 5.100 libswresample 3. 5.100 / 3. 5.100 libpostproc 55. 5.100 / 55. 5.100 输入#0, matroska,webm, from 'youtubed/my_youtube_video.weburation:不适用,开始:0.000000,比特率:N/A Stream #0:0(eng):视频:vp8、yuv420p(渐进式)、3200x1608、SAR 1:1 DAR 400:201、1k tbr、1k tbn、1k tbc(默认)元数据:alpha_mode:1 Guessed输入流 #1.0 的布局:立体声输入 #1,wav,来自“tmp_music/original_music.wav”:
持续时间:00:00:11.78,比特率:1411 kb/s 流 #1:0:音频:pcm_s16le ([1][0][0][0] / 0x0001),44100 Hz,立体声,s16,1411 kb/ s 流映射:Stream #0:0 -> #0:0 (vp8 (native) -> vp9 (libvpx-vp9)) Stream #1:0 -> #0:1 (pcm_s16le (native) -> opus (libopus) )) 按 [q] 停止,[?] 寻求帮助 [libvpx-vp9 @ 0x5645268aed80] v1.8.2 [libopus @ 0x5645268b09c0] 未设置比特率。默认为 96000 bps。输出 #0,webm,到 'youtubed/my_youtube_video_with_music.webm':元数据:编码器:Lavf58.29.100 流 #0:0(eng):视频:vp9 (libvpx-vp9),yuv420p(progressive),3200x1608 [SAR 1 DAR 400:201], q=-1--1, 200 kb/s, 1k fps, 1k tbn, 1k tbc(默认)元数据:alpha_mode:1个编码器:Lavc58.54.100 libvpx-vp9侧数据:cpb:比特率最大值/最小值/平均值:
ffmpeg过程中没有无限循环
关于输出日志,我不知道它应该是什么样子。
带有音频和视频的输出文件应该:
3.1. 如果视频比音频长,则重复音频,直到它完全适合视频。音频可以被截断。
3.2. 如果视频比音频短,则音频会被截断并完全适合视频。
3.3. 如果视频和音频的长度相同,则音频完全适合视频。
下载以下文件(RESP。音频和视频)(我必须刷新这些下载链接,每24小时):
将它们移动到您选择的目录中。
打开您的 CLI,移动到 adequat 目录并复制/粘贴/执行部分中给出的指令。问题(不要忘记根据第 2 步,通过指示足够的目录来最终修改此指令。)。
你会面对我的问题。
没什么,因为我什至不明白为什么会出现这个错误。
如何在 ffmpeg 过程中更正我的命令以便在没有任何无限循环的情况下混合这些音频和视频流,请记住我不知道它们的长度,并且必须重复该音频以适合视频,即使音频必须被截断(在音频文件的最后重复的情况下必须被截断,因为视频流刚刚结束)?
源代码是您可以在Part 中找到的命令行。问题。
您的某些选项的位置是错误的。所有最短的相关选项都位于输出的前面。
ffmpeg -i directory_1/video.webm -stream_loop -1 -i directory_2/audio.wav -c:v copy -shortest -fflags +shortest -max_interleave_delta 100M directory_3/video_and_audio.webm
Run Code Online (Sandbox Code Playgroud)
除非您愿意,否则无需对视频进行转码。