1

这是可能的,我怎样才能实时嵌入两个视频,以便像 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++ 中完成,也没有问题。并且有一些工具可以做到这一点?

4

1 回答 1

0

视频文件格式没有#include指令或任何此类...

我可以想出几种解决您问题的方法。一个是,如果您的播放器支持,则为它提供播放列表而不是第一个媒体的 URL。

如果播放器不支持播放列表,我会使用另一种方法,它是从拼接在一起的两个视频创建一个新的媒体文件。如果您使用的媒体格式是 MP4,您可能需要离线创建组合视频,因为实时创建 MP4 非常复杂(MP4 文件的标题包含文件其余部分的非常详细的索引,因此大多数 MP4 编写器仅在写入所有视频数据后才写入标头)。但是离线,这很简单,你可以使用 ffmpeg 或 VLC 之类的工具来做到这一点。如果两个视频都是由同一个编码器以相似的参数编码,则联合视频文件的创建速度非常快,因为您不需要重新编码(可以使用ffmpeg -vcodec copy -acodec copy)。以下是与 ffmpeg 连接的说明:ffmpeg FAQ

于 2012-11-18T07:25:30.443 回答