【问题标题】:Is there a way to use libvlc / libvlcsharp to non interactively transcode or compress a video on iOS?有没有办法使用 libvlc / libvlcsharp 在 iOS 上进行非交互式转码或压缩视频?
【发布时间】:2021-03-31 13:29:58
【问题描述】:

我正在使用 libVLCSharp(Xamarin 绑定到 libvlc 库)进行视频播放。我正在添加一项功能,将下载的视频转码/压缩到本地文件系统。通常我会为此使用mobile-ffmpeg,但由于内部VLC使用具有不同构建配置的ffmpeg,ffmpeg转码不起作用 - android它会使应用程序崩溃,ios在尝试时返回“处理输入时发现无效数据”错误消息兑换。当卸载 libvlcsharp 并且只使用一个 ffmpeg 库的实例时,代码可以正常工作。

所以,我正在寻找 Xamarin.iOS 的视频压缩/转码选项。

我查看了 libvlcsharp 的文档,听起来我们可以转码,但如何做到这一点有点含糊:

https://github.com/videolan/libvlcsharp/blob/3.x/docs/how_do_I_do_X.md

如何进行转码? 与您从 CLI 执行此操作的方式非常相似。阅读 https://wiki.videolan.org/Transcode/ 并使用 Media.AddOption 尝试媒体选项。

就我而言,我想在应用程序的后台以非交互方式 / 进行转码。命令行界面中有一个“虚拟”选项可以执行此操作,所以我想知道我们如何从 libvlc / libvlcsharp 执行此操作。

到目前为止,我在这些文档中的代码如下所示:

using(var vlc = new LibVLC())
{
    Media media = new Media(vlc, source, FromType.FromLocation);

media.AddOption($":sout=#transcode{{vcodec=h264,venc=x264{{cfr=40}},vb=2048,scale=auto,acodec=mp4a,ab=96,channels=2,samplerate=44100}}:std{{access=file,mux=ts,dst={destination}}}");

    media.AddOption("dummy");

    //How do I start the transcoding non interactively??
}

【问题讨论】:

    标签: xamarin xamarin.ios libvlc libvlcsharp mobile-ffmpeg


    【解决方案1】:

    正如libvlc discord服务器上的回复,当你在转码一个视频时,它根本不显示,你不需要创建一个VideoView,一个MediaPlayer就足够了。 剩下的就是找到正确的转码选项,而您已经找到了正确的 wiki 页面。

    【讨论】:

      猜你喜欢
      • 2011-11-08
      • 2023-03-29
      • 2012-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 1970-01-01
      • 2012-02-22
      相关资源
      最近更新 更多