我們的應用程序會記錄和播放(那些)視頻。但不知何故,某些視頻播放時沒有聲音。應用程序錄制的視頻在手機上播放時有時不播放音頻
如果我通過iTunes將視頻文件複製到mac,它會播放帶聲音的視頻,因此視頻確實有聲音。
我用一種工具(稱爲GSpot)檢查了視頻,它們都具有相同的音頻編解碼器和比特率。
我嘗試了所有我發現的東西,但有些視頻不播放音頻,代碼總是相同,並且視頻在Mac上可以聽到它的聲音。
這是玩家
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *setCategoryError = nil;
[audioSession setActive:YES error:&setCategoryError];
[audioSession setCategory:AVAudioSessionCategoryPlayback
error:&setCategoryError];
_mpviewController = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:moviepath]];
_mpviewController.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
_mpviewController.moviePlayer.controlStyle = MPMovieControlStyleNone;
[_mpviewController.moviePlayer setScalingMode:MPMovieScalingModeAspectFill];
_mpviewController.moviePlayer.shouldAutoplay = YES;
[_mpviewController.moviePlayer prepareToPlay];
_mpviewController.view.frame = CGRectMake(0, 0, _screenWidth, _screenHeight);
[self addSubview:_mpviewController.view];
一段時間後,就按下按鈕,啓動我怎麼設置播放。
的記錄設置
[_session beginConfiguration];
[_session setSessionPreset: AVCaptureSessionPreset640x480];
AVCaptureDevice * videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
BOOL lock = [videoDevice lockForConfiguration:&error];
if(lock) videoDevice.focusMode = AVCaptureFocusModeContinuousAutoFocus;
[videoDevice unlockForConfiguration];
if(videoDevice == nil){
assert(0);
}
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:videoDevice error:&error];
if(error){
assert(0);
}
[_session addInput:input];
AVCaptureDevice *audioDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];
AVCaptureDeviceInput * audioInput = [AVCaptureDeviceInput deviceInputWithDevice:audioDevice error:nil];
if(audioInput != nil) {
[_session addInput:audioInput];
}
[_session commitConfiguration];
我不知道這是否是相關的,但聲音似乎不上有記錄過程中疊加了不同的看法的視頻播放。在錄製時可以在視頻預覽上疊加全屏視圖,並且錄製得很好,文件本身也有音頻,並且可以在PC/Mac上正常播放...只在應用程序內的設備上顯示這些視頻(再次,不確定如果相關的話)沒有音頻。應用程序爲每個視頻使用相同的代碼,因此我可以重命名它們,交換它們等,這種行爲與視頻的音頻通道有關。
編輯
附加觀察: 的VIDS那裏是沒有聲音的QuickTime(僅在Mac)也發揮沒有音訊。 QT在Windows上播放音頻,而Windows上的其他播放器也播放音頻。 不知何故電話破壞了自己的記錄,以便事後它不承認它只是記錄
編輯2
iPhone 6的音頻通道,的iOS 8.1beta 2 - >描述 iPhone 4S的,的iOS 7.1。 2 - >沒有問題 iPad mini,iOS 8.0.2 - >總是有問題,沒有一個視頻音頻通道可以讀取,但始終存在,Windows可以播放音頻