wang-bin / mdk-sdk

multimedia development kit. download:
https://sourceforge.net/projects/mdk-sdk/files/
274 stars 32 forks source link

是否有接口可以传入h264数据解码播放 #186

Closed ken626014896 closed 6 months ago

ken626014896 commented 6 months ago

想把硬编码得到的h264数据,放到mdk播放

wang-bin commented 6 months ago

类似这个? https://github.com/wang-bin/mdk-sdk/issues/175

ken626014896 commented 6 months ago

可能不太一样,我得到的是一帧一帧h264裸码流,还要mdk解码

wang-bin commented 6 months ago

你可以把数据写到socket,player这边用fd协议播放

ken626014896 commented 6 months ago

请问有fd协议的例子看看吗,比例fd协议的播放地址结构是怎么样的

wang-bin commented 6 months ago

使用socketpair生成一对socket fd,一个用来写编码数据,一个用来播放器读

player.setMedia("fd:");  // fd 协议值支持 "fd:"
player.setProperty("avio.fd", to_string(fd_read)); // ffmpeg url protocol的option
feiyangqingyun commented 4 months ago

大佬可以用这个fd的方式实现播放ws://127.0.0.1:8080/stream/V1.live.flv 这种视频流吗?

wang-bin commented 4 months ago

大佬可以用这个fd的方式实现播放ws://127.0.0.1:8080/stream/V1.live.flv 这种视频流吗?

可以,这方法其实把协议处理交给用户了,用户只要提供处理后的视频数据就行

feiyangqingyun commented 4 months ago

有没有简单示例?数据通过设置属性发就行?

feiyangqingyun commented 4 months ago

把数据转成string设置?

wang-bin commented 4 months ago

有没有简单示例?数据通过设置属性发就行?

前面的回复就是例子,完整例子我没有。数据写到fd里去啊,数据格式需要ffmpeg可识别的,比如这个issue里的h264码流,也可以是你把websocket读出来的flv直接写进去

feiyangqingyun commented 4 months ago

是不是不断取到的二进制数据转string再setproperty

wang-bin commented 4 months ago

是不是不断取到的二进制数据转string再setproperty

直接写二进制数据到fd。你看看socket pair、进程间通信这些就明白了

feiyangqingyun commented 2 months ago

王总有空写个最简单的示例吗?已经通过socket拿到了flv的264视频流数据,可以在ffmpeg中正常解码播放,但是不知道如何在mdk中播放。谢谢

feiyangqingyun commented 1 month ago

王总啊,帮帮忙,抽空看下能不能写个简单示例,如何将websocket的数据发给mdk解码,跪谢!

wang-bin commented 1 month ago

就是进程间通信的各种方法啊,pipe、unix socket甚至tcp都可以,具体代码让ai写写也够了。或者你用websocket的话自己打个补丁让ffmpeg支持websocket也行

feiyangqingyun commented 1 month ago

用ffmpeg纯代码实现websocket的数据解码已经会,但是mdk里面不知道如何接入

wang-bin commented 1 month ago

用ffmpeg纯代码实现websocket的数据解码已经会,但是mdk里面不知道如何接入

你加个新协议比如ws不就行了,调用代码不需要改啊

feiyangqingyun commented 1 month ago

你是说加到ffmpeg代码中然后重新编译ffmpeg生成库

wang-bin commented 1 week ago

最新的包加了个新的接口appendBuffer(data,size)用于播放实时产生的二进制流,要求是setMedia()参数为"stream:",然后可以不停地添加数据播放,比如websocket接受到的数据都appendBuffer调用一下。websocket的例子在 https://github.com/wang-bin/mdk-examples/blob/master/Native/stream.cpp