草庐IT

QT + FFmpeg 5.x + x264 + x265 + SDL2 音视频播放器

QT+FFmpeg5.x+x264+x265+SDL2音视频播放器使用了QT的QML设计界面,人机交互;使用了FFmpeg5.x+x264+x265+SDL2完成了音视频的解析到播放;阅读了ffplay的源码,用到了ffplay的核心思想.想熟悉ffmpeg和ffplay的朋友,都可以参考学习.代码自取:https://github.com/truedei/UPlayer展示图1.主界面2.通过中心的按钮选择媒体文件3.通过菜单打开文件4.开始播放5.暂停播放6.继续播放7.快进可以想象一下,截图没效果8.快退可以想象一下,截图没效果9.静音10.调整音量11.时时进度条和时间显示12.停止播

c++ - Media Foundation 网络摄像头视频 H264 编码/解码在播放时产生伪像

我有一个解决方案,我使用MediaFoundation的h264编码器对来自网络摄像头的视频(YUY2)样本进行编码。然后我通过TCP连接将它发送到另一个应用程序,该应用程序使用MediaFoundation的h264解码器将流解码回YUY2格式。解码后,视频样本/图像使用DirectX呈现在屏幕上。问题在于,在关键帧之间,视频图像会出现越来越多的伪像。收到关键帧时,伪影消失。我将TCP连接排除在范围之外,并在编码后立即进行解码,但仍然有工件困扰着我。这是从网络摄像头接收样本的回调方法://------------------------------------------------

c++ - 使用 opencv 的 H264 视频编解码器

我正在尝试使用opencv创建电影,我需要输出文件为H264格式。我在opencv中使用了以下fourcc,但出现错误,提示未安装合适的编解码器。fourcc=CV_FOURCC('H','2','6','4');当我运行我的应用程序时,我收到以下错误消息:Couldnotfindencoderforcodecid28:Encodernotfound我需要什么才能在OpenCV中使用这个编解码器? 最佳答案 H264不是编解码器,而是标准,而例如x264是实现H264标准的编码器(CV_FOURCC('X','2','6','4')

c++ - 如何加速OpenH264的解码器

故事我正在开发一个流畅的60FPS1080p(全高清)视频传输应用程序,它以x264编码,通过LAN将编码数据发送到接收设备,然后使用OpenH264的解码器对其进行解码。我设法让它工作,它运行良好且稳定,但我发现它非常慢(大约20FPS,而不是所需的60FPS)。问题我进行了大量测试,发现问题出在OpenH264解码器上。解码器使用了我的i5-2500@3.9Ghz的完整核心(CPU使用率总计25%),这太高了。尽管解码器是单线程的,但我在MediaPlayerClassic上测试了原始数据,其播放(以60FPS的速度)仅导致0.3%的CPU使用率。(当将渲染引擎切换到“旧视频渲染”

c++ - OpenCV IP 摄像机应用程序崩溃 [h264 @ 0xxxxx] 访问单元中缺少图片

我在cpp中有一个opencv应用程序。它使用opencv的简单构造捕获视频流并将其保存到视频文件。它与我的网络摄像头完美配合。但是,当我运行它以从IPCamara捕获流时,它可能会在大约十秒后崩溃。我的编译命令是:g++-O3IP_Camera_linux.cpp-oIP_Camera`pkg-config--cflags--libsopencv`我的网络摄像头流是这样访问的:conststringStream="rtsp://admin:xxxx@192.168.0.101/";它确实运行完美,显示视频并保存它直到显示的视频卡住和应用程序崩溃。虽然终端上的错误消息是:[h264@0

c++ - 使用ffmpeg(libavcodec)通过RTP解码H264视频的问题

我使用SDP的profile-level-id和sprop-parameter-set设置了AvCodecContext的profile_idc,level_idc,extradata和extradata_size。我将编码切片,SPS,PPS和NAL_IDR_SLICE数据包的解码分开:在里面:uint8_tstart_sequence[]={0,0,1};intsize=recv(id_de_la_socket,(char*)rtpReceive,65535,0);编码切片:char*z=newchar[size-16+sizeof(start_sequence)];memcpy(

c++ - H.264编码的NAL/切片分割

我正在开发一个需要通过UDP(一种视频通话)实时传输H.264编码视频的应用程序。最近我们已切换到硬件编码器,它仅支持有限数量的H.264配置文件。结果,每个编码的视频帧现在都由一个NALu组成。更准确地说,对于IDR(关键)帧,编码器生成SSP、PSP和单个IDR切片,对于其他帧-单个非IDR切片。现在,我的目标是将切片NALu分成几个较小的切片,因为如果NALu不能完全组装而发生数据包丢失,它就会完全丢失。至少我需要在空间上分割切片,即将宏block的范围放入不同的NALus中。如果可能-我还想提取质量层,以便基础层可以受到更多冗余数据包(FEC)的保护。注意:我不是在谈论转码。它

c++ - ffmpeg::avcodec_encode_video 设置 PTS h264

我正在尝试使用libavcodec将视频编码为H264ffmpeg::avcodec_encode_video(codec,output,size,avframe);返回一个错误,我没有正确设置avframe->pts值。我尝试将其设置为0,1、AV_NOPTS_VALUE和90khz*framenumber但仍然出现错误non-strictly-monotonicPTSffmpeg.c示例使用ffmpeg::av_rescale_q()设置packet.pts,但这仅在您对帧进行编码后调用!当与MP4V编解码器一起使用时,avcodec_encode_video()会自行正确设置pt

c++ - 如何控制码率 MEDIASUBTYPE_H264 directshow?

我有一个logitechc920网络摄像头,它提供一个编码的h264捕获pin(子类型:MEDIASUBTYPE_H264)。h264pin支持以下分辨率:FORMAT_VideoInfo-subtype:MEDIASUBTYPE_H264640x480@30fpsFORMAT_VideoInfo-subtype:MEDIASUBTYPE_H264160x90@30fpsFORMAT_VideoInfo-subtype:MEDIASUBTYPE_H264160x120@30fpsFORMAT_VideoInfo-subtype:MEDIASUBTYPE_H264176x144@30fp

ios - 在 iOS 上解码编码为 H.264 的单帧

我正在将PC上生成的单个图像编码为H.264,通过网络将其发送到iPad,我想对其进行解码。iPad端的循环将是:从网络抓取帧对其进行解码。展示它。但是,我找不到一个API可以在给定编码帧的单个缓冲区的情况下解码为原始图像。我想利用iPad上的硬件解码。我最后的计划是创建一个内存映射文件,将单个帧写入该文件并将该文件用作MPMoviePlayerController的输入。这是一个非常hacky的解决方案。有人可以建议我如何获取编码的内存缓冲区并使用硬件将其解码到另一个内存缓冲区吗?谢谢 最佳答案 这听起来像是在PC端更适合JPG或