0

我正在使用 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??
}
4

1 回答 1

0

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

于 2021-03-31T05:29:58.300 回答