honue / MoviePilot-Plugins

MoviePilot插件库
GNU General Public License v3.0
78 stars 17 forks source link

ANiStrm播放提示没有兼容的流 #15

Open Akimio521 opened 6 months ago

Akimio521 commented 6 months ago

emby的容器配置了代理的环境变量,代理是通过cf的warp 在宿主机通过该代理curl访问目标域名可以返回数据,证明代理是正常的 但是在播放时候提示没有兼容的流

honue commented 6 months ago

emby的容器配置了代理的环境变量,代理是通过cf的warp 在宿主机通过该代理curl访问目标域名可以返回数据,证明代理是正常的 但是在播放时候提示没有兼容的流

你是配置的http_proxy这个环境变量吗?可以看看embysever的log

Akimio521 commented 6 months ago

环境变量: image 再次播放提示当前没有兼容的流。请稍后再试或联系您的管理员以获取详细信息。使用docker logs emby未看到新出现的日志

honue commented 6 months ago

@Akimio521 image 在日志里搜索ffprobe 具体可以看看 https://github.com/honue/MoviePilot-Plugins/blob/main/docs/anistrm.md

Akimio521 commented 6 months ago

image

honue commented 6 months ago

image

这我就不清楚了,customprovide是不是你装了啥emby插件,我没遇到过这个问题

Akimio521 commented 6 months ago

没装什么插件 image

honue commented 6 months ago

image 我这正常秒开 换个梯子吧

Akimio521 commented 6 months ago

梯是cloudflare的warp,访问CF的Worker是正常的,我直接访问STRM的地址可以跑到60Mbps的速度

honue commented 6 months ago

打开strm emby会调ffprobe去分析网络视频的参数,浏览器直接下载和串流不一样,你的报错我没遇到过,emby是闭源的我也不知道啥问题 建议你可以自己pc 调用ffprobe看看具体问题,大概率是网络问题,具体为什么我也不知道,这部分不属于插件这的问题,我也解决不了。

Akimio521 commented 6 months ago

还真是timeout了,ffprobe是没办法使用socks代理吗

honue commented 6 months ago

还真是timeout了,ffprobe是没办法使用socks代理吗

我在前面也说清楚了,emby是闭源的,没有办法去给他的core加运行参数,ffprobe只会读取http_proxy环境变量,不会读socks这个环境变量,所以没有办法

honue commented 6 months ago

https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/http.c#L218C48-L218C48

Akimio521 commented 6 months ago

我的意思是我环境变量名是http_proxy,但我代理的协议是socks5

honue commented 6 months ago

读个源码不难吧。。。 https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/http.c#L224

Akimio521 commented 5 months ago

请问用的谁的镜像,是linuxserver/emby吗

honue commented 5 months ago

请问用的谁的镜像,是linuxserver/emby吗

amilys的 但这个不影响吧

Akimio521 commented 5 months ago

ffprobe的路径位置可能不太一样

Akimio521 commented 5 months ago
/ # /bin/ffprobe -i "https://resources.ani.rip/2023-10/[ANi] ?????? - 02 [1080P][Baha][WEB-DL][AAC AVC][CHT] .mp4?d=true
" -threads 0 -v info -print_format json -show_streams -show_chapters -show_format -show_data
ffprobe version 5.1-emby_2023_06_25 Copyright (c) 2007-2022 the FFmpeg developers and softworkz for Emby LLC
  built with gcc 10.3.0 (crosstool-NG 1.25.0)
{
[https @ 0x1a51700] HTTP error 404 Not Found
https://resources.ani.rip/2023-10/[ANi] 葬送的芙莉蓮 - 02 [1080P][Baha][WEB-DL][AAC AVC][CHT] .mp4?d=true: Server returned 404 Not Found

}
/ # echo $http_proxy
http://cloudflare-warp:8080

使用了代理依旧不行

Akimio521 commented 5 months ago

然后尝试通过自建的镜像进行访问,不知道下面的结果是不是正确的

