0

我在 iOS 和 Android 上使用 Xamarin libVLCSharp 播放器已经有一段时间了,它运行良好。我添加了转码功能,但由于某种原因,我的 libVLCSharp 代码可以在 Android 上正常转码(更改编解码器、比特率、fps),但 iOS(iPhone 12 pro、iOS 14.4.2)上相同的转码媒体选项不会产生与输入视频文件相比,输出视频文件的变化。我附上了我试图转码的示例视频文件。

这是我的 C# 代码(其中包含适用于 Android 的转码媒体选项,但不适用于 iOS):

    Core.Initialize();

    _vlc = new LibVLC();

    _player = new LibVLCSharp.Shared.MediaPlayer(_vlc);

    _media = new Media(_vlc, _source, FromType.FromPath);

    _media.AddOption ($":sout=#transcode{{vcodec=h264,vb=700000,acodec=aac,ab=96,channels=2,samplerate=44100,scodec=none}}:std{{access=file,mux=ts,dst={destination}}}");

    var result = _player.Play(_media);

任何有关为什么此转码命令与原始文件相比不会在输出媒体文件中产生任何更改的帮助或指示,将不胜感激!

iOS 日志文件 https://drive.google.com/file/d/1C0UGzE7hqCJYozTvubyK1BKWcZvG18VY/view

我用来测试转码的示例文件: https ://drive.google.com/file/d/1MvJKJnu2ii6XMANuWRkHLqmu78e9x03q/view

4

1 回答 1

2

尝试

$":sout=#transcode{venc={module=avcodec{codec=h264_videotoolbox}, vcodec=h264},venc={module=vpx{quality-mode=2},vcodec=VP80},samplerate=44100,soverlay}:file{dst={destination},mux=ts}"

随意删除不必要的选项,但根据我的发现,这个确切的字符串应该可以工作。

于 2021-04-26T01:41:16.150 回答