不能在 Xamarin.Forms 项目中一起使用 Mobile FFmpeg 和 LibVLCSharp

如何解决不能在 Xamarin.Forms 项目中一起使用 Mobile FFmpeg 和 LibVLCSharp

我正在向 Xamarin Forms 项目添加视频流捕获功能。我正在尝试使用 VLC 的 LibVLCSharp.Forms (https://github.com/videolan/libvlcsharp) 包和 Mobile ffmpeg Xamarin 包装包 Laerdal.Xamarin.FFmpeg.* (https://github.com/Laerdal/Laerdal.Xamarin.FFmpeg.iOS)。但是,来自 VLC 的内部 ffmpeg 库与 ffmpeg 包装器相冲突,并且使用不同的标志构建,这些标志排除了我需要的功能

对于本机开发,您似乎可以使用 OTHER_LDFLAGS 文件中的 Pods-<Your App>.debug.xcconfig 标志配置首选库,但我不知道在何处使用 Xamarin.Forms 执行此操作。 来源:https://github.com/tanersener/mobile-ffmpeg/wiki/Using-Multiple-FFmpeg-Implementations-In-The-Same-iOS-Application

如何将 Xamarin iOS 版本配置为更喜欢移动 ffmpeg 库而不是 VLC ffmpeg 库?如果我能够使用移动 ffmpeg 库,会不会导致 VLC 出现问题?

这是我尝试使用 ffmpeg 运行命令时的日志消息。可以看到,ffmpeg的内部库路径引用了“vlc”:

FFmpegExecute: Command: -vsync 1 -i 'rtsp://wowzaec2demo.streamlock.net/vod/mp4:bigbuckbunny_115k.mov' -force_key_frames "expr: gte(t,n_forced * 2)" -strict experimental -f segment -segment_time 00:00:02 -segment_start_number 0 -reset_timestamps 1 -c:v copy -c:a copy '[path to temp]/tmp/VideoStream/%01d-record-temp.mp4'
Loaded mobile-ffmpeg-full-gpl-x86_64-4.4-lts-20200725
INFO: ffmpeg version v4.4-dev-416
INFO:  copyright (c) 2000-2020 the FFmpeg developers
INFO:
INFO:   built with Apple LLVM version 7.3.0 (clang-703.0.31)
INFO:   configuration: --sysroot=/Applications/Xcode-v7.3.1.app/Contents/Developer/Platforms/iPhonesimulator.platform/Developer/SDKs/iPhonesimulator9.3.sdk --prefix=/Users/taner/Projects/mobile-ffmpeg/prebuilt/ios-x86_64/ffmpeg --enable-version3 --arch=x86_64 --cpu=x86_64 --target-os=darwin --ar=/Applications/Xcode-v7.3.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar --cc=clang --cxx=clang++ --as='clang -arch x86_64 -target x86_64-ios-darwin -march=x86-64 -msse4.2 -mpopcnt -m64 -mtune=intel -DMOBILE_FFMPEG_X86_64 -Wno-unused-function -Wno-deprecated-declarations -fstrict-aliasing -dioS -DMOBILE_FFMPEG_LTS -DMOBILE_FFMPEG_BUILD_DATE=20200725 -isysroot /Applications/Xcode-v7.3.1.app/Contents/Developer/Platforms/iPhonesimulator.platform/Developer/SDKs/iPhonesimulator9.3.sdk -O2 -mios-simulator-version-min=9.3 -I/Applications/Xcode-v7.3.1.app/Contents/Developer/Platforms/iPhonesimulator.platform/Developer/SDKs/iPhonesimulator9.3.sdk/usr/include' --ranlib=/Applications/Xcode-v7.3.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib --strip=/Applications/Xcode-v7.3.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip --disable-neon --enable-cross-compile --enable-pic --disable-asm --enable-inline-asm --enable-optimizations --enable-swscale --enable-static --disable-shared --enable-small --disable-v4l2-m2m --disable-outdev=v4l2 --disable-outdev=fbdev --disable-outdev=audiotoolBox --disable-indev=v4l2 --disable-indev=fbdev --disable-openssl --disable-xmm-clobber-test --disable-debug --disable-neon-clobber-test --disable-programs --disable-postproc --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-sndio --disable-schannel --disable-securetransport --disable-xlib --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --disable-appkit --disable-alsa --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-gmp --enable-gnutls --enable-libmp3lame --enable-libass --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxml2 --enable-libopencore-amrnb --enable-libshine --enable-libspeex --enable-libwavpack --enable-libkvazaar --enable-libx264 --enable-gpl --enable-libxvid --enable-gpl --enable-libx265 --enable-gpl --enable-libvidstab --enable-gpl --enable-libilbc --enable-libopus --enable-libsnappy --enable-libsoxr --enable-libaom --enable-libtwolame --disable-sdl2 --enable-libvo-amrwbenc --enable-zlib --enable-audiotoolBox --enable-bzlib --enable-videotoolBox --disable-avfoundation --enable-iconv --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-gmp --enable-gnutls --enable-libmp3lame --enable-libass --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxml2 --enable-libopencore-amrnb --enable-libshine --enable-libspeex --enable-libwavpack --enable-libkvazaar --enable-libx264 --enable-gpl --enable-libxvid --enable-gpl --enable-libx265 --enable-gpl --enable-libvidstab --enable-gpl --enable-libilbc --enable-libopus --enable-libsnappy --enable-libsoxr --enable-libaom --enable-libtwolame --disable-sdl2 --enable-libvo-amrwbenc --enable-zlib --enable-audiotoolBox --enable-bzlib --enable-videotoolBox --disable-avfoundation --enable-iconv --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-gmp --enable-gnutls --enable-libmp3lame --enable-libass --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxml2 --enable-libopencore-amrnb --enable-libshine --enable-libspeex --enable-libwavpack --enable-libkvazaar --enable-libx264 --enable-gpl --enable-libxvid --enable-gpl --enable-libx265 --enable-gpl --enable-libvidstab --enable-gpl --enable-libilbc --enable-libopus --enable-libsnappy --enable-libsoxr --enable-libaom --enable-libtwolame --disable-sdl2 --enable-libvo-amrwbenc --enable-zlib --enable-audiotoolBox --enable-bzlib --enable-videotoolBox --disable-avfoundation --enable-iconv --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-gmp --enable-gnutls --enable-libmp3lame --enable-libass --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxml2 --enable-libopencore-amrnb --enable-libshine --enable-libspeex --enable-libwavpack --enable-libkvazaar --enable-libx264 --enable-gpl --enable-libxvid --enable-gpl --enable-libx265 --enable-gpl --enable-libvidstab --enable-gpl --enable-libilbc --enable-libopus --enable-libsnappy --enable-libsoxr --enable-libaom --enable-libtwolame --disable-sdl2 --enable-libvo-amrwbenc --enable-zlib --enable-audiotoolBox --enable-bzlib --enable-videotoolBox --disable-avfoundation --enable-iconv
INFO:   WARNING: library configuration mismatch
INFO:   avutil      configuration: --extra-ldflags='-arch x86_64 -v -Wl,-ios_simulator_version_min,8.4 -L/Users/Martz/Projects/vlckit/libvlc/vlc/contrib/iPhone-x86_64-apple-darwin14-x86_64/lib -Wl,8.4' --cc=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang --pkg-config=pkg-config --disable-doc --disable-encoder=vorbis --disable-decoder=opus --enable-libgsm --disable-decoder=mlp --disable-demuxer=mlp --disable-parser=mlp --disable-debug --disable-avdevice --disable-devices --disable-avfilter --disable-filters --disable-protocol=concat --disable-bsfs --disable-bzlib --disable-libvpx --disable-avresample --enable-bsf=vp9_superframe --disable-swresample --disable-iconv --disable-avisynth --disable-nvenc --disable-linux-perf --disable-securetransport --enable-libopenjpeg --enable-libmp3lame --enable-cross-compile --disable-programs --arch=x86_64 --target-os=darwin --disable-lzma --cpu=core2 --enable-pic --extra-ldflags='-arch x86_64 -miphoneos-version-min=8.4 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhonesimulator.platform/Developer/SDKs/iPhonesimulator13.2.sdk -arch x86_64 -O3 -g -miphoneos-version-min=8.4 -arch x86_64 -miphoneos-version-min=8.4 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhonesimulator.platform/Developer/SDKs/iPhonesimulator13.2.sdk -arch x86_64 -O3 -g -miphoneos-version-min=8.4 -I/Users/Martz/Projects/vlckit/libvlc/vlc/contrib/iPhone-x86_64-apple-darwin14-x86_64/include -g -O2 -I/Users/Martz/Projects/vlckit/libvlc/vlc/contrib/iPhone-x86_64-apple-darwin14-x86_64/include' --enable-pthreads --nm= --ar=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar --prefix=/Users/Martz/Projects/vlckit/libvlc/vlc/contrib/iPhone-x86_64-apple-darwin14-x86_64 --enable-static --disable-shared
INFO:   avcodec     configuration: --extra-ldflags='-arch x86_64 -v -Wl,8.4' --cc=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang --pkg-config=pkg-config --disable-doc --disable-encoder=vorbis --disable-decoder=opus --enable-libgsm --disable-decoder=mlp --disable-demuxer=mlp --disable-parser=mlp --disable-debug --disable-avdevice --disable-devices --disable-avfilter --disable-filters --disable-protocol=concat --disable-bsfs --disable-bzlib --disable-libvpx --disable-avresample --enable-bsf=vp9_superframe --disable-swresample --disable-iconv --disable-avisynth --disable-nvenc --disable-linux-perf --disable-securetransport --enable-libopenjpeg --enable-libmp3lame --enable-cross-compile --disable-programs --arch=x86_64 --target-os=darwin --disable-lzma --cpu=core2 --enable-pic --extra-ldflags='-arch x86_64 -miphoneos-version-min=8.4 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhonesimulator.platform/Developer/SDKs/iPhonesimulator13.2.sdk -arch x86_64 -O3 -g -miphoneos-version-min=8.4 -arch x86_64 -miphoneos-version-min=8.4 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhonesimulator.platform/Developer/SDKs/iPhonesimulator13.2.sdk -arch x86_64 -O3 -g -miphoneos-version-min=8.4 -I/Users/Martz/Projects/vlckit/libvlc/vlc/contrib/iPhone-x86_64-apple-darwin14-x86_64/include -g -O2 -I/Users/Martz/Projects/vlckit/libvlc/vlc/contrib/iPhone-x86_64-apple-darwin14-x86_64/include' --enable-pthreads --nm= --ar=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar --prefix=/Users/Martz/Projects/vlckit/libvlc/vlc/contrib/iPhone-x86_64-apple-darwin14-x86_64 --enable-static --disable-shared
INFO:   avformat    configuration: --extra-ldflags='-arch x86_64 -v -Wl,8.4' --cc=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang --pkg-config=pkg-config --disable-doc --disable-encoder=vorbis --disable-decoder=opus --enable-libgsm --disable-decoder=mlp --disable-demuxer=mlp --disable-parser=mlp --disable-debug --disable-avdevice --disable-devices --disable-avfilter --disable-filters --disable-protocol=concat --disable-bsfs --disable-bzlib --disable-libvpx --disable-avresample --enable-bsf=vp9_superframe --disable-swresample --disable-iconv --disable-avisynth --disable-nvenc --disable-linux-perf --disable-securetransport --enable-libopenjpeg --enable-libmp3lame --enable-cross-compile --disable-programs --arch=x86_64 --target-os=darwin --disable-lzma --cpu=core2 --enable-pic --extra-ldflags='-arch x86_64 -miphoneos-version-min=8.4 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhonesimulator.platform/Developer/SDKs/iPhonesimulator13.2.sdk -arch x86_64 -O3 -g -miphoneos-version-min=8.4 -arch x86_64 -miphoneos-version-min=8.4 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhonesimulator.platform/Developer/SDKs/iPhonesimulator13.2.sdk -arch x86_64 -O3 -g -miphoneos-version-min=8.4 -I/Users/Martz/Projects/vlckit/libvlc/vlc/contrib/iPhone-x86_64-apple-darwin14-x86_64/include -g -O2 -I/Users/Martz/Projects/vlckit/libvlc/vlc/contrib/iPhone-x86_64-apple-darwin14-x86_64/include' --enable-pthreads --nm= --ar=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar --prefix=/Users/Martz/Projects/vlckit/libvlc/vlc/contrib/iPhone-x86_64-apple-darwin14-x86_64 --enable-static --disable-shared
INFO:   swscale     configuration: --extra-ldflags='-arch x86_64 -v -Wl,8.4' --cc=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang --pkg-config=pkg-config --disable-doc --disable-encoder=vorbis --disable-decoder=opus --enable-libgsm --disable-decoder=mlp --disable-demuxer=mlp --disable-parser=mlp --disable-debug --disable-avdevice --disable-devices --disable-avfilter --disable-filters --disable-protocol=concat --disable-bsfs --disable-bzlib --disable-libvpx --disable-avresample --enable-bsf=vp9_superframe --disable-swresample --disable-iconv --disable-avisynth --disable-nvenc --disable-linux-perf --disable-securetransport --enable-libopenjpeg --enable-libmp3lame --enable-cross-compile --disable-programs --arch=x86_64 --target-os=darwin --disable-lzma --cpu=core2 --enable-pic --extra-ldflags='-arch x86_64 -miphoneos-version-min=8.4 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhonesimulator.platform/Developer/SDKs/iPhonesimulator13.2.sdk -arch x86_64 -O3 -g -miphoneos-version-min=8.4 -arch x86_64 -miphoneos-version-min=8.4 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhonesimulator.platform/Developer/SDKs/iPhonesimulator13.2.sdk -arch x86_64 -O3 -g -miphoneos-version-min=8.4 -I/Users/Martz/Projects/vlckit/libvlc/vlc/contrib/iPhone-x86_64-apple-darwin14-x86_64/include -g -O2 -I/Users/Martz/Projects/vlckit/libvlc/vlc/contrib/iPhone-x86_64-apple-darwin14-x86_64/include' --enable-pthreads --nm= --ar=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar --prefix=/Users/Martz/Projects/vlckit/libvlc/vlc/contrib/iPhone-x86_64-apple-darwin14-x86_64 --enable-static --disable-shared
INFO:   libavutil      56. 55.100 / 56.  5.100
INFO:   libavcodec     58. 96.100 / 58.  6.103
INFO:   libavformat    58. 48.100 / 58.  3.100
INFO:   libavdevice    58. 11.101 / 58. 11.101
INFO:   libavfilter     7. 87.100 /  7. 87.100
INFO:   libswscale      5.  8.100 /  5.  0.101
INFO:   libswresample   3.  8.100 /  3.  8.100
ERROR: Unrecognized option 'segment_time'.
FATAL: Error splitting the argument list:
FATAL: Option not found

解决方法

解决方案在您分享的链接之一中

对于本机开发,您似乎可以在 Pods-.debug.xcconfig 文件中使用 OTHER_LDFLAGS 标志配置首选库,但我不知道在何处使用 Xamarin.Forms 执行此操作。来源:https://github.com/tanersener/mobile-ffmpeg/wiki/Using-Multiple-FFmpeg-Implementations-In-The-Same-iOS-Application

Xamarin.Forms 是仍然原生开发,因此您可以像 Swift iOS 开发人员一样执行此操作。

  • 您需要在 XCode 中打开您的原生 iOS 应用项目(而不是共享项目)。
  • 创建一个 xcconfig 文件。 This guide 的屏幕截图看起来不错,可以帮助您浏览 XCode。
  • xcconfig 看起来像 this。您想将 mobile-ffmpeg 框架放在 mobilevlckit 框架之前。
  • Xamarin.iOS 可能也需要一些框架,因此在这之前,我会在详细诊断模式下构建您的应用,以查看当前的 OTHER_LDFLAGS 值是什么。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?