/ # /bin/ffprobe -i "https://<<My_Proxy_Server>>/https://resources.ani.rip/2023-10/[ANi] ?????? - 02 [1080P][Baha][WE
B-DL][AAC AVC][CHT] .mp4?d=true" -threads 0 -v info -print_format json -show_streams -show_chapters -show_format -show_d
ata
ffprobe version 5.1-emby_2023_06_25 Copyright (c) 2007-2022 the FFmpeg developers and softworkz for Emby LLC
  built with gcc 10.3.0 (crosstool-NG 1.25.0)
{
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'https://<<My_Proxy_Server>>/https://resources.ani.rip/2023-10/[ANi] 葬送的芙莉蓮 - 02 [1080P][Baha][WEB-DL][AAC AVC][CHT] .mp4?d=true':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.29.100
  Duration: 00:00:02.00, start: 0.000000, bitrate: 49 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 640x480 [SAR 1:1 DAR 4:3], 43 kb/s, Level 30, 25 fps, 25 tbr, 12800 tbn (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       : [0][0][0][0]
honue commented 5 months ago

然后尝试通过自建的镜像进行访问,不知道下面的结果是不是正确的

/ # /bin/ffprobe -i "https://<<My_Proxy_Server>>/https://resources.ani.rip/2023-10/[ANi] ?????? - 02 [1080P][Baha][WE
B-DL][AAC AVC][CHT] .mp4?d=true" -threads 0 -v info -print_format json -show_streams -show_chapters -show_format -show_d
ata
ffprobe version 5.1-emby_2023_06_25 Copyright (c) 2007-2022 the FFmpeg developers and softworkz for Emby LLC
  built with gcc 10.3.0 (crosstool-NG 1.25.0)
{
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'https://<<My_Proxy_Server>>/https://resources.ani.rip/2023-10/[ANi] 葬送的芙莉蓮 - 02 [1080P][Baha][WEB-DL][AAC AVC][CHT] .mp4?d=true':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.29.100
  Duration: 00:00:02.00, start: 0.000000, bitrate: 49 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 640x480 [SAR 1:1 DAR 4:3], 43 kb/s, Level 30, 25 fps, 25 tbr, 12800 tbn (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       : [0][0][0][0]

这个应该是ffprobe获取视频信息成功了

Akimio521 commented 5 months ago

似乎resources.ani.rip并不是源地址,会被重定向到cloud.ani-download.workers.dev

honue commented 5 months ago

似乎resources.ani.rip并不是源地址,会被重定向到cloud.ani-download.workers.dev

这个没研究过,期待你的结论,或许可以改进下地址

Akimio521 commented 5 months ago

我之前看网站是用cloudflare 的 workers进行搭建的,但是相关域名在境内被屏蔽了,所以没办法直接访问 目前我想到的一个方法在插件中新增一个可选项,用于替换strm文件中的地址,如果有域名的话可以通过worker 搭建镜像站,并且境内是可以正常访问的 但上面的方法会浪费一定额度并不实用,所以还是想着通过warp 实现代理访问

Akimio521 commented 5 months ago

在windows下测试,resources.ani.rip似乎会造成更大无法访问的可能性

ffprobe -i "https://resources.ani.rip/2023-10/[ANi] 葬送的芙莉蓮 - 02 [1080P][Baha][WEB-DL][AAC AVC][CHT] .mp4?d=true" -threads 0 -v info -print_format json -show_streams -show_chapters -show_format -show_data
ffprobe version 7.0-full_build-www.gyan.dev Copyright (c) 2007-2024 the FFmpeg developers
  built with gcc 13.2.0 (Rev5, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libxevd --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxeve --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
  libavutil      59.  8.100 / 59.  8.100
  libavcodec     61.  3.100 / 61.  3.100
  libavformat    61.  1.100 / 61.  1.100
  libavdevice    61.  1.100 / 61.  1.100
  libavfilter    10.  1.100 / 10.  1.100
  libswscale      8.  1.100 /  8.  1.100
  libswresample   5.  1.100 /  5.  1.100
  libpostproc    58.  1.100 / 58.  1.100
{
[https @ 0000020c6fae7680] HTTP error 404 Not Found
https://resources.ani.rip/2023-10/[ANi] 葬送的芙莉蓮 - 02 [1080P][Baha][WEB-DL][AAC AVC][CHT] .mp4?d=true: Server returned 404 Not Found

}

ffprobe -i "https://aniopen.an-i.workers.dev/2024-4/%5BANi%5D%20%E6%81%B0%E5%A6%82%E7%B4%B0%E8%AA%9E%E8%88%AC%E7%9A%84%E6%88%80%E6%AD%8C%20-%2002%20%5B1080P%5D%5BBaha%5D%5BWEB-DL%5D%5BAAC%20AVC%5D%5BCHT%5D.mp4" -threads 0 -v info -print_format json -show_streams -show_chapters -show_format -show_data
ffprobe version 7.0-full_build-www.gyan.dev Copyright (c) 2007-2024 the FFmpeg developers
  built with gcc 13.2.0 (Rev5, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libxevd --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxeve --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
  libavutil      59.  8.100 / 59.  8.100
  libavcodec     61.  3.100 / 61.  3.100
  libavformat    61.  1.100 / 61.  1.100
  libavdevice    61.  1.100 / 61.  1.100
  libavfilter    10.  1.100 / 10.  1.100
  libswscale      8.  1.100 /  8.  1.100
  libswresample   5.  1.100 /  5.  1.100
  libpostproc    58.  1.100 / 58.  1.100
{
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000027db5d972c0] stream 0, timescale not set
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'https://aniopen.an-i.workers.dev/2024-4/%5BANi%5D%20%E6%81%B0%E5%A6%82%E7%B4%B0%E8%AA%9E%E8%88%AC%E7%9A%84%E6%88%80%E6%AD%8C%20-%2002%20%5B1080P%5D%5BBaha%5D%5BWEB-DL%5D%5BAAC%20AVC%5D%5BCHT%5D.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    title           : 恰如細語般的戀歌
    album           : 恰如細語般的戀歌
    encoder         : Lavf58.45.100
    description     :  高中入學第一天,高一新生陽鞠,在新生歡迎會見到了表演樂團的主唱——朝凪依,並且對依萌生了一見鍾情的 憧憬。當陽鞠在校舍遇見依,表明自己的心意後,依對直率地表明自己憧憬之情�
  Duration: 00:23:40.03, start: 0.000000, bitrate: 2225 kb/s
  Stream #0:0[0x2](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 1923 kb/s, 23.98 fps, 23.98 tbr, 90k tbn (default)

使用源地址并且对url编码,第一次是未使用代理,第二次是使用代理,效果确实不一样

/ # /bin/ffprobe -i "https://aniopen.an-i.workers.dev/2024-4/%5BANi%5D%20%E6%81%B0%E5%A6%82%E7%B4%B0%E8%AA%9E%E8%88%AC%E
7%9A%84%E6%88%80%E6%AD%8C%20-%2002%20%5B1080P%5D%5BBaha%5D%5BWEB-DL%5D%5BAAC%20AVC%5D%5BCHT%5D.mp4" -threads 0 -v info -
print_format json -show_streams -show_chapters -show_format -show_data
ffprobe version 5.1-emby_2023_06_25 Copyright (c) 2007-2022 the FFmpeg developers and softworkz for Emby LLC
  built with gcc 10.3.0 (crosstool-NG 1.25.0)
{
[tcp @ 0x1ff5b40] Connection to tcp://aniopen.an-i.workers.dev:443 failed: Connection timed out
https://aniopen.an-i.workers.dev/2024-4/%5BANi%5D%20%E6%81%B0%E5%A6%82%E7%B4%B0%E8%AA%9E%E8%88%AC%E7%9A%84%E6%88%80%E6%AD%8C%20-%2002%20%5B1080P%5D%5BBaha%5D%5BWEB-DL%5D%5BAAC%20AVC%5D%5BCHT%5D.mp4: Input/output error

}

/ # export http_proxy = http://cloudflare-warp:8080

/ # echo $http_proxy
http://cloudflare-warp:8080
/ # /bin/ffprobe -i "https://aniopen.an-i.workers.dev/2024-4/%5BANi%5D%20%E6%81%B0%E5%A6%82%E7%B4%B0%E8%AA%9E%E8%88%AC%E
7%9A%84%E6%88%80%E6%AD%8C%20-%2002%20%5B1080P%5D%5BBaha%5D%5BWEB-DL%5D%5BAAC%20AVC%5D%5BCHT%5D.mp4" -threads 0 -v info -
print_format json -show_streams -show_chapters -show_format -show_data
ffprobe version 5.1-emby_2023_06_25 Copyright (c) 2007-2022 the FFmpeg developers and softworkz for Emby LLC
  built with gcc 10.3.0 (crosstool-NG 1.25.0)
{
[httpproxy @ 0x2223b40] Stream ends prematurely at 98674, should be 18446744073709551615
[httpproxy @ 0x2223b40] ffurl_read returned 0xfffffffb
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x221ed40] reached eof, corrupted STTS atom
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x221ed40] error reading header
https://aniopen.an-i.workers.dev/2024-4/%5BANi%5D%20%E6%81%B0%E5%A6%82%E7%B4%B0%E8%AA%9E%E8%88%AC%E7%9A%84%E6%88%80%E6%AD%8C%20-%2002%20%5B1080P%5D%5BBaha%5D%5BWEB-DL%5D%5BAAC%20AVC%5D%5BCHT%5D.mp4: End of file

}
honue commented 5 months ago

这里也有提到这个问题,https://github.com/honue/MoviePilot-Plugins/issues/13#issuecomment-2024272313 但是我梯子用起来是没有问题的,你看看用哪个地址比较好,要不你改改提个pr,把是否使用代理也加个开关,我跟家里的nas失联了

honue commented 5 months ago

我平时用的也少,参照fork改的地址,我看应该有人也用workers做了镜像

Akimio521 commented 5 months ago

我平时用的也少,参照fork改的地址,我看应该有人也用workers做了镜像

fork 哪个项目的

honue commented 5 months ago

我平时用的也少,参照fork改的地址,我看应该有人也用workers做了镜像

fork 哪个项目的

我这个项目的fork 你看看activity 有人修改过自用

Akimio521 commented 5 months ago

想到了一个解决方法,nginx劫持相关流量,让客户端直接访问视频源文件,这样服务端还不用推流,缺点就是服务器无法进行转码,可以将strm文件单独存放在一个目录下方便nginx识别是远程strm视频还是本地视频 我抓包发现jellyfin对strm文件操作与emby不同,客户端会先访问strm的链接,如果访问成果,流量不会经过服务器,访问失败服务端才会尝试获取strm视频再推送给客户端,而且不影响服务端的转码,jellyfin的策略更好 但是不确定是我设备问题还是其他原因,jellyfin播放strm视频容易失败,仅有几次播放成功,需要进一步验证(我也只是抓到了客户端访问strm地址的请求,但当时我的strm是一个内网地址用于测试,自然访问不到目标地址,然后服务端进行推流就播放成功)