两个视频用DSPACK播放零切换???(分不够再加)(20分)

  • 主题发起人 主题发起人 lqcros
  • 开始时间 开始时间
L

lqcros

Unregistered / Unconfirmed
GUEST, unregistred user!
我想问一下,如果两个视频用dspack播放零切换,中间不能有黑场什么的???
先播放一个视频,在第一个视频播放完时,接着播放第二个,希望高手进来探讨一下哈。
 
就算是马上切过来,可是每个片子开头都有一点是空白的,也要显黑一下,
就好比磁带一样,每个带子开头都有点空白的.
 
应该不会有的哈,如果前面有黑的话,(可以用视频剪辑软件只能剪了哈),也可以用IMediaSeeking跳过前面一点哈,
比如设置入点(开始播放位置),出点(结束播放位置),
切換时就不应该有带子的问题了哈。

只是怎么才能实现切換两个视频,一个视频(A)播放起,另一个视频(B)要准备播放,在切換时,另一个视频(B)播放,前一个视频(A)停止,准备另一个视频(C)哈
 
其实上面这个问题,我在一年前,就已解决了,只不过视频切換时,由于是视频,有一点小停顿。
大家帮忙我解决一下这个小停顿,分可以再加300分

我以前用的方法是:
在窗体上使用两个TFrame
一个TFrame上放一个TVideoWindow
再放一个TFilterGraph,
然后在

FilterGraph1.RenderFile(StringToOleStr('1.mpg'));
//准备播放的视频,必须是播一下就暂停,不然就有可能会弹出VideoWindow窗口(经验哈,我被这个问题小小的捉弄了一下,因为他弹一个窗口出来,又不播还把再播的窗口挡住)
FilterGraph1.Play;

FilterGraph1.Pause;



Frame1.Visable := false;


FilterGraph2.RenderFile(StringToOleStr('2.mpg'));
FilterGraph2.Play;
FilterGraph2.Pause;
Frame2.Visable := true;
FilterGraph2.Play;
这里第二个开始播,播完时候再播FilterGraph1,

切換时
FilterGraph1.Play;
FilterGraph2.Stop;
Frame2.Visable := false;
Frame1.Visable := true;


提供一个思路哈(预播3秒)
如果要不停顿的话,可以这样,判断前一个视频播放到什么地方了,
如果到了最后3秒的话,就提前关闭声音播放后一个视频Filter2.Play;不切換,
在第一个视频到了尾的时候,再切换(把声音也打开)不会有停顿了,
不过我不知道怎么判断最后3秒。
 
我晕哟,怎么没得人回答呢?是不是问题问得不够深度,还是问题太够深度了,你们回答不起,如果嫌分不够,可以商量哈,再加三
 
AVI的我就帮你解决,如果不是,我不会。
 
/to 天真:請问你AVI怎么解决哈。
 
如果影片大小不致,编解码器不一致那我就不会了。
 
影片大小不致,编解码器一致那怎么实现哈

我只是要得到精确的时间而已,能不能得到时间戳
 
的确用下面这一句添加到Timer的事件Timer1Timer里,可以得到播出的位置及总长
(filtergraph1 as IMediaSeeking).GetPositions(i,j);

不过不是很精确哈。

如果由TFilterGraph用时间戳通知就好了哈,哪个知道怎么得到时间戳
 
// 得到时间戳
(filtergraph1 as IMediaFilter).GetSyncSource(ReferenceClock);
ReferenceClock.GetTime(i);
Label2.Caption := TimeToStr(RefTimeToMiliSec(i) / MiliSecPerDay);
 
多人接受答案了。
 
后退
顶部