我需要通过API在youtube上嵌入视频,为了让这个过程更加实用,我想在上传到youtube之前,把我的视频和视频合并起来。然而,视频有不同的分辨率和不同的特点,所以我发现的解决方案留下了最终的视频音频或流问题。
最后,我找到了以下解决方案,效果很好,但速度非常慢,请参阅:
$code1 = 'ffmpeg -i vinheta.mp4 -qscale 0 vinheta.mpg';
$code2 = 'ffmpeg -i movie2.mp4 -qscale 0 movie2.mpg';
$code3 = 'cat vinheta.mpg movie2.mpg | ffmpeg -f mpeg -i - -qscale 0 -vcodec mpeg4';
system($code1);
system($code2);
system($code3);该解决方案工作良好,不间断,但它确实需要很长时间,有些视频需要2个小时的转换,然后视频是非常沉重的。
我在几个地方研究过它,测试了各种各样的代码,这是我发现的唯一一种,不管分辨率如何,最终的视频都不会出现音频或视频问题。
另一个令人感兴趣的解决办法如下:
$code1 = "ffmpeg -i vinheta.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts temp1.ts";
$code2 = "ffmpeg -i 4.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts temp2.ts";
// now join
$code3 = "ffmpeg -i \"concat:temp1.ts|temp2.ts\" -c copy -bsf:a aac_adtstoasc output.mp4";
system($code1);
system($code2);
system($code3);输出文件工作得非常好。但只在我的电脑上。当我把它发送到youtube时,第二个视频的音频一直在剪切。
有没有更简单、更轻的方法来做到这一点而不破坏我的最后视频?
发布于 2022-01-08 21:15:31
关于在youtube上剪切音频的第二段代码,我只是通过更改编解码器来解决它。所以现在它运行得很好,如下所示:
$code1 = "ffmpeg -i vinheta.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts temp1.ts";
$code2 = "ffmpeg -i 4.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts temp2.ts";
// now join
$code3 = "ffmpeg -i \"concat:temp1.ts|temp2.ts\" -c copy -acodec aac output.mp4";
system($code1);
system($code2);
system($code3);https://stackoverflow.com/questions/70610609
复制相似问题