DelphiOpenH264解码
我在编码和解码过程中使用cisco OpenH264编解码器,编码阶段工作得很好,我可以正确读取编码的H.264文件,问题在于我的解码过程,主要是从I420到ARGB的转换,请任何人帮助解决这个问题 这是我的解码函数(来自OpenH264包装DLL): 下面是我的Delphi实现:DelphiOpenH264解码,delphi,openh264,Delphi,Openh264,我在编码和解码过程中使用cisco OpenH264编解码器,编码阶段工作得很好,我可以正确读取编码的H.264文件,问题在于我的解码过程,主要是从I420到ARGB的转换,请任何人帮助解决这个问题 这是我的解码函数(来自OpenH264包装DLL): 下面是我的Delphi实现: Image.Picture.Bitmap.PixelFormat := pf24bit; Image.Picture.Bitmap.Width := 320; Image.Picture.Bitmap.Height
Image.Picture.Bitmap.PixelFormat := pf24bit;
Image.Picture.Bitmap.Width := 320;
Image.Picture.Bitmap.Height := 240;
...
Result:=H264Decoder_decode(FEncodedBuffer,
Image.Picture.Bitmap.ScanLine[Image.Picture.Bitmap.Height-1],
EncodedBufferSize,LWidth,LHeight);
if result=0 then Image.Repaint;
非常感谢。您给h264解码器解码()
的步幅大小(int-dst\u-stride\u-frame
)必须是width*3
也就是说,因为您希望转换为24位RGB图像,其中一个像素需要3个字节(24位/8)
使用
width*2
转换后的图像将仅包含2/3的数据,从而生成图像<如果您想转换为32位RGB,代码>宽度*4将生效。非常感谢,我解决了这个问题;问题在于我设置了:
Image.Picture.Bitmap.PixelFormat := pf24bit;
但是正确的
像素格式是PF32位
非常感谢,如果我将宽度*2
更改为宽度*3
我也会得到AV。您可以提供完整的Delphi版本的OpenH264吗?是否可以在某些存储库(例如GitHub)或其他下载位置上载?我非常需要这些:-)我在一个项目示例Delphi+Android(Java)中工作,我想接收设备屏幕的实时流,但我想在Delphi上以TImage
的形式接收,就像您在上面的问题中所展示的那样。
Image.Picture.Bitmap.PixelFormat := pf24bit;