这是可能的,我怎样才能实时嵌入两个视频,以便像vlc这样的软件跟随流,就像只有一个视频一样,将第一个流传输到定义的时间,流传输第二个视频,然后恢复第一个视频直到完成? 换句话说,如果我有这样的视频流:
<?php
$fp=fopen("video.mp4","rb");
while(!feof($fp)){
echo fread($fp,8096);
}
fclose($fp);
?>
如何在同一个视频流中“包含”第二个视频?像:
<?php
$fp=fopen("video.mp4","rb");
$fp2=fopen("video2.mp4","rb");
while(!feof($fp)){
if($condition==1){
echo fread($fp2,8096);
}
else echo fread($fp,8096);
}
fclose($fp);
fclose($fp2);
?>
我在简单的php中完成了它,但如果我必须在C或C ++中这样做,那就没问题了。 还有一些工具可以做到这一点吗?
答案 0 :(得分:0)
视频文件格式没有#include
指令或任何此类指令......
我可以想到几个问题的解决方案。一个是,如果您的播放器支持,则为其提供播放列表而不是第一个媒体的网址。
如果播放器不支持播放列表,我将使用的另一个是从拼接在一起的两个视频创建新的媒体文件。如果你使用的媒体格式是MP4,你可能需要离线创建组合视频,因为MP4实时创建非常复杂(MP4文件的标题包含文件其余部分的非常详细的索引,所以大多数MP4编写器只在写完所有视频数据后才写入标题。但离线,很简单,你可以使用像ffmpeg或VLC这样的工具来做到这一点。如果两个视频都由具有相似参数的相同编码器编码,则联合视频文件的创建速度非常快,因为您不需要重新编码(您可以使用ffmpeg -vcodec copy -acodec copy
)。以下是与ffmpeg连接的说明:ffmpeg FAQ