首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QTKit没有正确混合音频曲目

QTKit没有正确混合音频曲目
EN

Stack Overflow用户
提问于 2011-03-19 01:53:57
回答 1查看 775关注 0票数 2

我尝试导入一个电影文件两次(2个独立的QTMovie实例),将第二个实例的音轨偏移一秒,然后将其与第一个实例的音轨混合。它不能混在一起。第一首曲目开始播放,然后停止,第二首曲目开始播放。当我使用两个内容不同的电影文件时,这不会发生,但当我将文件复制到不同的名称时,它仍然会发生!我创建了一个简单的示例项目来说明这个问题:http://cl.ly/0s2U2s3S2F0Y052D2v0O/InsertTrack.zip

我也很乐意为这个问题的解决方案买单!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-21 03:14:02

解决方案并不是很直接,因为这里有一些事情:

如果音轨的编码与已存在的音轨的编码相匹配,则

  1. -[QTMovie insertSegmentOf(Movie|Track):timeRange:atTime:] 不会将音轨添加到影片中。相反,它会将片段插入到现有的电影中,就像QuickTime播放器专业版的“添加选择”所做的那样(即,如果你的电影是AAAAA型的,你插入了bbb,那么你就会得到AAbbbAAA)。(诚然,这里的类引用在…中并不是很简洁)
  2. 不幸的是,-[QTMovie insertSegmentOfTrack:fromRange:scaledToRange:] 既不添加曲目,也不添加。相反,它的行为类似于insertSegmentOfTrack:timeRange:atTime:,增加了更改插入片段的持续时间的能力。

解决方案是使用-[QTMovie insertSegmentOfMovie:fromRange:scaledToRange:]

对于您的示例,这将变成

代码语言:javascript
复制
-(QTMovie *) composedMovie
{
    NSDictionary *editableAttribute = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:QTMovieEditableAttribute];
    // load and prepare the base movie:
    QTMovie *composition = [QTMovie movieWithFile:fileName error:nil];
    [composition setMovieAttributes:editableAttribute];
    // load and prepare the insertion
    QTMovie *insertion = [QTMovie movieWithFile:insertionFileName error:nil]:
    [insertion setMovieAttributes:editableAttribute];
    // as you'll probably want to avoid adding the video tracks...
    NSArray *videoTracks = [insertion tracksOfType:QTMediaTypeVideo];
    for (QTTrack *track in videoTracks) {
        [insertion removeTrack:track];
    }
    // figure out the time-range
    QTTimeRange sourceRange = QTMakeTimeRange( QTZeroTime, [insertion duration] );
    QTTimeRange destinationRange = sourceRange;
    destinationRange.time = QTMakeTime( 1ll, 1l ); // use an offset of 1 second
    [composition insertSegmentOfMovie:insertion fromRange:sourceRange scaledToRange:destinationRange];
    return composition;
}

我知道,对于非常直接的…来说,这是相当多的代码但这是它的工作方式:-(

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5355955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档