【问题标题】:VLCJ save mediaplayer captureVLCJ 保存媒体播放器捕获
【发布时间】:2016-06-18 18:12:58
【问题描述】:

我正在使用 VLCJ,我希望使用 mediaPlayer.playMedia(); 保存我正在播放的视频剪辑;到我的桌面。我知道这可以通过使用 :sout 字符串设置媒体选项来完成,但我不知道要设置哪些选项,而且我无法理解网络上的示例选项字符串。有人可以通过解释以下 :sout 选项字符串来帮忙吗?

String[] options = {":sout=#transcode{vcodec=mp4v,vb=4096,scale=1,acodec=mpga,ab=128,channels=2,samplerate=44100}:duplicate{dst=file{dst=" + fileName + "},dst=display}", ":input-slave=alsa://hw:0,0"};

我只需要一个使用 fileName 目标创建 mp4 视频的选项数组。这些选项对我来说失败/错误。

此外,VLCJ 似乎会因此错误而丢掉大量帧

avcodec 解码器错误:延迟视频超过 5 秒 -> 丢帧

通过使用这些选项

String[] options = {":sout=#transcode{vcodec=mp1v,vb=2048,scale=1,acodec=mpga,ab=128,channels=2,samplerate=44100}:duplicate{dst=file{mux=mpeg1,dst=" + fileName + "},dst=display}", ":input-slave=dshow://hw:0,0" };

【问题讨论】:

  • 这些选项实际上与 vlcj 无关,而是 VLC 流/转码选项,所以我建议改为专注于 VLC 文档。可能您想保存原始流而不是对其进行转码。
  • 是的,我该怎么做。我正在考虑这样做而不是整个过程。我对 VLC 很陌生,做原始转储是我的第一意图。

标签: java capture vlcj


【解决方案1】:

要保存原始流,请在播放媒体时使用类似于以下内容的媒体选项:

String mrl = "your-streaming-mrl";
String[] opts = {"sout=#duplicate{dst=std{access=file,mux=raw,dst=output-file.ext}}"};

显然,您将“your-streaming-mrl”和“output-file.ext”替换为适当的内容。

然后:

mediaPlayer.playMedia(mrl, opts);

在您保存的文件准备好之前,您需要等待(收听)媒体播放器“完成”事件。

在您保存的文件准备好之前,您可能还需要在媒体播放器上显式调用release()

【讨论】:

  • 无论如何要说,将原始转储文件保存到文件中,但它正在播放的主文件永远不会完成,因为它一直在流式传输。现在第二个文件只是损坏了=[虽然非常感谢!
  • 我想如果你停止媒体播放器,等待停止的事件,然后释放媒体播放器,你应该没问题。不过,我不是 100% 确定。
猜你喜欢
  • 1970-01-01
  • 2016-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多