У меня есть видео со звуком и mp3. Я хотел бы воспроизвести видео без звука (аудио выключено) во время воспроизведения mp3. Я использую MPMoviePlayerController
, чтобы воспроизвести видео, и AVAudioPlayer
, чтобы воспроизвести mp3. Есть ли способ сделать это?Как отключить видео во время воспроизведения mp3 с помощью AVAudioPlayer
ответ
Я решил ответить на свой вопрос: @nickbona ответ был в порядке, но у него нет простого и примерного кода. Таким образом, решение заключается в использовании AVPlayer вместо MPMoviePlayerController.
Так вот я с простым примером исходного кода, если кто-то будут нужен:
//init player
AVAsset *asset = [AVURLAsset URLAssetWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"yourfile" ofType:@"mp4"]] options:nil];
AVPlayerItem *anItem = [AVPlayerItem playerItemWithAsset:asset];
AVPlayer *myPlayerController = [AVPlayer playerWithPlayerItem:anItem];
//disable audio (this is the version when you have more than one video in the playlist: i write this version so it should be more useful)
NSArray *playerTracks = [asset tracksWithMediaType:AVMediaTypeAudio];
NSMutableArray *playerParams = [NSMutableArray array];
for (AVAssetTrack *track in playerTracks) {
AVMutableAudioMixInputParameters *audioInputParams = [AVMutableAudioMixInputParameters audioMixInputParameters];
[audioInputParams setVolume:0.0 atTime:kCMTimeZero];
[audioInputParams setTrackID:[track trackID]];
[playerParams addObject:audioInputParams];
}
AVMutableAudioMix *muteAudioMix = [AVMutableAudioMix audioMix];
[muteAudioMix setInputParameters:playerParams];
[[myPlayerController currentItem] setAudioMix:muteAudioMix];
Надеется, что это может помочь.
MPMoviePlayerController, похоже, не дает вам никакого контроля над томом. Я бы посоветовал вам взглянуть на AVPlayer и сопроводительные примеры. Это немного больше, чтобы воспроизводить видео, но вы можете использовать свойство «приглушенный», чтобы делать именно то, что вы хотите.
Правильно, MPMoviePlayerController не предлагает такого контроля. Но поскольку он использует аудиозапись приложения, вы можете добиться того же, просто используя интерфейс 'MPMusicPlayerController', даже если вы не используете его для реального воспроизведения. – Till
Вы можете использовать MPMusicPlayerController
для достижения цели.
- (void)muteVidepPlayer:(BOOL)muteFlag
{
MPMusicPlayerController *musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
if (muteFlag)
{
self.lastVolume = musicPlayer.volume;
[musicPlayer setVolume:0.0f];
}
else
{
[musicPlayer setVolume:self.lastVolume];
}
}
Что он делает, он использует экземпляр MPMusicPlayerController
, который позволяет регулировать громкость. Не слишком озадачивайтесь, это также эффективно отрегулирует объем вашего MPMoviePlayerController
экземпляра. Это работает, потому что MPMoviePlayerController
и MPMusicPlayerController используют сеанс аудио приложения (по умолчанию).
Для того чтобы убедиться, что вы можете сбросить громкость до прежней настройки, этот метод пытается сохранить это значение в переменной экземпляра типа float
(self.lastVolume
) вашего контроллера воспроизведения/диспетчера просмотра/независимо.
Спасибо, Тилл, я собираюсь попробовать это через пару часов. – Caio
Я попробовал ваше решение, но оно не работает. (мне также было интересно, если в случае его работы это решение оставит аудио на объекте AVAduiPlayer, играющем mp3). – Caio
Это не работает в симуляторе - убедитесь, что вы тестируете устройство. – Till
- 1. Как отключить Touch во время воспроизведения видео
- 2. Запись видео во время воспроизведения другого видео
- 3. Ошибка AVPlayer во время воспроизведения MP3
- 4. Скрыть mp3-адрес во время воспроизведения аудиофайла
- 5. проверить текущее время воспроизведения avaudioplayer
- 6. Как переключить звуковую дорожку во время воспроизведения
- 7. Как начать проигрывание AVAudioPlayer во время загрузки?
- 8. Разрешить UIInterfaceOrientationLandscape во время воспроизведения видео UIWebView
- 9. Изменить положение видео во время воспроизведения
- 10. Поворот таймера во время воспроизведения видео?
- 11. Скриншот Android Capture во время воспроизведения видео
- 12. Рамка Mlt: сбои во время воспроизведения видео
- 13. Запись видео во время воспроизведения видео на iPhone?
- 14. statusBar не скрывается во время воспроизведения видео
- 15. Скрыть панель управления во время воспроизведения видео
- 16. Запись видео во время воспроизведения музыки (Snapchat)
- 17. Как обновить текущее время видео во время его воспроизведения?
- 18. AVAudioPlayer. Остановка во время
- 19. вычислить время воспроизведения файла .mp3
- 20. как отключить видео .swf во время игры?
- 21. Сохранение UIButton, выбранного во время воспроизведения звука
- 22. Запись видео во время воспроизведения другого видео и экспорта
- 23. Невозможно отправить общее время воспроизведения во время потоковой передачи mp3-аудиофайлов с помощью ASP.NET WEB API
- 24. MPMoviewPlayer вычисляет текущее время во время воспроизведения видео
- 25. Задержка в цикле во время воспроизведения mp3-файла C#
- 26. Ошибка во время воспроизведения файла mp3 в Turbo C++
- 27. Как обновить текст innerHTML для отображения во время воспроизведения видео?
- 28. Отключить ориентацию Изменение во время записи Видео
- 29. Пропустить часть видео с YouTube во время воспроизведения
- 30. Как отключить микрофон во время записи с помощью UIImagePickerController?
@nickbona: спасибо, я пытаюсь заменить MPMoviePlayerController на AVPlayer: есть ли способ найти текущее имя видеофайла, который играет AVPlayer? Я не могу его найти. – Caio
(видео локально [находится в комплекте приложения]: также я бы хотел избежать использования метаданных [в случае, если это возможно с видео]) – Caio