我试图合并/连接多个视频与声音顺序到一个视频中,仅使用R,(我不想在命令行中使用ffmpeg,因为项目的其余部分不需要它,我宁愿不带它在这个阶段)。
我的代码如下所示:
dir<-"C:/Users/Admin/Documents/r_programs/"
videos<-c(
paste0(dir,"video_1.mp4"),
paste0(dir,"video_2.mp4"),
paste0(dir,"video_3.mp4")
)
#encoding
av_encode_video(
videos,
output=paste0(dir,"output.mp4"),
framerate=30,
vfilter="null",
codec="libx264rgb",
audio=videos,
verbose=TRUE
)
它几乎工作,输出文件是一个mp4包含3个视频顺序一个接一个,但音频只来自3个视频中的第一个,然后它切断。
视频是什么并不重要。我用我正在使用的视频重新创建了这个问题,甚至从YouTube上随机下载了3个1080p 30fps的视频。
感谢任何帮助&提前谢谢你。
体验行为(只有一个音频源)正是它的设计方式。在C源代码中,您可以确定encode_video
只接受audio
的第一个条目,而忽略其他条目。总的来说,ropensci/av
atm对音频的支持很差,因为它的主要关注点是将R图转换为视频。也许,你可以在GitHub上提交一个特性请求问题。
同时,为什么不直接使用base.system
函数从R调用FFmpeg ?假设使用concat
demuxer +流复制(-c copy
)具有相同的格式,这可能会大大加快您的过程。据我所知,av
库不支持此功能。(如果格式不同,您需要使用concat
过滤器,这也在上面的链接中解释。)