2

反応ネイティブでアプリを構築していて、ファイルサイズが 1.2 Gb のビデオファイルを実行しようとしていますが、エラーメッセージが表示されます:

エラー: 0x3fffffe7 文字より長い文字列は作成できません

これはファイルサイズのせいだと思います。ビデオファイルを小さいサイズで実行すると、正常に動作します。

私のコンポーネントのコードは次のとおりです。

const Video = () => {
    const myFile = require('../assets/myVideo.mp4');

    return (
        <Fragment>
            <View>
                <Video
                    repeat={true}
                    source={myFile}
                    ref={(ref) => {
                        video = ref
                    }}
                    onBuffer={this.onBuffer}
                    onError={this.videoError}
                    rate={1}
                />
            </View>
        </Fragment>
    );
}

export default Video;

どうすればこれを回避できますか? また、以下の uri を使用してストリーミングしようとしましたが、何も起こらなかったために構文が正しくないかどうかはわかりません:)、次のエラーメッセージが表示されました:

E/MediaPlayer: エラー (1,-2147483648)

<Video
   repeat={true}
   paused={!bgPaused}             
   source={{ uri: 'file:///Users/myAccount/myVideo.mp4' }}
   ref={(ref) => {
      fullscreenVideo = ref
   }}
   onBuffer={this.onBuffer}
   onError={this.videoError}
   style={styles.backgroundVideo}
   rate={1}
/>
4

2 に答える 2

0

現在のモジュールでサポートされているパスで解決する必要がある場合は、それぞれに 2 つ使用できます。

プラットフォーム: アンドロイド

source={{ uri: 'file:///sdcard/Movies/myVideo.mp4' }}

注: アプリの外部のファイルにアクセスする場合、アプリは外部ストレージを読み取るためのアクセス許可を要求する必要があります。

プラットフォーム: iOS iTunes ライブラリ内のサウンド ファイルへのパス。通常、iTunes からアプリに共有されます。

source={{ uri: 'ipod-library:///path/to/myVideo.mp3' }}

注: この機能を使用して、こちらで説明されているように、Info.plist ファイルに NSAppleMusicUsageDescription のエントリを追加します。

これら 2 つの方法を使用したくない場合は、それらを外部サイトにアップロードして、そのファイルへのパスを取得する方法があります。

于 2019-09-29T09:18:13.910 に答える