gpt4 book ai didi

video - 无法在 WhatsApp 上分享一些 FFMPEG 编码的视频

转载 作者:行者123 更新时间:2023-12-04 23:33:59 24 4
gpt4 key购买 nike

我正在使用 FFMPEG 将视频拼接到另一个视频。但是,我观察到这些视频中的一些没有在 WhatsApp 上共享,并带有消息“ 无法发送此视频。请选择其他视频并重试 ”。
我正在使用以下命令进行拼接:

ffmpeg -y -i <input1> -i
<input2> -filter_complex "color=black:input1Width x input1Height:d=(input1time + input2time -1)[base]
;[0:v]setpts=PTS-STARTPTS[v0];[1:v] scale = iw * min(input1Width / iw\\, input1Height / ih):ih * min(input1Width/iw\\,input1Height/ih),
pad=input1Width:input1Height:(input1Width-iw*min(input1Width/iw\\,input1Height/ih))/2:(input1Height -
ih*min(input1Width/iw\\,input1Height/ih))/2,setsar=1:1,format=yuva420p,fade=in:st=0:d=1.0:alpha=1,
setpts=PTS-STARTPTS+((input1Time - 1)/TB)[v1];[base][v0]overlay[tmp]; [tmp][v1]overlay,format=yuv420p[fv];
[0:a][1:a]acrossfade=d=1[fa]" -map [fv] -map [fa] -crf 23 -c:v libx264 -b:v 300K
-preset slow outputvideo.mp4
这里: input1Width - 输入 1 视频的宽度,input1Height - 输入 2 视频的高度。
有趣的是,直接在终端上运行此命令会生成一个在媒体播放器上正确播放的文件,我可以在包括 WhatsApp 在内的平台之间共享它。
但是,当从 java 代码触发时,相同的命令会在大小、比特率方面产生类似的文件(与直接执行时产生的几乎相同)。我正在使用 ProcessBuilder 从 java 运行相同的命令,例如:
ProcessBulider stitchVideoCommandArray = new ProcessBuilder(
"ffmpeg", "-y",
"-i", <input1>,
"-i", <input2>,
"-filter_complex", "color=black:" + String.valueOf(width) + "x" + String.valueOf(height) + ":d=" +
String.valueOf(originalVideoTime + ASSET_VIDEOSTREAM_DURATION - CROSS_FADE_TIME_DURATION) + "[base];" +
"[0:v]setpts=PTS-STARTPTS[v0];[1:v]scale=iw*" + String.valueOf(minMultiplicable) + ":ih*" + String.valueOf(minMultiplicable) +
",pad=" + String.valueOf(width) + ":" + String.valueOf(height) + ":(" + String.valueOf(width) + "-iw*" + String.valueOf(minMultiplicable) + "/2" +
"):(" + String.valueOf(height) + "-ih*" + String.valueOf(minMultiplicable) + "/2)" + ",fade=in" +
":st=0:d=" + String.valueOf(CROSS_FADE_TIME_DURATION) + ":alpha=1,setpts=PTS-STARTPTS+((" + String.valueOf(originalVideoTime - CROSS_FADE_TIME_DURATION) +
")/TB)[v1];[base][v0]overlay[tmp];[tmp][v1]overlay,format=yuv420p[fv];[0:a][1:a]acrossfade=d=1[fa]",
"-map", "[fv]",
"-map", "[fa]",
"-c:v", MP4Transcode.MP4VideoStreamEncoder.H264.videoEncoders,
"-b:v", "300K",
"-c:a", MP4Transcode.MP4AudioStreamEncoders.AAC.audioEncoders,
"-b:a", "128K",
"-crf", String.valueOf(constantRateFactor),
"-preset", presetRequired,
outputVideoPath
);
然后我使用这个对象来执行命令

command.start()


并等待退出值使用

command.waitFor()


这也会产生一个文件,我可以在媒体播放器上正确播放该文件,但未能成功在 WhatsApp 上共享视频。
此外,通过从 java 执行上述 FFmpeg 命令生成的文件生成的媒体文件的响度略有增加。
我无法确定是视频特定问题还是其他问题。它只发生在少数随机视频上。
以下是有问题的视频链接:
输入 1 - input1Link
输入 2 - inpt2Link
编辑 1:
要添加,请添加 -loglevel debug in java 命令需要很长时间,我什至 5-6 分钟都没有看到它响应。但是,直接从终端使用它会在处理后快速返回。

最佳答案

如果使用 EBU R.128 过滤器对视频的音频流进行标准化,WhatsApp 似乎无法处理这样的视频。只有在这种情况下,发送失败。就我而言,其中一个输入视频具有 EBU R.128 标准化。

关于video - 无法在 WhatsApp 上分享一些 FFMPEG 编码的视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47064543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com