新西兰天维网社区

标题: chromecast [打印本页]

作者: DDD888    时间: 2019-9-9 09:42:26     标题: chromecast

我可以将一个video url编程放到chromecast上,但我不能用一个video url, 一个audio url同时在chromecast上播放,例如同一电影的声音配不同清晰度的录像,例如720p, 1080p, 4k不同清晰度的同一段录像,太难了,找不到资料
这是我写的csharp 代码

await ChromeCastController.LoadMedia(
                        FullUrl,
                        "video/mp4",
                        null,
                        StreamType.BUFFERED,
                        0,
                        null);




作者: XiaoFaye    时间: 2019-9-9 10:34:12

流媒体自适应的呀,为什么要好几个不同清晰度的视频? 难道Netflix每个清晰度都保存了一个文件???
作者: DDD888    时间: 2019-9-9 10:41:47

XiaoFaye 发表于 2019-9-9 09:34
流媒体自适应的呀,为什么要好几个不同清晰度的视频? 难道Netflix每个清晰度都保存了一个文件??? ...

我不订netflix,不知道啦

我用的是youtube,对同一部电影,你可以选择不同清晰度的录像
作者: rzrljb    时间: 2019-9-10 11:46:11

XiaoFaye 发表于 2019-9-9 09:34
流媒体自适应的呀,为什么要好几个不同清晰度的视频? 难道Netflix每个清晰度都保存了一个文件??? ...

事实上业内的作法就是每个清晰度保留一套文件,然后根据你带宽自适应
作者: DDD888    时间: 2019-9-10 11:57:44

rzrljb 发表于 2019-9-10 10:46
事实上业内的作法就是每个清晰度保留一套文件,然后根据你带宽自适应

你的解释很合理,不然如何实现我都想不出来啦
作者: rzrljb    时间: 2019-9-10 12:04:55

DDD888 发表于 2019-9-10 10:57
你的解释很合理,不然如何实现我都想不出来啦

一般是根据你原始视频往下压几个档,音频的话也会跟着一起压进去
作者: DDD888    时间: 2019-9-10 12:11:38

rzrljb 发表于 2019-9-10 11:04
一般是根据你原始视频往下压几个档,音频的话也会跟着一起压进去

但youtube提供adaptive stream,音频和视频是分开的,各提供不同品质,有音频和视频在一起的,但图像质量不是最高的
作者: rzrljb    时间: 2019-9-10 12:17:34

DDD888 发表于 2019-9-10 11:11
但youtube提供adaptive stream,音频和视频是分开的,各提供不同品质,有音频和视频在一起的,但图像质量 ...

在我看来这是分离压制存储,然后播放器动态组合
作者: DDD888    时间: 2019-9-10 12:26:13

rzrljb 发表于 2019-9-10 11:17
在我看来这是分离压制存储,然后播放器动态组合

是的,我就想知道如何用代码让chromecast同时播放两个不同的文件,音频文件和视频文件,来看电视既有画面又有声音啦
作者: rzrljb    时间: 2019-9-10 12:39:12

DDD888 发表于 2019-9-10 11:26
是的,我就想知道如何用代码让chromecast同时播放两个不同的文件,音频文件和视频文件,来看电视既有画面 ...

你可以setup一个ffmpeg的合并服务,动态动态组合并且输出一个url,然后播放url,
作者: DDD888    时间: 2019-9-10 12:43:09

rzrljb 发表于 2019-9-10 11:39
你可以setup一个ffmpeg的合并服务,动态动态组合并且输出一个url,然后播放url,  ...

那需要花时间,例如20秒以上的时间来下载,合并,取决于录像的长短,对只看一次的录像,我不愿意浪费我的硬盘空间
作者: rzrljb    时间: 2019-9-10 13:04:58

DDD888 发表于 2019-9-10 11:43
那需要花时间,例如20秒以上的时间来下载,合并,取决于录像的长短,对只看一次的录像,我不愿意浪费我的 ...

你可以直接推流,不保存接收到处理完直接推走
作者: DDD888    时间: 2019-9-10 13:09:45

rzrljb 发表于 2019-9-10 12:04
你可以直接推流,不保存接收到处理完直接推走

谢谢,可以给个网站连接,让我看看你说的,我实在不知道如何实现,我就知道用ffmpeg合并两个文件的command 命令
作者: rzrljb    时间: 2019-9-10 13:22:14

DDD888 发表于 2019-9-10 12:09
谢谢,可以给个网站连接,让我看看你说的,我实在不知道如何实现,我就知道用ffmpeg合并两个文件的comman ...

https://www.jianshu.com/p/c141fc7881e7
ffmpeg 推流和输出一样的,只是输出的时候写的是xxx.mp4这个写rtmp://127.0.0.1:1935/live/123,用vlc就能播放这个流,之前合并,压缩等操作该怎么做就怎么做
作者: DDD888    时间: 2019-9-10 14:32:18

rzrljb 发表于 2019-9-10 12:22
https://www.jianshu.com/p/c141fc7881e7
ffmpeg 推流和输出一样的,只是输出的时候写的是xxx.mp4这个写r ...

谢谢回答,但这对我没用,chromecast不支持rmtp
https://stackoverflow.com/questi ... h-google-chromecast
作者: rzrljb    时间: 2019-9-10 15:26:16

DDD888 发表于 2019-9-10 13:32
谢谢回答,但这对我没用,chromecast不支持rmtp
https://stackoverflow.com/questions/18094988/rtmp-wit ...

那如果你想用hls的话就得用nigix搭一个hls服务,它可以接收rtmp然后转换成m3u8并且自动删除播完的,可以设置缓存,不过太复杂了感觉不划算
作者: DDD888    时间: 2019-9-10 15:31:35

rzrljb 发表于 2019-9-10 14:26
那如果你想用hls的话就得用nigix搭一个hls服务,它可以接收rtmp然后转换成m3u8并且自动删除播完的,可以 ...

谢谢,这是个新思路,但不是我想找的,我就想简单用现成的chromecast
作者: star_astro    时间: 2019-9-10 16:22:35

随便抓了个视频,貌似get_video_info URI会给一个播放列表(被当作一个叫YTPlayer的JS的参数),videoplayback URI开头的
其中有一个表单名叫itag和aitag 分别代表视频编码和音频编码,完整的list如下:

https://gist.github.com/sidneys/7095afe4da4ae58694d128b1034e01e2


所以,想用videoplayback传form来控制清晰度基本上需要自己在客户端实现一个播放器,或者起码有JS来进行音视频同步。

偷懒的方法就是找音频视频编码在一起的,比如itag=46, 不过不一定有,哈哈

想进一步研究可以利用现成的工具去debug

https://github.com/ytdl-org/youtube-dl

youtube-dl -v --print-traffic --write-pages <URI>

作者: DDD888    时间: 2019-9-10 17:36:18

star_astro 发表于 2019-9-10 15:22
随便抓了个视频,貌似get_video_info URI会给一个播放列表(被当作一个叫YTPlayer的JS的参数),videoplayb ...

音频视频编码在一起的图像质量不高,只有720p,我想要1080p




欢迎光临 新西兰天维网社区 (http://bbs.skykiwi.com/) Powered by Discuz! X2