• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 应用程序录制的视频在手机上播放时有时不播放音频

[复制链接]
菜鸟教程小白 发表于 2022-12-12 12:09:22 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我们的应用录制和播放(那些)视频。但不知何故,有些视频播放时没有声音。

如果我通过 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 可以播放音频



Best Answer-推荐答案


我想总结一下。

文件保存为“.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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap