[ffmpeg] 不能正常播放视频,播放窗口绿屏
来源:互联网 发布:php assert 编辑:程序博客网 时间:2024/04/28 10:58
popcorn player 使用 ffmpeg-2.3 + Linux + SDL1.2
【问题】popcorn播放视频, 播放窗口绿屏幕
【分析】dump AVFrame 图像帧(数据源) --> dump SDL_Overlay 图像帧(目标数据)
【结果】dump AVFrame 图像帧(数据源), OK;dump SDL_Overlay 图像帧(目标数据), Fail.
【原因】
错误的做法:
static int videoImage_display(VideoState *video_states, AVFrame *frame)
{
//传递AVFrame 的数据给SDL_Overlayer
//AVPicture picture;
SDL_Rect rect;
AVPicture pict = {{0}};
SDL_LockYUVOverlay(video_states->layer1);
// SDL_Overlayer的pixels指针指向AVFrame的数据
video_states->layer1->pixels[0] = frame->data[0];
video_states->layer1->pixels[1] = frame->data[1];
video_states->layer1->pixels[2] = frame->data[2];
video_states->layer1->pitches[0] = frame->linesize[0];
video_states->layer1->pitches[1] = frame->linesize[2];
video_states->layer1->pitches[2] = frame->linesize[1];
SDL_DisplayYUVOverlay(video_states->layer1, &rect),
正确的做法:
static int videoImage_display(VideoState *video_states, AVFrame *frame)
{
//AVPicture picture;
SDL_Rect rect;
AVPicture pict = {{0}};
SDL_LockYUVOverlay(video_states->layer1);
//video_states->layer1->pixels[0] = frame->data[0];
//video_states->layer1->pixels[1] = frame->data[1];
//video_states->layer1->pixels[2] = frame->data[2];
//video_states->layer1->pitches[0] = frame->linesize[0];
//video_states->layer1->pitches[1] = frame->linesize[2];
//video_states->layer1->pitches[2] = frame->linesize[1];
pict.data[0] = video_states->layer1->pixels[0];
pict.data[1] = video_states->layer1->pixels[2];
pict.data[2] = video_states->layer1->pixels[1];
pict.linesize[0] = video_states->layer1->pitches[0];
pict.linesize[1] = video_states->layer1->pitches[2];
pict.linesize[2] = video_states->layer1->pitches[1];
//AVFrame的数据拷贝到SDL_Overlay存放数据的内存区域
/*scale_image call sws_scale() */
scale_image(frame->data, frame->linesize,
frame->width, frame->height, frame->format,
pict.data, pict.linesize,
frame->width, frame->height, AV_PIX_FMT_YUV420P,
SWS_BICUBIC);
SDL_DisplayYUVOverlay(video_states->layer1, &rect);
- [ffmpeg] 不能正常播放视频,播放窗口绿屏
- FFMpeg视频播放器
- ffmpeg播放视频音频
- ffmpeg视频播放过程
- ffmpeg用来播放视频
- ffmpeg SDL播放视频
- FFmpeg视频播放流程
- FFmpeg视频播放-SurfaceView
- ffmpeg 视频播放
- FFMPEG 之视频播放
- 自学FFmpeg播放视频
- Firefox 不能播放视频
- 视频不能播放
- MFC 播放视频 FFMPEG SDL
- sdl+ffmpeg视频播放器
- FFmpeg+SDL视频播放(1)
- FFmpeg+SDL视频播放(2)
- FFmpeg+SDL视频播放(4)
- sqoop实现Mysql、Oracle与hdfs之间数据的互导
- CIQ常见的问题
- linux 下RTL8723/RTL8188调试记录(命令行)
- 检查密码复杂度的C#正则表达式
- 使用PHP导入和导出CSV文件
- [ffmpeg] 不能正常播放视频,播放窗口绿屏
- AddData(添加数据)对话框的实现与扩展(C#)
- 想要月入10万以上??那就把它背下来!
- Jquery实现页面定时跳转
- HttpClient教程(一)
- block的使用
- 动态规划方法生成最优二叉查找树
- COI清关证书
- c++ 链表中析构函数的编写