6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

iOSアプリでwavからflacへの変換を行う

Last updated at Posted at 2015-10-26

はじめに

iOSでは標準でflacファイルをサポートしていません。
外部ライブラリを用いて、wavからflacへ変換する手順をまとめたので共有します。

環境はXcode7.1、iOS9、Objective-cです。

FLACとは

ライブラリ取得

ライブラリを2つダウンロードします。

IDZPrecompiledFLAC
IDZPrecompiledOgg

arm64対応でビルドしてあって非常にありがたい!

プロジェクトに追加

以下2点に注意。

・Link Binary With Librariesから追加
Build Phasesから追加します。

・bitcodeサポートをNOに変更
Build SettingsのEnable BitcodeをNOに設定。

wav to flac 変換処理

こちらから2ファイルダウンロードしプロジェクトに追加します。

wav_to_flac

  1. wav_to_flac.h
  2. wav_to_flac.c

.cファイルのinclude箇所を少し修正。
「FLACiOS/」から「FLAC/」に変えます。

wav_to_flac.c
#include "FLAC/metadata.h"
#include "FLAC/stream_encoder.h"

ここからはObjective-c。

任意の.mファイルにて呼び出し。
今回はbundleに含めたwavファイルをflacに変換しdocuments直下に出力しています。

ヘッダをincludeする
#include "wav_to_flac.h"
変換処理呼び出し

- (void)convertSample
{
    NSString *documentsDirPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    NSString *flacFileWithoutExtension = [documentsDirPath stringByAppendingPathComponent:@"flac_001"];
    
    NSBundle *bundle = [NSBundle mainBundle];
    NSString *waveFile = [bundle pathForResource:@"001" ofType:@"wav"];
    
    int interval_seconds = 30;
    char** flac_files = (char**) malloc(sizeof(char*) * 1024);
    
    int conversionResult = convertWavToFlac([waveFile UTF8String], [flacFileWithoutExtension UTF8String], interval_seconds, flac_files);
    
    NSLog(@"%d", conversionResult);
}

おわりに

あまり需要がないかもですが、私にとっては必要な情報でした。

手順をまとめると簡単そうに見えますね。
あんなに苦労したのに(笑)

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?