- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这很奇怪,经过数小时的测试我仍然无法弄清楚。
好的,这就是我要做的:合并两个视频,也就是一个接一个地追加。
我拍摄了两个视频,然后有两个网址。然后我使用以下方法创建了两个 AVURLAsset:
AVURLAsset* video1 = [[AVURLAsset alloc]initWithURL:url1 options:options];
AVURLAsset* video2 = [[AVURLAsset alloc]initWithURL:url2 options:options];
然后我得到相应的轨道:
AVAssetTrack *videoAsset1Track = [[video1 tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
AVAssetTrack *videoAsset2Track = [[video2 tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
然后,我有几个CMTime来比较:
CMTime endtime1 = videoAsset1Track.timeRange.duration;
CMTime endtime2 = videoAsset2Track.timeRange.duration;
CMTime starttime1 = videoAsset1Track.timeRange.start;
CMTime starttime2 = videoAsset2Track.timeRange.start;
然后奇怪的事情发生了。当我登录时:
NSLog(@"video 1 duration : %f , start : %f, end : %f ", CMTimeGetSeconds(video1.duration), CMTimeGetSeconds(starttime1), CMTimeGetSeconds(endtime1));
NSLog(@"video 2 duration : %f , start : %f, end : %f ", CMTimeGetSeconds(video2.duration), CMTimeGetSeconds(starttime2), CMTimeGetSeconds(endtime2));
它总是带有 :
视频 1 始终正常,而视频 2:轨道的持续时间 < Assets 的持续时间。
视频 1 持续时间:4.738333,开始:0.000000,结束:4.738333
视频 2 持续时间:4.736871,开始:0.000000,结束:3.090011
顺便说一下,我正在使用 GPUImageVideoCamera
和 GPUImageMovieWriter
(但我认为这不重要,因为视频 1 总是可以的)拍摄视频并合并.
编辑
天哪,我还有另一个 super 奇怪的观察结果:
每当我拍摄视频时,轨道的持续时间总是比 Assets 的短。但是,如果我第二次检查它,一切都会好的......那是......在两次检查期间我应该做什么?我只是使用 AVPlayer
来播放 url...
再次编辑
伙计们,这太奇怪了!!!我只是播放 url,世界变得更美好。我不知道为什么,但至少找到了一条出路...(不,这种方式有时仍然行不通...)
最佳答案
好的,经过一番调查,我终于明白了。
最终证明与GPUImageVideoCamera
有关。而同样在使用该库的人可能会注意:如果只写[GPUImageMovieWriter finishRecording]
,是不够的(也就是说,文件没有完成)。
您必须编写 [videoCamera stopCameraCapture]
来关闭相机捕获,然后文件关闭并完成。
奇怪...
关于ios - AVAssetTrack.duration 比 AVURLAsset.duration 短,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34359119/
我是 swift 和编程的新手,我尝试连接一些记录器文件,我成功地制作了这样的文件: func concatenateFiles(audioFiles: [URL], completion: @esc
我有一个录制视频的应用。 为了处理手机旋转,我有以下代码: // called on phone rotation AVCaptureConnection *previewLayerC
我有一些音频文件需要插入到 AVMutableComposition 中。每个音频都有不同的音量。为此,我为每个音频文件创建了一个 AVMutableTrackComposition 和一个 AVAs
我试图从 AVAssetTrack 对象获取 asset 属性,但有时它是 nil。似乎只有在我使用 Dispatch.main.async 之后才会出现问题。 根据documentation ,需要
我的设置相当简单。我有一个包含视频和音频轨道的作品。视频以左横向或右横向拍摄。视频帧缓冲区使用 AVCaptureVideoDataOutput 对象捕获并使用 AVAssetWriter/AVAss
具有以下内容和一个 MP3 文件: AVURLAsset* audio = [[AVURLAsset alloc]initWithURL:audioUrl options:nil]; AVAssetT
我试图区分具有可变帧速率的 AVAssets 和那些不可变帧速率的 AVAssets。 我知道我可以解码每一帧并检查帧持续时间是否不会改变每一帧,但这代价高昂,我查看了可用的元数据但没有发现任何有用的
我正在使用 AVAssetExportSession在 iOS 应用程序中导出视频。为了以正确的方向呈现视频,我正在使用 AVAssetTrack的 preferredTransform .对于一些源
我在 AVAsset 中有一个音频文件(mp3、wav、aiff、...)然后得到 AVAssetTrack . 我正在寻找一种从该 Assets 中以 Apple 格式(如 AVFileType)查
像这样加载 AVAsset 之后: AVAsset *asset = [AVAsset assetWithURL:url]; 我想知道音轨的采样率是多少。目前,我得到的音轨是这样的: AVAssetT
我正在录制屏幕,我想将麦克风音频和应用程序音频中的声音组合成一个带有 ONE stero 音轨的视频。与 AVAssetWriter我有设置,它会创建一个包含两个单独音轨的视频文件;一个用于设备音频的
这很奇怪,经过数小时的测试我仍然无法弄清楚。 好的,这就是我要做的:合并两个视频,也就是一个接一个地追加。 我拍摄了两个视频,然后有两个网址。然后我使用以下方法创建了两个 AVURLAsset: A
IOS 4.0的新功能列表显示,AV Foundation框架具有媒体 Assets 管理、轨道管理、媒体编辑和媒体项元数据管理。他们这是什么意思? 使用轨道管理和媒体 Assets 管理,我可以从照
我是一名优秀的程序员,十分优秀!