我有多个媒体文件可串联成一个视频文件。由不同的媒体类型组成,包括视频,音频和图像。最后,我使用FFMPEG将音频和图像转换为视频,然后将使用Elastic Transcoder将视频文件缝合/连接在一起。在创建代码转换器作业时,每当我将最初是FFMPEG转换为图像的输入视频按顺序放置为最后一个输入时,只要其原始持续时间> 5,它都会将最终输出中的曝光时间缩短5秒。 。仅在这种情况下会发生这种情况。
示例: (1)影片1-10秒 (2)图像1-10秒 (3)影片2-15秒 (4)图像2-20秒 输出:视频-40秒 (image2的持续时间或输出中的曝光减少到大约5s)
很显然,输入持续时间与输出持续时间之和不匹配。甚至在弹性代码转换器的Job结果中也有明确说明。
以为我在FFMPEG中设置了错误的转换设置,因此我更改了一些选项。进行一些更改并将将转换为视频(V1)的图像与要拼接(V2)的真实视频进行比较后,它们的设置几乎相同。在此,我使用ffmpeg -i myVideo.mp4
来检查其详细信息。它们仅在SAR,DAR,tbr和tbn上有所不同,我真的不知道它们的用途是什么。
已经检查了ffmpeg转换后转换后的图像的持续时间,它是准确的,只有在将其输入到弹性代码转换器并将其作为最后的输入之后,才会弄乱。
这是我的FFMPEG(图像到视频)转换命令:
ffmpeg -r 29.97 -i [input.jpg] -f lavfi -i anullsrc=r=48000:cl:stereo -t [duration] -acodec aac -vcodec libx264 -profile:v baseline -pix_fmt yuv420p -t [duration] -vf scale=854:480 -strict -2 [output.mp4]
预期结果应该是输出文件与其实际持续时间一致。
[ EDIT ]
这是我使用ffprobe filename
通过Elastic Transcoder播放的真实视频:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'clip2.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.71.100
Duration: 00:00:10.05, start: 0.042667, bitrate: 476 kb/s
Stream #0:0(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
Stream #0:1(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 854x480 [SAR 2136:2135 DAR 89:50], 341 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
Metadata:
handler_name : VideoHandler
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'image2.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.12.100
Duration: 00:02:10.03, start: 0.033333, bitrate: 130 kb/s
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 854x480 [SAR 1943:1004 DAR 829661:240960], 2636 kb/s, SAR 283440:146461 DAR 1181:343, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler