【发布时间】:2020-10-03 22:12:59
【问题描述】:
总结
- 上下文
- 我使用的软件
- 问题
-
结果
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
结果
实际结果
三件事:
ffmpeg进程无限循环:我必须手动停止ffmpeg进程
带有音乐的输出视频文件(当前正在生成,但仍会输出):它包含音频和视频。但是输出文件的长度等于音频的长度,而不是视频的长度。
以下输出日志:
ffmpeg 版本 4.2.2-1ubuntu1~18.04.sav0 版权所有 (c) 2000-2019 使用 gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04) 构建的 FFmpeg 开发人员
配置:--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-op encl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-共享 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 / 58. 8.100 libavfilter 7. 57.100 / 7. 57.100 libavresample 4. 0. 0 / 4. 0. 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,来自 'youtubed/my_youtube_video.webm':元数据: 编码器:Chrome 持续时间:N/A,开始:0.000000,比特率:N/A 流 #0:0(eng):视频:vp8、yuv420p(渐进式)、3200x1608、SAR 1:1 DAR 400:201、1k tbr、1k tbn、1k tbc(默认) 元数据: alpha_mode:1 输入流#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 流映射:流 #0:0 -> #0: 0 (vp8 (native) -> vp9 (libvpx-vp9)) 流 #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(渐进式)、3200x1608 [SAR 1:1 DAR 400:201]、q=-1--1、200 kb/s、1k fps , 1,000 吨, 1,000 待定(默认) 元数据: 阿尔法模式:1 编码器:Lavc58.54.100 libvpx-vp9 侧面数据: cpb:比特率最大/最小/平均:0/0/0 缓冲区大小:0 vbv_delay:-1 流 #0:1:音频:opus (libopus),48000 Hz,立体声,s16,96 kb/s 元数据: 编码器:Lavc58.54.100 libopus
预期结果
ffmpeg过程中没有无限循环
关于输出日志,我不知道应该是什么样子。
-
带有音频和视频的输出文件应该:
3.1。如果视频比音频长,则重复音频,直到它完全适合视频。音频可以被截断。
3.2。如果视频比音频短,则音频会被截断并完全适合视频。
3.3。如果视频和音频的长度相同,则音频完全适合视频。
如何重现此错误? (+ 所需数据)
-
下载以下文件(resp.音频和视频)(我必须每 24 小时刷新一次这些下载链接):
将它们移动到您选择的目录中。
打开您的 CLI,移至 adquat 目录并复制/粘贴/执行部分中给出的指令。问题(不要忘记根据步骤 2 指示适当的目录来最终修改此指令。)。
你会遇到我的问题。
我尝试修复这个错误的方法是什么?
没什么,因为我什至不明白为什么会出现这个错误。
问题
如何更正我的命令以便在 ffmpeg 过程中混合这些音频和视频流而没有任何无限循环,请记住我不知道它们的长度,并且必须重复音频以适应视频, 即使必须截断音频(在音频文件的最后重复的情况下必须截断,因为视频流刚刚结束)?
来源
来源是您可以在部分中找到的命令行。问题。
【问题讨论】: