I am trying to make a video player with custom audio effects. To perform an effect I've written an audio unit. To play video stream I use AVPlayer with muted sound. The problem is that audio and video are out of sync. And it gets awful when I pause and resume the playback.
Could you please suggest any ideas about how to sync the two things? Maybe use something else instead of AVPlayer?
Thanks in advance.
I shall answer my own question.
There is a thing called MTAudioProcessingTap. It allows for doing audio manipulation stuff just like an audio unit but inside AVPlayer.
There's a link for more details: https://chritto.wordpress.com/2013/01/07/processing-avplayers-audio-with-mtaudioprocessingtap/.=
Related
I am playing songs in WebKit View i don't have source url of song. Is it possible i can manipulate audio like increase base or change equalizer? But i have event when song start playing or pause. I am looking for solution in swift. Any idea or help will be appreciated.
I have to do a Video streaming app (using a remote url) in swift. But there is no any exact video format. Sometimes it can be m3u8 sometimes mp4 etc.. but my video player should support for what ever the format comes from the back end.
Also when the app is in background, the audio should play and when the app comes foreground video should play without any time delay between the vide and the audio.
I want to know whether is it possible to achieve my objectives using AVPlayerViewController or else what is the best player that I can use to achieve my targets. Please help me.
Thanks
AVPlayerViewController supports m3u8 and mp4 both format. For playing video's audio you need some extra configuration. You can check from here...
How do I get my AVPlayer to play while app is in background?
Is it possible to play video using Avplayer in Background?
So according to me AVPlayerViewController is best option for your requirement.
Using the AVAudioSession class, it is possible to play audio in the background, but I was wondering if it is possible to play audio in the background and having the built-in music player playing at the same time. Based on the documentation, this seems to be impossible.
Is there a configuration that I am overlooking or a reliable workaround?
I am creating a radio streaming app with play, pause and volume slider.
I have implemented volume slider using MPVolumeView but unfortunately it is not working.
Can any one please let me know the correct code so that the volume slider will work in my app. I have used MPMoviePlayerController, AVPlayer, AVAudioPlayer.
Sounds as if you missed an important part of Apple's documentation;
Working with Movies and iPod Music
I am suspecting that you are using both, AVAudioPlayer and MPMoviePlayerController together and that you have setup some audio session attributes to get that working properly. Now when doing so, you may want to tell MPMoviePlayerController to use that session / or not.
Using the Media Player Framework Exclusively
If your application is using a movie player only, or a music player
only—and you are not playing your own sounds—then you should not
configure an audio session.
If you are using a movie player exclusively, you must tell it to use
its own audio session, as follows:
myMoviePlayer.useApplicationAudioSession = NO
If you are using a movie
player and a music player, then you probably want to configure how the
two interact; for this, you must configure an audio session, even
though you are not playing application audio per se. Use the guidance
in Table 6-1.
I am able to play songs from iPod library using AVPlayer class.
Now what I want to do is to insert equalizer to the audio produced.
Anybody has experienced in doing this?
There is no way to play MPMediaItem and adding sound equalizer with AVPlayer. We have to use Audio Unit processing.
I have done this leveraging a class provided in the Apple Samples:
http://developer.apple.com/library/ios/#samplecode/avTouch/Listings/Classes_CALevelMeter_h.html
Hope this helps.