gpt4 book ai didi

FFMPEG队列输入及时向后

转载 作者:行者123 更新时间:2023-12-04 23:10:01 24 4
gpt4 key购买 nike

我正在尝试合并两个音频文件,并延迟第二个。这是我的命令

ffmpeg -i RTb295d0534191e1acb22a45bb971a12e6.mka -i RT103bfe5f4b129860f69cd8e820f3a10b.mka -filter_complex "[1:a]adelay=13500s:all=1[apad]; [0:a][apad]amix=inputs=2:weights=1|1[aout]" -map [aout] combined_audio.mka
这是我得到的输出,它导致了第二个音频延迟 5 小时 45 分钟而不是 3 小时 45 分钟的问题
 ffmpeg -i RTb295d0534191e1acb22a45bb971a12e6.mka -i RT103bfe5f4b129860f69cd8e820f3a10b.mka -filter_complex "[1:a]adelay=13500s:all=1[apad]; [0:a][apad]amix=inputs=2:weights=1|1[aout]" -map [aout] combined_audio.mka
ffmpeg version n5.0-4-g911d7f167c-20220311 Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 11.2.0 (crosstool-NG 1.24.0.533_681aaef)
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-avisynth --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librist --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --disable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-version=20220311
libavutil 57. 17.100 / 57. 17.100
libavcodec 59. 18.100 / 59. 18.100
libavformat 59. 16.100 / 59. 16.100
libavdevice 59. 4.100 / 59. 4.100
libavfilter 8. 24.100 / 8. 24.100
libswscale 6. 4.100 / 6. 4.100
libswresample 4. 3.100 / 4. 3.100
libpostproc 56. 3.100 / 56. 3.100
Input #0, matroska,webm, from 'RTb295d0534191e1acb22a45bb971a12e6.mka':
Metadata:
encoder : GStreamer matroskamux version 1.16.2
creation_time : 2022-03-23T21:20:27.000000Z
Duration: 03:45:00.47, start: 0.291000, bitrate: 19 kb/s
Stream #0:0(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
Metadata:
title : Audio
Input #1, matroska,webm, from 'RT103bfe5f4b129860f69cd8e820f3a10b.mka':
Metadata:
encoder : GStreamer matroskamux version 1.16.2
creation_time : 2022-03-24T01:05:30.000000Z
Duration: 02:45:03.51, start: 13502.587000, bitrate: 5 kb/s
Stream #1:0(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
Metadata:
title : Audio
Stream mapping:
Stream #0:0 (opus) -> amix
Stream #1:0 (opus) -> adelay:default
amix:default -> Stream #0:0 (libvorbis)
Press [q] to stop, [?] for help
Output #0, matroska, to 'combined_audio.mka':
Metadata:
encoder : Lavf59.16.100
Stream #0:0: Audio: vorbis (oV[0][0] / 0x566F), 48000 Hz, stereo, fltp
Metadata:
encoder : Lavc59.18.100 libvorbis
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time231x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time184x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time189x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time223x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time275x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time245x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time213x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time209x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time208x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time204x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time199x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time193x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time185x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time181x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time178x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time177x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time176x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time169x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time167x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time163x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time146x
[libvorbis @ 00000229f8a7bbc0] Queue input is backward in time139x
size= 75141kB time=06:07:52.57 bitrate= 27.9kbits/s speed= 130x
video:0kB audio:70470kB subtitle:0kB other streams:0kB global headers:4kB muxing overhead: 6.628071%
混合在一起的音频文件 - https://www.easyupload.io/m/durisk
我该如何解决这个问题?

最佳答案

这些音频文件的根本问题似乎是频繁丢帧(每个包含 960 个音频样本)。有 的实例8117 秒 第一个文件中 2 个连续帧之间的间隙。因为 MKA 文件是在没有填充这些丢帧的情况下形成的,所以它们实际上是可变采样率流,同时标记为恒定采样率。这种差异使您的音频看起来比录制的要短,这解释了为什么您的输出通常比预期的要长得多,并且对您处理这些文件的尝试造成了严重破坏。
虽然 atm 我不知道 FFmpeg 是否提供了一种机制来修复/估计这些文件中的丢帧,但您可以通过以下方式蛮力/忽略丢帧:
混合

ffmpeg -i RTb295d0534191e1acb22a45bb971a12e6.mka \
-i RT103bfe5f4b129860f69cd8e820f3a10b.mka \
-filter_complex "[1:a]asetpts=NB_CONSUMED_SAMPLES/SR/TB,adelay=13500s:all=1[apad]; \
[0:a]asetpts=NB_CONSUMED_SAMPLES/SR/TB,[apad]amix=inputs=2:weights=1|1[aout]" \
-map [aout] combined_audio.mka
连续
看来您的过滤器图实际上只是通过将第二个流延迟第一个的持续时间来连接 2 个流。您可以改为执行以下操作:
ffmpeg -i RTb295d0534191e1acb22a45bb971a12e6.mka \
-i RT103bfe5f4b129860f69cd8e820f3a10b.mka \
-filter_complex "[1:a]asetpts=NB_CONSUMED_SAMPLES/SR/TB,[0a]concat=2:0:1[aout]; \
[0:a]asetpts=NB_CONSUMED_SAMPLES/SR/TB[0a]" \
-map [aout] combined_audio.mka
解释 asetpts过滤器用于完全忽略文件中有关输入过滤器图的帧时间的内容,并使用以下变量和公式重新计算每个帧的新 PTS:
  • NB_CONSUMED_SAMPLES处理的样本数量
  • SR :采样率(样本/秒)
  • TB : 时基(秒)
  • NB_CONSUMED_SAMPLES/SR/TB : 新的 PTS(起始 TB block 索引)

  • 视频流
    如果您的视频文件有同样的问题,您同样可以使用 setpts筛选:
    setpts=N/FR/TB
    填补缺失的帧
    aresample 可用于用零值样本(静音)填充缺失的帧。 ( a reference post 。你可以试试看每个 mka 文件会发生什么:
    ffmpeg -i RTb295d0534191e1acb22a45bb971a12e6.mka \
    -af "aresample=async=1 \
    patched_audio.mka
    注意:这将使流可能更长(低音?)嗡嗡声/哔哔声,使其无法收听。但是,您可能需要这样做才能将它们同步到视频。重采样器可以拉伸(stretch)周围的样本,因此这可能是您的解决方案。见 the documentation对于 async , min_comp , min_hard_comp , comp_duration , 和 max_soft_comp选项。

    关于FFMPEG队列输入及时向后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71708414/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com