6

在我们的 iOS 应用程序中,我们将收到 flv**(Container)** 文件,其中包含类似这样的视频和音频流

Input #0, flv, from 'test.flv':

  Metadata:
    streamName      : flvLiveStream
    encoder         : Lavf55.12.100
  Duration: 00:00:48.00, start: 66064.401000, bitrate: 632 kb/s
    Stream #0:0, 41, 1/1000: **Video: h264 (Baseline)**, 1 reference frame, yuv420p(progressive, left), 1280x720, 0/1, 15 fps, 1k tbr, 1k tbn
    Stream #0:1, 14, 1/1000: **Audio: pcm_alaw,** 8000 Hz, mono, s16, 64 kb/s

这也需要转换为 mp4 容器和格式,我正在尝试使用 ffmpeg,我相信这只是方法,使用 transcoding.c 文件但在此阶段失败

Impossible to convert between the formats supported by the filter 'in' and the filter 'auto_scaler_0'

我正在尝试从 ffmpeg -I test.flv test.mp4 之类的 OSX 命令中学习,

移植到 iOS 是否可行,它是否适用于所有不同的场景,

总之

--- 在 iOS 设备上将 flv 转换为 mp4 的最佳方法是什么,其中视频将采用 h264,音频将采用 swf 编解码器?

4

1 回答 1

1
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"MyVideo.mp4"];
NSURL *outputURL = [NSURL fileURLWithPath:filePath];

[self convertVideoToLowQuailtyWithInputURL:localUrl outputURL:outputURL handler:^(AVAssetExportSession *exportSession)
{
    if (exportSession.status == AVAssetExportSessionStatusCompleted) {
        // Video conversation completed
    }          
}];

- (void)convertVideoToLowQuailtyWithInputURL:(NSURL*)inputURL outputURL:(NSURL*)outputURL handler:(void (^)(AVAssetExportSession*))handler {
    [[NSFileManager defaultManager] removeItemAtURL:outputURL error:nil];
    AVURLAsset *asset = [AVURLAsset URLAssetWithURL:inputURL options:nil];
    AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetPassthrough];
    exportSession.outputURL = outputURL;
    exportSession.outputFileType = AVFileTypeMPEG4;
    [exportSession exportAsynchronouslyWithCompletionHandler:^(void) {
         handler(exportSession);
     }];
}
于 2018-08-13T07:27:25.103 回答