audio-video-dev-tutorial icon indicating copy to clipboard operation
audio-video-dev-tutorial copied to clipboard

27_h264_decode,解码h264出的yuv文件播放完全错误,播放显示红绿横杠

Open negier opened this issue 2 years ago • 1 comments

我试了两个h264文件,然后代码也是拿你的跑的,h264用probe命令看过,格式是yuv420p的,没问题,也测试过能正常播放。

但是解码出的yuv文件无法用播放; 而且和用ffmpeg命令解出来的yuv文件大小都是不一样的,官方解的能播。

得出结论,代码哪里错了,如果您怀疑是我的h264文件问题,得到您允许我可以把两个h264文件通过邮箱发给您,如我前面所述,能播放,说明我的h264是没问题的。

无论如何,在此提出问题,我暂时也没有空,有空了,我也帮着修吧

negier avatar Mar 07 '22 03:03 negier

这似乎与视频分辨率有关,当一个16:9 或者4:3的视频是可以正常转码出来的,但当视频的比例不是这两个比例时,那就会出现错误。可以尝试使用以下修改,帮我显示出了1000x562分辨率的视频 for (int i = 0; i < frame->height; i++) { outFile.write((char *) (frame->data[0] + i * frame->linesize[0]), frame->width); } for (int i = 0; i < frame->height / 2; i++) { outFile.write((char *) (frame->data[1] + i * frame->linesize[1]), frame->width / 2); } for (int i = 0; i < frame->height / 2; i++) { outFile.write((char *) (frame->data[2] + i * frame->linesize[2]), frame->width / 2); }

Miles612 avatar Sep 22 '23 08:09 Miles612