发布于Entertainment分类中的文章

Oct 07

哦,原来视频流式传输需要这么优化:

Optimizing MP4 Video for Fast Streaming
Tools to fix MP4 videos so players can start playback instantly (without downloading the whole file)
Understanding the M.P.E.G-4 moov atom: Pseudo-Streaming in Mp4

检测视频文件是否已经为流式传输优化:

mp4box -info A.mp4 2>&1 1>NUL | find "File suitable for progressive download (moov before mdat)"
#或者
AtomicParsley input.mp4 -T | sed -n 2p | grep -q "moov" && echo "yup" || echo "nope"

那么就撸个批处理干,支持 mp4/mkv/mov/m4v 格式的优化。

#!/bin/bash

[ -n "$1" ] && {
    src_folder="$1"
} || {
    echo "input you source folder location."
    exit
}

src_empty=$(ls -A "$src_folder")

[ -n "$src_empty" ] && {
    for file_a in ${src_folder}/*
    do
        in_full_filename=$(basename "$file_a")
        in_filename="${filename%.*}"
        in_extension="${file_a##*.}"
        out_full_filename="${in_filename}_.${in_extension}"

        echo "src=$in_full_filename ndst=$out_full_filename"

        case $in_extension in
            mp4|mov|m4v)
                ffmpeg -i "${src_folder}/${in_full_filename}" -movflags faststart -acodec copy -vcodec copy -copyts "${src_folder}/$out_full_filename"
                ;;
            mkv)
                ffmpeg -i "${src_folder}/${in_full_filename}" -c copy -reserve_index_space 100k -copyts "${src_folder}/$out_full_filename"
                ;;
            *)
                echo "${in_extension} file not support faster start."
                ;;
        esac

        [ $? -eq 0 ] && {
            rm -f "${src_folder}/${in_full_filename}"
            mv -f "${src_folder}/$out_full_filename" "${src_folder}/${in_full_filename}"
            echo "-----------${in_filename} now faster web loading------------"
        } || {
            echo "-----------${in_filename} faster process failed------------"
        }
    done
} || {
    echo "Source folder is empty."
}

Windows 版本,丢到要处理的视频目录下:

for /r %%F in (*.mp4) do (
    ffmpeg.exe  -i "%%F" -movflags faststart -acodec copy -vcodec copy -copyts "%%~dpnF"_.mp4
    if not errorlevel 1 if exist "%%~dpnF.mp4" (
		del /q "%%F"
		move "%%~dpnF"_.mp4 "%%F"
	)
)

for /r %%F in (*.mov) do (
    ffmpeg.exe  -i "%%F" -movflags faststart -acodec copy -vcodec copy -copyts "%%~dpnF"_.mov
    if not errorlevel 1 if exist "%%~dpnF.mov" (
		del /q "%%F"
		move "%%~dpnF"_.mov "%%F"
	)
)

for /r %%F in (*.mkv) do (
    ffmpeg.exe  -i "%%F" -c copy -reserve_index_space 100k -copyts "%%~dpnF"_.mkv
    if not errorlevel 1 if exist "%%~dpnF.mkv" (
		del /q "%%F"
		move "%%~dpnF"_.mkv "%%F"
	)
)

for /r %%F in (*.wmv) do (
    ffmpeg.exe  -i "%%F" -movflags faststart -copyts "%%~dpnF".mp4
    if not errorlevel 1 if exist "%%~dpnF.wmv" (
		del /q "%%F"
	)
)

for /r %%F in (*.mpg) do (
    ffmpeg.exe  -i "%%F" -movflags faststart -copyts "%%~dpnF".mp4
    if not errorlevel 1 if exist "%%~dpnF.mpg" (
		del /q "%%F"
	)
)

for /r %%F in (*.flv) do (
    ffmpeg.exe  -i "%%F" -movflags faststart -copyts "%%~dpnF".mp4
    if not errorlevel 1 if exist "%%~dpnF.flv" (
		del /q "%%F"
	)
)

for /r %%F in (*.rmvb) do (
    ffmpeg.exe  -i "%%F" -movflags faststart -copyts "%%~dpnF".mp4
    if not errorlevel 1 if exist "%%~dpnF.rmvb" (
		del /q "%%F"
	)
)

for /r %%F in (*.rm) do (
    ffmpeg.exe  -i "%%F" -movflags faststart -copyts "%%~dpnF".mp4
    if not errorlevel 1 if exist "%%~dpnF.rm" (
		del /q "%%F"
	)
)

Oct 06

为了防止滥用,先生成认证文件:

#生成密码文件,添加用户名
sudo sh -c "echo -n 'sammy:' >> /usr/local/nginx/conf/.htpasswd"
#为此用户设置密码
sudo sh -c "openssl passwd -apr1 >> /usr/local/nginx/conf/.htpasswd"

1. 通过境外 VPS 反代:

nginx 关键代码:

location /
{
#	开启认证防止滥用
	auth_basic "Once A Thief";
	auth_basic_user_file /usr/local/nginx/conf/.htpasswd;

	proxy_pass http://www.t66y.com;
	proxy_set_header Host www.t66y.com;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header REMOTE-HOST $remote_addr;

	add_header X-Cache $upstream_cache_status;
	proxy_set_header Accept-Encoding "";
	proxy_ssl_name www.t66y.com;
	proxy_ssl_server_name on;
	sub_filter "www.t66y.com" "usite.domain.com";
	sub_filter_once off;
	expires 12h;
}

location ~ .*.(php|jsp|cgi|asp|aspx|flv|swf|xml)?$
{
	auth_basic "Once A Thief";
	auth_basic_user_file /usr/local/nginx/conf/.htpasswd;
	proxy_pass http://www.t66y.com;
	proxy_set_header Host www.t66y.com;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header REMOTE-HOST $remote_addr;
	proxy_set_header Accept-Encoding "";
	sub_filter "www.t66y.com" "usite.domain.com";
	sub_filter_once off;
}

location ~ .*.(html|htm|png|gif|jpeg|jpg|bmp|js|css)?$
{
	auth_basic "Once A Thief";
	auth_basic_user_file /usr/local/nginx/conf/.htpasswd;
	proxy_pass http://www.t66y.com;
	proxy_set_header Host www.t66y.com;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header REMOTE-HOST $remote_addr;
	proxy_set_header Accept-Encoding "";
	sub_filter "www.t66y.com" "usite.domain.com";
	sub_filter_once off;
	expires 24h;
}

2. 通过境内 VPS 反代:

nginx 关键代码:

location /
{
#	turn on auth for this location
	auth_basic "Once A Thief";
	auth_basic_user_file /usr/local/nginx/conf/.htpasswd;

	proxy_pass https://127.0.0.1:1024;
	proxy_set_header Host www.t66y.com;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header REMOTE-HOST $remote_addr;

	add_header X-Cache $upstream_cache_status;
	proxy_set_header Accept-Encoding "";
	proxy_ssl_name www.t66y.com;
	proxy_ssl_server_name on;
	sub_filter "www.t66y.com" "usite.domain.com";
	sub_filter_once off;
	expires 12h;
}

需要准备一个可以出去的 socks5 代理,v2ray,ss,trojan 随便你用什么,假设监听在本地的 1080 端口;

安装 socat:

apt install socat

测试时可用命令行:

socat -d -d TCP4-LISTEN:1024,bind=127.0.0.1,reuseaddr,fork PROXY:127.0.0.1:t66y.com:443,proxyport=1080

正式工作的 systemd service 文件:

[Unit]
Description=socat
After=network.target

[Service]
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/socat TCP4-LISTEN:1024,bind=127.0.0.1,reuseaddr,fork PROXY:127.0.0.1:t66y.com:443,proxyport=1080

[Install]
WantedBy=multi-user.target

参考:

https://stackoverflow.com/questions/46803431/nginx-proxy-pass-over-https-proxy
https://gist.github.com/miyouzi/3e3d57cde402b829aeb1d865b14eaa1a

2022-10-10 更新:

location /
    {
        auth_basic "Once A Thief";
        auth_basic_user_file /usr/local/nginx/conf/.htpasswd;
        proxy_ssl_name www.t66y.com;
        proxy_ssl_server_name on;
        gzip on;
        gzip_min_length 1k;
        gzip_buffers 4 16k;
        gzip_comp_level 5;
        gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
        gzip_vary off;
        proxy_redirect off;
        proxy_set_header Host www.t66y.com;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass https://www.t66y.com;
        proxy_set_header Accept-Encoding "";
        sub_filter 'www.t66y.com' 'usite.domain.com';
        sub_filter_types text/xml;
        sub_filter_once off;
    }

Oct 06

详情见 MeTube 主页,我这里流水账一下:

#安装、升级 npm / n
apt install npm
npm -g install n
n lts

cd metube/ui

# 安装 Angular,构建 UI
npm install
node_modules/.bin/ng build

# 安装 Python 依赖
cd ..
pip3 install pipenv
pipenv install
python3 -m pip install aiohttp
pipenv install aiohttp

#安装 ffmpeg,合并音频视频,Youtube 新视频基本都需要合并
apt install ffmpeg

# 自定义环境文件测试运行
export DOWNLOAD_DIR=/home/wwwroot/metube
export URL_PREFIX=/metube
pipenv run python3 app/main.py

正常会输出:

INFO:ytdl:waiting for item to download
======== Running on http://0.0.0.0:8081 ========
(Press CTRL+C to quit)

可以浏览器连接: http://VPS-IP:8081,测试一下下载,没问题往下走。

配置 Nginx 转发:

#主转发代码
        location /metube/ {
            proxy_pass http://127.0.0.1:8081;
            proxy_redirect off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
        }
#没有问题这一块可以不要
        location ~* .(css|js)$ {
            proxy_pass http://127.0.0.1:8081;
            proxy_redirect off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
        }

添加到开机自动运行:

systemctl edit metube --full --force

粘贴如下代码,metube 源码路径,下载路径,反代目录,改成自己的:

[Unit]
Description=Metube Web Service
After=network.target

[Service]
Environment=DOWNLOAD_DIR=/home/wwwroot/metube
Environment=URL_PREFIX=/metube
Restart=always
Type=simple
WorkingDirectory=/root/src/metube
ExecStart=/usr/local/bin/pipenv run python3 /root/src/metube/app/main.py

[Install]
WantedBy=multi-user.target

然后执行:

systemctl enable --now metube

metube 就启动了,并且下次开机也会自己启动。

追加:
添加简单的密码认证:

#生成密码文件,添加用户名
sudo sh -c "echo -n 'sammy:' >> /etc/nginx/.htpasswd"
#为此用户设置密码
sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"

然后添加到 metube 反代中:

location /metube/ {
    auth_basic           "Administrator’s Area";
    auth_basic_user_file /etc/nginx/.htpasswd";
    ...
}

Sep 26

呐!

AV 全家桶

:cool: :cool: :cool:

Tags: , ,

Sep 26

一般内容用 IDM 下没啥问题,但是目前的 IDM 6.38.1 可以识别并下载 HDR 视频流,但是混流有 BUG,体现在 madVR 显示 HDR 内容不完善,导致 HDR 播放失败: IDM 6.41 下载的 HDR 已经没有问题。

试了一堆软件,youtube-dl 当然是可以的,但是命令行太烦躁。最后选择了下面两个:

1. 3D Youtube Downloader

2. 4K Video Downloader

3D Youtube Downloader 下载后封装为 webm 格式,4K Video Downloader 则封装为 mkv 格式,都可以完美识别播放 HDR 内容。

下载:


补充: MediaHuman YouTube Downloader 选择下载 WEBM 格式的视频, 并且不转换的话,也可以下载到 HDR 文件, 只是不如上面两个来的直观.
补充: MediaDownloader ,开源免费的,也很方便!

2023-08-28 增加: Gihosoft TubeGet


Apr 28

目前就这个靠谱,也简单: BlockTheSpot,把 netutils.dll 丢到 Spotify 安装目录(通常是 %APPDATA%/Spotify)就行。

备份下先。 :mrgreen: :mrgreen: :mrgreen:

2021 转移阵地:mrpond/BlockTheSpot

PowerShell 下运行:

Invoke-WebRequest -UseBasicParsing 'https://raw.githubusercontent.com/mrpond/BlockTheSpot/master/install.ps1' | Invoke-Expression
Tags: , ,

Mar 23

:cool: :cool: :cool:


Mar 18


Nov 27

「唐伯虎啊唐伯虎!你是江南文人,一代才子,为何做出这种龌龊事来?那天我看你挺可怜,好心开门让你进来。你要避雨,我就让你避雨;你要脱,我就让你脱;你要瓢,我就给你瓢;你要过夜,我就让你过夜。你说!你为什么把我的鹰毛都拔光了 ?」

有一天,祝枝山告诉唐伯虎:后山住着一个寡妇,守寡三年,把贞节视为生命,只养了一只老鹰相依为命。 如果你能搞定这名女子,那我祝枝山对你五体投地.唐伯虎想一想,便要祝枝山过几天再来听消息。

过了两天,下起倾盆大雨。半夜,唐伯虎爬上了后山,到了寡妇家门口。唐伯虎敲了敲门,问道:「能不能让我避避雨?」寡妇开了门,原来是江南才子唐伯虎,连忙让他进屋。唐伯虎进了门,连连道谢,接着又问道:「可不可以将湿的衣服脱掉?」寡妇一看衣服全湿了,连忙把衣服那到灶上烘干。这时,唐伯虎又问:「大嫂,我口渴了,借我一口瓢,让我喝口水行吗?」 寡妇连忙拿了一口瓢给唐伯虎。唐伯虎喝完了水,看看很晚了,问寡妇:「大嫂能否让我在这里过一夜?」寡妇想了想,屋外雨下得正大,也就答应了,将唐伯虎领至客房,唐伯虎进了客房,也不客气,倒头便睡。第二天天亮,唐伯虎起得早,悄悄走进院子,果然看见那只相依为命的老鹰。唐伯虎抓住老鹰,把毛都拔了下来;然后,也没和寡妇打声招呼,就回了家。

过了几天,唐伯虎和祝枝山在家下棋,听见有人敲门。祝枝山开了门,原来是那寡妇,寡妇一看见唐伯虎就用国语破口大骂:「唐伯虎啊唐伯虎!你是江南文人,一代才子,为何做出这种龌龊事来?那天我看你挺可怜,好心开门让你进来。你要避雨,我就让你避雨;你要脱,我就让你脱;你要瓢,我就给你瓢;你要过夜,我就让你过夜。你说!你为什么把我的鹰毛都拔光了 ?」 :shock: :shock: :shock:

祝枝山在旁听得目瞪口呆… :mrgreen: :mrgreen: :mrgreen:

Tags:

Nov 23

ozone_logo

iZotope Ozone 是一款综合性的强大音效处理效果器!您可以单用这一个效果器就可以完成母带的处理(俗称:母带混缩)。

大家要知道一首作品的成功与否,最后的母带处理是非常重要的!那么我们为什么要做母带处理呢?母带处理可以解决那些问题呢?母带处理,顾名思意就是加载在调音台总输出上的效果器,进行对音乐作品的整体效果处理,并混缩输出成品!无论是扒带作品,还是原创作品,或者说是混音作品,最终在总体的感觉,多多少少在融合度上不怎么太好,比如人声好像总是不能与伴奏合为一体!在声场方面总是觉得过于狭窄!或者响度不够,或者声音不够饱满,清澈等等问题!那么要解决这些总体上的感觉欠缺的问题,就要用母带处理效果器来解决了!

iZotope Ozone 提供了六个效果器功能组,它们分别是:

1. 高品质的图示均衡处理效果器(可以解决整体某些频率音量的问题)。
2. 模拟混响效果器(可以让整体作品更加融合)。
3. 限幅器与高品质抖动处理技术(可以使得响度最大化,并在采样率转换为 44100 的时候,不会有音质上的损失)。
4. 泛音激励器(可以解决整体某些频率的声音不够清脆或不够饱满的问题)。
5. 动态处理效果器,可以进行分频段的限幅,压缩,扩展等动态处理(可以解决整体音量忽大忽小的问题,让整体音量尽量平均化控制,)。
6. 立体声扩展效果器(可以解决整体的立体声感觉不够宽的问题,当然,立体声应该在制作单个音色的时候就应该安排好,而它是帮助您已有立体声的声场变得更宽)。

依靠这些强大的效果组,你绝对可以调校出让你满意的效果。

The player will show in this paragraph

iZotope 的东西都不便宜,这个高级版卖 599 美金~~ :shock: 不过,光看界面就值了。。。。(混音师别打我。。。)

想在 Winamp,Foobar 上面加载 VST 效果器的可以参考本站旧文 VST Host DSP for Winamp


[1/4]  1 2 3 4 >