ios 播放输出视频问题
来源:9-2 Java调用C接口-1

慕标8476938
2018-11-12
c语言,抽取一个视频流,抽取完之后,直接放到一个.mp4文件下,然后播放这个mp4。ios下面抽取一个视频流之后,为什么放到一个.mp4文件下,这个mp4文件路径也对,在沙盒下面放着,播放的时候为什么播放不出来,我用的苹果自带的播放器AVPlayerLayer播放的,下面是我的代码
+ (NSString *)mediea_info:(NSURL *)inputUrl{
NSString *inputStr = [inputUrl absoluteString];
NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSString *outputPath = [docDir stringByAppendingPathComponent:@"output.mp4"];
const char *inputchar = [inputStr UTF8String];
const char *outputchar = [outputPath UTF8String];
AVFormatContext *fmt_ctx = NULL;
int ret;
int audio_index;
size_t len;
AVPacket pkt;
av_log_set_level(AV_LOG_INFO);
ret = avformat_open_input(&fmt_ctx, inputchar, NULL, NULL);
if (ret < 0) {
av_log(NULL,AV_LOG_ERROR,"Can't open file: %s\n",av_err2str(ret));
}
FILE *dst_fd = fopen(outputchar, "wb");
if (!dst_fd) {
av_log(NULL, AV_LOG_ERROR, "can't open outputfile");
avformat_close_input(&fmt_ctx);
return nil;
}
av_dump_format(fmt_ctx,0,inputchar,0);
ret = av_find_best_stream(fmt_ctx, AVMEDIA_TYPE_AUDIO, -1, -1, NULL, 0);
if (ret < 0) {
av_log(NULL,AV_LOG_ERROR,"没有找到语音流");
avformat_close_input(&fmt_ctx);
fclose(dst_fd);
return nil;
}
av_init_packet(&pkt);
audio_index = ret;
while (av_read_frame(fmt_ctx, &pkt) >= 0) {
if (pkt.stream_index == audio_index) {
len = fwrite(pkt.data, 1, pkt.size, dst_fd);
if (len != pkt.size) {
av_log(NULL,AV_LOG_WARNING,"waring");
}
}
av_packet_unref(&pkt);
}
if (dst_fd) {
fclose(dst_fd);
}
avformat_close_input(&fmt_ctx);
return [NSString stringWithCString:outputchar encoding:NSUTF8StringEncoding];
}
1回答
-
李超
2018-11-12
你的问题我没看明白,抽取的数据为啥放到mp4 下?你是咋放的?
032018-11-12
相似问题