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
相关产品推荐
相关产品推荐

