首页 > 解决方案 > FFMPEG将具有相同编码的MP4视频组合起来不起作用,只显示第一个视频

问题描述

我的 mp4 视频具有相同的编码:h264

我知道是因为我在他们身上运行了这个命令:

ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 a.mp4

现在我使用以下命令将它们组合起来:

ffmpeg -loglevel quiet -f concat -safe 0 -i video-list.txt -c copy video-final.mp4

我的 video-list.txt 文件如下所示:

file 'a.mp4'
file 'b.mp4'
file 'c.mp4'

现在,作为组合视频的 video-final.mp4 实际上的持续时间等于其组成视频的总和,并且大小也相当大。问题是当我播放视频时,它只播放第一个视频然后停止。

这里发生了什么?任何见解将不胜感激。

我看过:ffmpeg:组合/合并多个 mp4 视频不起作用,输出仅包含第一个视频,并且建议的答案是我正在使用的那些:具体来说,从包含组件视频的文本文件中连接。

标签: videoffmpeg

解决方案


示例文件中的音频流不匹配。

输出1.mp4:

Audio: aac (LC) (mp4a / 0x6134706D), 24000 Hz, mono, fltp, 112 kb/s (default)

视频静态final.mp4:

Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 155 kb/s (default)

采样率和通道布局不匹配。其中一个应转换为与另一个匹配。

对于音频,编解码器 ( aac)、编解码器配置文件 ( LC)、采样率或频率 ( 48000 Hz)、通道布局 ( stereo) 和样本格式 ( fltp) 应匹配。比特率并不重要。

Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p, 640x360, 1365 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)

对于视频,编解码器 ( h264)、配置文件 ( High 4:4:4 Predictive)、像素格式 ( yuv444p) 和分辨率 ( 640x360) 应该匹配。如果时间刻度(12800 tbn)不同,则播放速度将不正确,总时长将错误。音频同步也将丢失。


推荐阅读