FFMPEG:尽管中间音频块已损坏,但仍以精确的时间提取音频

FFMPEG:尽管中间音频块已损坏,但仍以精确的时间提取音频,ffmpeg,video-processing,Ffmpeg,Video Processing,我有一个全自动的工具链,它首先连接视频块并调整用户事件。 这第一步使用第三方软件,我无法解决那里的问题。 在随后的过程中,我从视频中提取音频。有时中间有损坏的音频块。FFMPEG在提取时忽略损坏的部分。所以我得到了一个更短的音频(链接的事件取决于组织a/V的确切长度)。如果它只发生在最后,这将不是一个大问题,我知道如何将它放在那里,但在随机的位置,我没有在文档中找到一个选项来完成这项工作。 唯一有效的解决方案是(我知道相当脏)将视频转换为另一个包含已删除视频流的视频容器,并将文件重命名为MP3/

我有一个全自动的工具链,它首先连接视频块并调整用户事件。 这第一步使用第三方软件,我无法解决那里的问题。 在随后的过程中,我从视频中提取音频。有时中间有损坏的音频块。FFMPEG在提取时忽略损坏的部分。所以我得到了一个更短的音频(链接的事件取决于组织a/V的确切长度)。如果它只发生在最后,这将不是一个大问题,我知道如何将它放在那里,但在随机的位置,我没有在文档中找到一个选项来完成这项工作。 唯一有效的解决方案是(我知道相当脏)将视频转换为另一个包含已删除视频流的视频容器,并将文件重命名为MP3/AAC。它在windows/Android上运行,但所有Mac浏览器都没有播放它

-filter\u complex-discard看起来很有希望,但我没有找到任何正确语法的好例子。 我发现一个Adobe工具可以正确地完成这项工作,所以我希望有一种方法也可以使用ffmpeg

General
Complete name                  : C:\tmp123\video.mp4
Format                         : MPEG-4
Format profile                 : Base Media
Codec ID                       : isom (isom/iso2/avc1/mp41)
File size                      : 57.8 MiB
Duration                       : 6 min 51 s
Overall bit rate               : 1 177 kb/s
Writing application            : Lavf58.26.100

Video
ID                             : 1
Format                         : AVC
Format/Info                    : Advanced Video Codec
Format profile                 : Baseline@L4
Format settings, CABAC         : No
Format settings, RefFrames     : 2 frames
Format settings, GOP           : M=1, N=30
Codec ID                       : avc1
Codec ID/Info                  : Advanced Video Coding
Duration                       : 6 min 51 s
Bit rate                       : 1 003 kb/s
Width                          : 1 920 pixels
Height                         : 1 080 pixels
Display aspect ratio           : 16:9
Frame rate mode                : Constant
Frame rate                     : 30.303 FPS
Color space                    : YUV
Chroma subsampling             : 4:2:0
Bit depth                      : 8 bits
Scan type                      : Progressive
Bits/(Pixel*Frame)             : 0.016
Stream size                    : 49.2 MiB (85%)

Audio
ID                             : 2
Format                         : AAC
Format/Info                    : Advanced Audio Codec
Format profile                 : LC
Codec ID                       : 40
Duration                       : 6 min 51 s
Bit rate mode                  : Constant
Bit rate                       : 168 kb/s
Channel(s)                     : 2 channels
Channel positions              : Front: L R
Sampling rate                  : 44.1 kHz
Frame rate                     : 43.066 FPS (1024 SPF)
Compression mode               : Lossy
Stream size                    : 8.22 MiB (14%)
Default                        : Yes
Alternate group                : 1

多亏了Gyan,我能够通过以下方式修复丢失的时间:

ffmpeg -i x.mp4 -y -vn -af aresample=async=1:first_pts=0:min_hard_comp=0.01 -acodec libfdk_aac x.aac
但是我有很多音频剪辑。Gyan建议改为使用“async=3072”,但它对我不起作用。剪辑仍然存在。我玩弄了其他价值观,min_hard_comp完成了这项工作。将其设置为0.2而不是0.01后,剪裁消失。生成的音频现在无法100%播放,但对于6:51分钟的视频,已将其从>1:30分钟缩减为30分钟:

ffmpeg -i video.mp4 -y -vn -af aresample=async=1:first_pts=0:min_hard_comp=0.2  audioout1.mp3
Thx Gyan