我们的应用录制和播放(那些)视频。但不知何故,有些视频播放时没有声音。
如果我通过 iTunes 将视频文件复制到 mac,它会播放有声视频,所以视频确实有声音。
我使用工具(称为 GSpot)检查了视频,它们都具有相同的音频编解码器和比特率。
我尝试了我在 SO 上找到的所有内容,但有些视频不播放音频,而且代码始终相同,而且视频确实有声音,就像在 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];
我不知道这是否相关,但音频似乎无法在录制期间覆盖不同 View 的视频上播放。录制时可以在视频预览上覆盖全屏 View ,它可以很好地录制,并且文件本身有音频,并且它们在 pc/mac 上可以正常播放......仅在我们应用程序内的设备上这些视频(再次,不确定如果相关)没有音频。应用程序对每个视频都使用相同的代码,所以我可以重命名它们,交换它们等,行为与视频的音频 channel 有关。
编辑
补充观察: 没有声音的视频,quicktime(仅在mac上)也不会播放音频。 Windows 上的 QT 确实播放音频,Windows 上的所有其他播放器也播放音频。 手机不知何故损坏了自己的录音,以至于之后它无法识别刚刚录制的音频 channel
编辑 2
iPhone 6、iOS 8.1beta 2 -> 如上所述 iPhone 4S、iOS 7.1.2 -> 没有问题 iPad mini,iOS 8.0.2 -> 总是有问题,没有一个视频音频 channel 可以读取,但始终存在并且 windows 可以播放音频
我想总结一下。
文件保存为“.mp4”,这会导致偶发错误。 将文件另存为“.mov”有效。相同的编解码器等,但没有错误。
NSString *path = [[documentsDirectoryPath stringByAppendingPathComponent:
[NSString stringWithFormat"/%@", name]] stringByAppendingString".mov"];
outputURL = [[NSURL alloc] initFileURLWithPath:path];
[mAVCaptureMovieFileOutput startRecordingToOutputFileURLutputURL recordingDelegate:self];
关于ios - 应用程序录制的视频在手机上播放时有时不播放音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26466345/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |