如何获取开源播放器解码后的数据呢
现在打算利用vlc(开源播放器)解码后的数据做开发,如何在自己的程序中调用到这些数据呢? 想打开播放器后,可以随时获取其解码后的数据进行利用。你是想获得yuv数据吗?
这个好像可以通过获得窗口内容来获得,具体操作我没有操作过 孙悟空 发表于 2014-4-20 19:39
你是想获得yuv数据吗?
这个好像可以通过获得窗口内容来获得,具体操作我没有操作过 ...
嗯,我想获取解码后的yuv数据,还没有可执行的方案,谢谢你的回答 如果有源码,可以通过获得源码里面的avcodec_decode_video2之后的frame的数据写出来,这个就是解码后的yuv数据 孙悟空 发表于 2014-4-21 20:22
如果有源码,可以通过获得源码里面的avcodec_decode_video2之后的frame的数据写出来,这个就是解码后的yuv ...
嗯,我也是这样想的,它是开源的,软解码的核心也是ffmpeg,谢谢哈 孙悟空 发表于 2014-4-21 20:22
如果有源码,可以通过获得源码里面的avcodec_decode_video2之后的frame的数据写出来,这个就是解码后的yuv ...
我已经找到解码后存放yuv数据的frame了,怎样才能把这些数据提取出来呢?我想播放器在播放视频的时候,同时进行提取
ret = avcodec_decode_video2(video_dec_ctx, frame, got_frame, &pkt);
if (ret < 0) {
fprintf(stderr, "Error decoding video frame (%s)\n", av_err2str(ret));
return ret;
}
if (*got_frame) {
printf("video_frame%s n:%d coded_n:%d pts:%s\n",
cached ? "(cached)" : "",
video_frame_count++, frame->coded_picture_number,
av_ts2timestr(frame->pts, &video_dec_ctx->time_base));
/* copy decoded frame to destination buffer:
* this is required since rawvideo expects non aligned data */
av_image_copy(video_dst_data, video_dst_linesize,
(const uint8_t **)(frame->data), frame->linesize,
video_dec_ctx->pix_fmt, video_dec_ctx->width, video_dec_ctx->height);
/* write to rawvideo file */
fwrite(video_dst_data, 1, video_dst_bufsize, video_dst_file);
}
参考一下 孙悟空 发表于 2014-4-23 17:21
参考一下
现在的播放器并没有嵌入到我的程序当中,也就是说这相当于两个工程(一个是播放器程序一个是我自己的),现在要把播放器的数据传递到我自己的工程里,有什么方式呢?两个工程之间的数据传递通常用进程间的通信,可是frame的结构体比较复杂,不好传递;有什么好的建议呢? yishengzhile 发表于 2014-4-23 18:27
现在的播放器并没有嵌入到我的程序当中,也就是说这相当于两个工程(一个是播放器程序一个是我自己的), ...
将frame里面的linedata与linesize存到shm中就可以了,windows平台没弄过
页:
[1]