ios - 使用本机反应播放 .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'
},
有任何想法吗?
解决方案
您正在尝试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,它应该可以工作。