Flutter 在两个系统(Android和iOS)上复制视频时出现问题

Flutter 在两个系统(Android和iOS)上复制视频时出现问题,flutter,android-video-player,video-player,Flutter,Android Video Player,Video Player,我正在一个Flitter应用程序中实现视频播放器功能,但我不知道在这两个系统(IOS和Android)中哪种视频格式最好 我使用视频播放器0.10.0+2和丘伊0.9.6 实际上,我们正在使用H264和容器MKV,H265和容器MP4(HEVC),但在IOS(真实设备)上不起作用,在Android上也起作用,但有一些错误 一些代码 // Declaration VideoPlayerController _playerController; // Initialization if (_pla

我正在一个Flitter应用程序中实现视频播放器功能,但我不知道在这两个系统(IOS和Android)中哪种视频格式最好

我使用视频播放器0.10.0+2和丘伊0.9.6

实际上,我们正在使用H264和容器MKV,H265和容器MP4(HEVC),但在IOS(真实设备)上不起作用,在Android上也起作用,但有一些错误

一些代码

// Declaration
VideoPlayerController _playerController;

// Initialization
if (_playerController == null) {   
    _playerController = VideoPlayerController.network(_myVideoUrl)
          ..setVolume(0.0)
          ..setLooping(true)
          ..initialize();
}

//Play
_playerController.play();

//Stop
if (_playerController != null) {
   _playerController.pause();
}

@override
  void deactivate() {    
    super.deactivate();
    if (_playerController != null) {
      _playerController.pause();
    }    
  }

  @override
  void dispose() {
    super.dispose();
    if (_playerController != null) {
      _playerController.pause();
    }
    _playerController = null;    
  }
在真实设备上的IOS中,视频播放时不会显示错误消息

在Android中,视频正在播放,但存在以下问题:

1) 日志错误:

2019-03-24 15:30:49.468 1739-1817/? E/OMXNodeInstance: getExtensionIndex(0xf411c240:google.h264.decoder, OMX.google.android.index.enableAndroidNativeBuffers) ERROR: UnsupportedIndex(0x8000101a)
2019-03-24 15:30:49.468 16136-16335/it.itasoft.moc E/ACodec: [OMX.google.h264.decoder] setPortMode on output to DynamicANWBuffer failed w/ err -1010
2019-03-24 15:30:49.472 1739-1817/? E/OMXNodeInstance: setConfig(0xf411c240:google.h264.decoder, ConfigPriority(0x6f800002)) ERROR: UnsupportedIndex(0x8000101a)
2019-03-24 15:30:49.473 1739-1817/? E/OMXNodeInstance: getConfig(0xf411c240:google.h264.decoder, ConfigAndroidVendorExtension(0x6f100004)) ERROR: UnsupportedIndex(0x8000101a)
2019-03-24 15:30:49.475 1739-1817/? E/OMXNodeInstance: getConfig(0xf411c240:google.h264.decoder, ??(0x7f000003)) ERROR: UnsupportedSetting(0x80001019)
2019-03-24 15:30:49.554 1739-1817/? E/OMXNodeInstance: getConfig(0xf411c240:google.h264.decoder, ??(0x7f000003)) ERROR: UnsupportedSetting(0x80001019)
2019-03-24 15:30:49.558 1739-2059/? E/OMXNodeInstance: setConfig(0xf411c720:google.aac.decoder, ConfigPriority(0x6f800002)) ERROR: Undefined(0x80001001)
2019-03-24 15:30:49.559 1739-2059/? E/OMXNodeInstance: setConfig(0xf411c720:google.aac.decoder, ConfigOperatingRate(0x6f800003)) ERROR: Undefined(0x80001001)
2019-03-24 15:30:49.559 1739-2059/? E/OMXNodeInstance: getConfig(0xf411c720:google.aac.decoder, ConfigAndroidVendorExtension(0x6f100004)) ERROR: Undefined(0x80001001)
2) 循环不起作用


哪种格式最适合在两个系统上实现最大的兼容性?

支持的视频格式实际上都有很好的文档记录:

在iOS上,支持播放器是AVPlayer。支持的格式因iOS版本而异,AVURLAsset类具有AudioVisualType,您可以查询支持的av格式。 在Android上,支持播放器是ExoPlayer,请参阅此处以了解支持的格式列表

我很幸运地接受了另一位提供的建议,并简单地使用以下ffmpeg格式进行转换:

ffmpeg -i input.file.mp4 -vcodec libx264 -vprofile high -preset slow -b:v 500k -maxrate 500k -bufsize 1000k -vf scale=-1:360 -threads 0 -acodec libvo_aacenc -b:a 128k converted.mp4
这在iOS(真实设备)和android设备上都可以正常工作


FWIW:如果您不想在设备上查询它们,您显然也可以找到它们。

支持的视频格式实际上有很好的文档记录:

在iOS上,支持播放器是AVPlayer。支持的格式因iOS版本而异,AVURLAsset类具有AudioVisualType,您可以查询支持的av格式。 在Android上,支持播放器是ExoPlayer,请参阅此处以了解支持的格式列表

我很幸运地接受了另一位提供的建议,并简单地使用以下ffmpeg格式进行转换:

ffmpeg -i input.file.mp4 -vcodec libx264 -vprofile high -preset slow -b:v 500k -maxrate 500k -bufsize 1000k -vf scale=-1:360 -threads 0 -acodec libvo_aacenc -b:a 128k converted.mp4
这在iOS(真实设备)和android设备上都可以正常工作


FWIW:如果您不想在您的设备上查询它们,您显然也可以找到它们。

谢谢您的回复。我继续看到这样的错误是正常的吗?E/ACodec:[OMX.google.h264.decoder]输出到DynamicANWBuffer时设置端口模式失败w/err-1010 I/ACodec:codec不支持配置优先级(err-1010)I/ACodec:codec不支持配置优先级(err-2147483648)D/MediaCodec:[OMX.google.h264.decoder]将输出表面上的数据空间设置为#103 W/MapperHal:使用位无效的缓冲区描述符0x2000谢谢您的回复。我继续看到这样的错误是正常的吗?E/ACodec:[OMX.google.h264.decoder]输出到DynamicANWBuffer时设置端口模式失败w/err-1010 I/ACodec:codec不支持配置优先级(err-1010)I/ACodec:codec不支持配置优先级(err-2147483648)D/MediaCodec:[OMX.google.h264.decoder]将输出表面上的数据空间设置为#103 W/MapperHal:具有无效使用位0x2000的缓冲区描述符