首页 > 解决方案 > 使用本机反应播放 .Flac 或 .Alac 文件,甚至可以在 iPhone 上使用吗?

问题描述

我正在为音频播放创建一个反应本机应用程序,并且更喜欢使用 .flac 或 .alac 文件。该应用程序使用 .wav 文件运行良好,但导入 .flac 文件会导致崩溃。

所以我收到了这个错误:

iOS 捆绑失败 3555ms 无法从 C:\Users\samir\Source\OctaCoil\apps\context\AudioProvider.js 解析模块 ../../assets/Pain-Inflammation.flac:

这些文件都不存在:assets\Pain-Inflammation.flac(.native|.ios.ts|.native.ts|.ts|.ios.tsx|.native.tsx|.tsx|.ios.js|.native .js|.js|.ios.jsx|.native.jsx|.jsx|.ios.json|.native.json|.json) assets\Pain-Inflammation.flac\index(.native|.ios.ts| .native.ts|.ts|.ios.tsx|.native.tsx|.tsx|.ios.js|.native.js|.js|.ios.jsx|.native.jsx|.jsx|.ios。 json|.native.json|.json) 16 | 编号:1, 17 | 标题:'充满活力',

18 | url: 要求('../../assets/Pain-Inflammation.flac'), | ^ 19 | 持续时间:30.00, 20 | 类型:“心”

这是我认为相关的代码的一部分。

import * as MediaLibrary from 'expo-media-library';
import { DataProvider } from 'recyclerlistview';
import AsyncStorage from '@react-native-async-storage/async-storage';
import { Audio } from 'expo-av';
import { storeAudioForNextOpening } from '../misc/helper';
import { playNext } from '../misc/audioController';

export const AudioContext = createContext();

export class AudioProvider extends Component {
  audioItems = [
    {
      id: 1,
      title: 'Energize',
      url: require('../../assets/Pain-Inflammation.flac'),
      duration: 30.00,
      type: 'heart'
    },

有任何想法吗?

标签: iosreactjsiphonereact-nativemobile

解决方案


您正在尝试require使用 Flac 文件,该文件不起作用,因为解释器正在尝试将其读取为 ts/js 源文件(它不是)。删除require并提供资产文件的正确路径,它至少会停止抛出该错误:

// ...
export class AudioProvider extends Component {
  audioItems = [
    {
      id: 1,
      title: 'Energize',
      url: '../../assets/Pain-Inflammation.flac',
      duration: 30.00,
      type: 'heart'
    },
// ...

也就是说,Flac 播放应该可以在 iOS 11+ 上运行,但这取决于提供的实现expo-av。如果它正在使用AudioToolbox和/或AVFoundation用于 iOS,它应该可以工作。


推荐阅读