[ 
https://issues.apache.org/jira/browse/CB-12542?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Shazron Abdullah updated CB-12542:
----------------------------------
    Description: 
I get “Failed to initialize AVAudioRecorder: (null)” in the error callback of 
the startRecordingAudio() exec API.
I see that the AVAudioPlayer settings in CDVAudio.m are
{code}
NSDictionary *audioSettings = @{AVFormatIDKey: @(kAudioFormatMPEG4AAC),
                                            AVSampleRateKey: @(44100),
                                            AVNumberOfChannelsKey: @(1),
                                            AVEncoderAudioQualityKey: 
@(AVAudioQualityMedium)
                                            };
{code}

This is IMHO the reason it doesn’t work. Either one uses the .m4a extension 
with {{kAudioFormatMPEG4AAC}} or
.wav with the {{kAudioFormatLinearPCM}} key (the IOS docs are very unclear 
about which file extensions are actually supported)

The plugin enforces “wav” but the settings enforce the MPEG4AAC encoder.
Using the attached simple patch and using .m4a at the JS side solves the 
problem and records on my iPod touch IOS 8.x.

I stumbled also across 
https://github.com/remoorejr/cordova-plugin-media-with-compression where the 
exchange wav->m4a is done too.

Strangely I can’t find much problems reported on stackoverflow, but this one 
seems to cover it
http://stackoverflow.com/questions/12244111/failed-to-initialize-avaudiorecorder-null
The last poster seem to indicate that the problem sneaked in in IOS 8 
(previously it was probably possible to record to a .wav file but with AAC 
content).

Looking at the recordAudio() test for the plugin in tests/tests.js I can’t see 
that potential errors are actually causing the test to fail: they are just 
logged with console.log , so this may explain why the problem has not been 
detected by the tests.

  was:
I get “Failed to initialize AVAudioRecorder: (null)” in the error callback of 
the startRecordingAudio() exec API.
I see that the AVAudioPlayer settings in CDVAudio.m are
NSDictionary *audioSettings = @{AVFormatIDKey: @(kAudioFormatMPEG4AAC),
                                            AVSampleRateKey: @(44100),
                                            AVNumberOfChannelsKey: @(1),
                                            AVEncoderAudioQualityKey: 
@(AVAudioQualityMedium)
                                            };
This is IMHO the reason it doesn’t work. Either one uses the .m4a extension 
with kAudioFormatMPEG4AAC or
.wav with the kAudioFormatLinearPCM key (the IOS docs are very unclear about 
which file extensions are actually supported)
The plugin enforces “wav” but the settings enforce the MPEG4AAC encoder.
Using the attached simple patch and using .m4a at the JS side solves the 
problem and records on my iPod touch IOS 8.x.
I stumbled also across 
https://github.com/remoorejr/cordova-plugin-media-with-compression
where the exchange wav->m4a is done too.
Strangely I can’t find much problems reported on stackoverflow, but this one 
seems to cover it
http://stackoverflow.com/questions/12244111/failed-to-initialize-avaudiorecorder-null
The last poster seem to indicate that the problem sneaked in in IOS 8 
(previously it was probably possible to record to a .wav file but with AAC 
content).
Looking at the recordAudio() test for the plugin in tests/tests.js I can’t see 
that potential errors are actually causing the test to fail: they are just 
logged with console.log , so this may explain why the problem has not been 
detected by the tests.


> can’t record to a “wav” file on IOS media plugin
> ------------------------------------------------
>
>                 Key: CB-12542
>                 URL: https://issues.apache.org/jira/browse/CB-12542
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Plugin Media
>    Affects Versions: 3.5.0
>         Environment: 9.x Simulator , IOS 8.x device (iPod touch)
>            Reporter: Leo Schubert
>         Attachments: cdvsound.diff
>
>
> I get “Failed to initialize AVAudioRecorder: (null)” in the error callback of 
> the startRecordingAudio() exec API.
> I see that the AVAudioPlayer settings in CDVAudio.m are
> {code}
> NSDictionary *audioSettings = @{AVFormatIDKey: @(kAudioFormatMPEG4AAC),
>                                             AVSampleRateKey: @(44100),
>                                             AVNumberOfChannelsKey: @(1),
>                                             AVEncoderAudioQualityKey: 
> @(AVAudioQualityMedium)
>                                             };
> {code}
> This is IMHO the reason it doesn’t work. Either one uses the .m4a extension 
> with {{kAudioFormatMPEG4AAC}} or
> .wav with the {{kAudioFormatLinearPCM}} key (the IOS docs are very unclear 
> about which file extensions are actually supported)
> The plugin enforces “wav” but the settings enforce the MPEG4AAC encoder.
> Using the attached simple patch and using .m4a at the JS side solves the 
> problem and records on my iPod touch IOS 8.x.
> I stumbled also across 
> https://github.com/remoorejr/cordova-plugin-media-with-compression where the 
> exchange wav->m4a is done too.
> Strangely I can’t find much problems reported on stackoverflow, but this one 
> seems to cover it
> http://stackoverflow.com/questions/12244111/failed-to-initialize-avaudiorecorder-null
> The last poster seem to indicate that the problem sneaked in in IOS 8 
> (previously it was probably possible to record to a .wav file but with AAC 
> content).
> Looking at the recordAudio() test for the plugin in tests/tests.js I can’t 
> see that potential errors are actually causing the test to fail: they are 
> just logged with console.log , so this may explain why the problem has not 
> been detected by the tests.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to