You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FFmpeg合并音视频无声音输出求助(音频时长超视频,--shortest参数无效)

FFmpeg合并音视频无声音输出求助(音频时长超视频,--shortest参数无效)

各位大佬好,我最近在用FFmpeg处理一个音视频合并需求:把比视频长约一分钟的音频裁剪到和视频时长一致,然后合并成MP4文件。现在遇到了一个棘手的问题:FFmpeg能正常生成output.mp4文件,单独播放原音频和原视频都完全正常,但合并后的输出文件就是没有声音!

更奇怪的是,FFmpeg执行全程没有抛出任何错误提示,我用Linux下的VLC和MPlayer这两款播放器测试,都听不到声音,不过它们分别输出了一些日志信息,我贴出来供大家参考:

VLC播放日志

[00007f12500065a0] glconv_vaapi_drm gl error: vaInitialize: unknown libva error
libva info: VA-API version 1.16.0
libva info: Trying to open /usr/lib64/dri/iHD_drv_video.so
libva info: va_openDriver() returns -1
[00007f12500065a0] glconv_vaapi_drm gl error: vaInitialize: unknown libva error
[00007f12500065a0] gl gl: Initialized libplacebo v4.208.0 (API v208)
Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory
[00007f12500065a0] gl gl: Initialized libplacebo v4.208.0 (API v208)
[h264 @ 0x7f126cdf32c0] get_buffer() failed
[h264 @ 0x7f126cdf32c0] thread_get_buffer() failed
[h264 @ 0x7f126cdf32c0] decode_slice_header error
[h264 @ 0x7f126cdf32c0] no frame!
[h264 @ 0x7f126ce10040] get_buffer() failed
[h264 @ 0x7f126ce10040] thread_get_buffer() failed
[h264 @ 0x7f126ce10040] decode_slice_header error
[h264 @ 0x7f126ce10040] no frame!
[h264 @ 0x7f126ce2cdc0] get_buffer() failed
[h264 @ 0x7f126ce2cdc0] thread_get_buffer() failed
[h264 @ 0x7f126ce2cdc0] decode_slice_header error
[h264 @ 0x7f126ce2cdc0] no frame!
[h264 @ 0x7f126cdf32c0] get_buffer() failed
[h264 @ 0x7f126cdf32c0] thread_get_buffer() failed
[h264 @ 0x7f126cdf32c0] decode_slice_header error
[h264 @ 0x7f126cdf32c0] no frame!
[h264 @ 0x7f126ce10040] get_buffer() failed
[h264 @ 0x7f126ce10040] thread_get_buffer() failed
[h264 @ 0x7f126ce10040] decode_slice_header error
[h264 @ 0x7f126ce10040] no frame!
[h264 @ 0x7f126ce2cdc0] get_buffer() failed
[h264 @ 0x7f126ce2cdc0] thread_get_buffer() failed
[h264 @ 0x7f126ce2cdc0] decode_slice_header error
[h264 @ 0x7f126ce2cdc0] no frame!

MPlayer播放日志

Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
[aac @ 0x7fb5c71d39e0]Multiple frames in a packet.
AUDIO: 48000 Hz, 2 ch, floatle, 2.3 kbit/0.07% (ratio: 284->384000)
Selected audio codec: [ffaac] afm: ffmpeg (FFmpeg AAC (MPEG-2/MPEG-4 Audio))
==========================================================================
AO: [pulse] 48000Hz 2ch floatle (4 bytes per sample)
Starting playback...
[aac @ 0x7fb5c71d39e0]channel element 0.0 duplicate
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
VO: [xv] 1092x614 => 1092x614 Planar YV12
A:  10.4 V:  10.4 A-V:  0.000 ct: -0.021   0/  0 12%  2%  0.9% 1 0
Exiting... (Quit)

我仔细看了这些日志,发现VLC的错误都集中在视频渲染相关的库(比如libplacebo、libva)上,和音频没什么关系;MPlayer虽然显示音频解码器加载成功,甚至能识别出音频的参数,但实际播放就是没声音。

我本来以为用--shortest参数就能让FFmpeg自动把音频裁剪到视频的长度再合并,但现在看来可能哪里出了问题?有没有大佬能帮我分析下,FFmpeg为什么会出现这种混流后无声音的情况?

备注:内容来源于stack exchange,提问作者Jack Assim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 12:18:10