sonysuqin / WasmVideoPlayer

Play file/stream with wasm & webgl & web audio api, using ffmpeg for multi codec support, especially for h265,support http, websocket, http-flv stream.
GNU General Public License v3.0
1.3k stars 375 forks source link

为什么使用 canvas 进行渲染 #4

Closed nighca closed 5 years ago

nighca commented 5 years ago

请教一下,为什么项目中视频画面的绘制是通过 canvas 来做,而不是将数据转换成浏览器支持的格式(如 H.264),然后喂给 <video> 进行播放?

sonysuqin commented 5 years ago

这个项目的本来目的是播放H265,H264直接把MP4给video没有问题,但是H265给了播不了啊。

Hanxing Yang notifications@github.com 于2019年5月20日周一 下午6:37写道:

请教一下,为什么项目中视频画面的绘制是通过 canvas 来做,而不是将数据转换成浏览器支持的格式(如 H.264),然后喂给

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/sonysuqin/WasmVideoPlayer/issues/4?email_source=notifications&email_token=ABBBTEOQREUQCM7FVA2XCCLPWJ5NTA5CNFSM4HOAU7VKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4GUWC4IA, or mute the thread https://github.com/notifications/unsubscribe-auth/ABBBTENXQ7DCQFJLMNHKVM3PWJ5NTANCNFSM4HOAU7VA .

nighca commented 5 years ago

@sonysuqin 嗯,我明白直接给 H.265 播不了;我是想问,为什么不是把 H.265 内容转换(decode & encode?)成 H.264 然后给 <video>

因为看起来要用 <canvas> 绘制视频内容,本身也得做一次 decode?是我哪里理解错误了嘛?

sonysuqin commented 5 years ago

你说的方案要把H265解码成YUV,然后YUV编码成H264,给

Hanxing Yang notifications@github.com 于2019年6月5日周三 下午6:14写道:

@sonysuqin https://github.com/sonysuqin 嗯,我明白直接给 H.265 播不了;我是想问,为什么不是把 H.265 内容转换(decode & encode?)成 H.264 然后给

因为看起来要用 绘制视频内容,本身也得做一次 decode?是我哪里理解错误了嘛?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/sonysuqin/WasmVideoPlayer/issues/4?email_source=notifications&email_token=ABBBTEIJFR6LITTOLON2GWTPY6G2FA5CNFSM4HOAU7VKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODW7IG4A#issuecomment-499024752, or mute the thread https://github.com/notifications/unsubscribe-auth/ABBBTEPXFVVREURXUBZUFH3PY6G2FANCNFSM4HOAU7VA .

nighca commented 5 years ago

@sonysuqin 明白,那主要还是性能的考虑;因为一般情况下支持不支持的格式,常规思路都是转码到支持的格式,然后走原生的播放手段;而用中间产物自己去做渲染,不是常规思路,这是这边我会来问的原因

a7a2 commented 5 years ago

免费得av1得wasm实现也是基于canvas 进行渲染 详细参考比本项目发布更早得av1 wasm项目:https://github.com/GoogleChromeLabs/wasm-av1