问题描述
大家好,
我有一个问题,也许有人可以提供一些关于如何实施或什至可能的有用想法:
我想从 IP 摄像头录制 RTSP 流,我想在录制中添加一些文本信息和徽标,以便在播放时可以查看。
为此,我首先创建了一个 MediaPlayer 元素来连接到 IP 摄像头,复制到显示器上,然后通过 UDP 重播。
using (var stream01_view = new Media(libVLC,"rtsp://192.168.10.214:5554",FromType.FromLocation))
{
stream01_view.AddOption(
":sout=#duplicate{" +
"dst=display{noaudio}," +
"dst=std{access=udp,mux=ts,dst=:1234}");
stream01_view.AddOption(":sout-keep");
player.Play(stream01_view);
}
using (var stream01_record = new Media(libVLC,"udp://@:1234",FromType.FromLocation))
{
stream01_record.AddOption(":sout=#transcode{sfilter=marq}:file{mux=ts,dst=VideoMarqlogo.mp4}");
stream01_record.AddOption(":sout-keep");
recorder.Play(stream01_record);
}
调用类 MediaPlayer
方法 SetMarqueeInt
和 SetMarqueeString
没有给出预期的结果。
解决方法
感谢 mfkl 指出正确的方向。 所以,诀窍是:
stream01_record.AddOption(":sout=#transcode{ vcodec=h264,scale=0.75," +
"sfilter=marq{file='marq.txt',position=9}," +
"vfilter=logo{file='logo.png',position=6}}" +
":file{mux=ts,dst=VideoMarqLogo.mp4}");
虽然有点警告,这段代码是 CPU 密集型的。
我想知道是否有办法使用 GPU 编码来做到这一点。