分類
方法 软件

ffmpeg下載流媒體

Fefora 安裝 ffmpeg

#如果沒有安裝過rpmfusion,需要先安裝之
sudo dnf -y install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
#然後就可以安裝 ffmpeg 了
sudo dnf -y install ffmpeg

保存m3u8類型的流媒體

#首先把m3u8列表保存為ts視頻
ffmpeg -y \
  -v warning \
  -loglevel debug \
  -i "https://domain.com/path/to/manifest.m3u8" \
  -vcodec copy \
  -c copy -f mpegts out.ts
#然後把ts轉換為mp4
ffmpeg -i out.ts -acodec copy -vcodec copy out.mp4
#或者
ffmpeg -i "https://domain.com/path/to/manifest.m3u8" -codec copy file.mp4
#如果mp4容器遇到問題可以嘗試mkv

保存udp、rtmp、rtsp、http類型的流媒體

ffmpeg -i "rtmp://domain.com/path/to/video.mp4" -vcodec copy -acodec copy out.mp4

合併視頻和音頻文件

ffmpeg -i video.mp4 -i audio.m4a -c copy output.mkv

選擇m3u8的清晰度

#m3u8文件可以用文本編輯器打開,內容如:

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=276000,RESOLUTION=256x144,CODECS="avc1.66.30, mp4a.40.2",CLOSED-CAPTIONS=NONE
https://vod1-vh.akamaihd.net/i/mp4_hk/tv/2020/GLOBCT2020L03100007.smil/index_250000_av.m3u8?null=0
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=465000,RESOLUTION=432x240,CODECS="avc1.66.30, mp4a.40.2",CLOSED-CAPTIONS=NONE
https://vod1-vh.akamaihd.net/i/mp4_hk/tv/2020/GLOBCT2020L03100007.smil/index_400000_av.m3u8?null=0
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=797000,RESOLUTION=640x360,CODECS="avc1.66.30, mp4a.40.2",CLOSED-CAPTIONS=NONE
https://vod1-vh.akamaihd.net/i/mp4_hk/tv/2020/GLOBCT2020L03100007.smil/index_700000_av.m3u8?null=0
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1232000,RESOLUTION=848x480,CODECS="avc1.66.30, mp4a.40.2",CLOSED-CAPTIONS=NONE
https://vod1-vh.akamaihd.net/i/mp4_hk/tv/2020/GLOBCT2020L03100007.smil/index_1000000_av.m3u8?null=0
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2478000,RESOLUTION=1280x720,CODECS="avc1.66.30, mp4a.40.2",CLOSED-CAPTIONS=NONE
https://vod1-vh.akamaihd.net/i/mp4_hk/tv/2020/GLOBCT2020L03100007.smil/index_2000000_av.m3u8?null=0

#表示這個文件提供了 5 個清晰度的視頻,通常不制定的話回選擇最好的清晰度
#如果我們要指定 480P 的清晰度,也就是第4個
#(從第 0 個開始數)
#那麼完整的命令就是

ffmpeg -i "https://vod1-vh.akamaihd.net/i/mp4_hk/tv/2020/GLOBCT2020L03100007.smil/master.m3u8" -map p:3 -codec copy 31.mp4

使用 curl-impersonate 繞過瀏覽器驗證

低端影視這樣的網站會檢查客戶端是否是瀏覽器,此時只要使用 curl-impersonate 就可以下載了。

使用時在瀏覽器開發者工具裏找到資源的鏈接,右鍵 > Copy Value > Copy as cURL。然後在命令行裏把 curl 替換成 curl_ff109,並加上 -o MOVIE.mp4 就可以下載了。如:

./curl_ff109 'https://v.ddys.pro/v/movie/Return.to.Dust.mp4' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0' -H 'Accept: video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5' -H 'Accept-Language: en-US,en;q=0.5' -H 'Referer: https://ddys.pro/' -H 'Range: bytes=0-' -H 'Origin: https://ddys.pro' -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Sec-Fetch-Dest: video' -H 'Sec-Fetch-Mode: cors' -H 'Sec-Fetch-Site: same-site' -H 'Accept-Encoding: identity' -o 隱入煙塵.mp4

如果中斷了可以加上 -C 斷點續傳。

使用 ffmpeg 將 mp4 轉化為較舊的編碼格式

我在使用手機自帶的相冊軟件投屏到電視上時,有時會遇到只能投遞一幀的情況,這可能是手機端或電視端不支持較新的視頻或音頻格式,可以使用 ffmpeg 將其轉碼為較舊格式。

ffmpeg -i input.mp4 -c:v libx264 -c:a libmp3lame -b:a 192k output.mp4
#-i input.mp4: Specifies the input file.
#-c:v libx264: Sets the video codec to H.264 (libx264).
#-c:a libmp3lame: Sets the audio codec to MP3 (libmp3lame).
#-b:a 192k: Sets the audio bitrate to 192 kbps (you can adjust this value as needed).
#output.mp4: Specifies the name of the output file.

本文更新於 2024/10/26。

分類
软件

Tiny Tiny RSS

Firefox 今天更新到了 68.2.0,一個比較大的改動是移除了自帶的 RSS 閱讀器。剛好前不久拿到一台免費的 Oracle Cloud,於是搭建 Tiny Tiny RSS 來做閱讀聚合。

MariaDB、php7.2、nginx 和 letsEncrypt 證書生成器的安裝網上資料很多,這裡就不貼了。

然后根据 Tiny Tiny RSS Installation Guide 一步一步来做。我是直接在nginx默認的html文件夾下 git clone 出項目,然後訪問 http://yoursite/tt-rss/install/ 來安裝,下面是遇到的問題。

未安裝 php-intl

sudo yum install php7.2-intl

文件權限不足

#首先修改文件夾權限
cd /usr/share/nginx/html/tt-rss
sudo chown -R nginx:nginx cache lock feed-icons
sudo chmod -R g+w cache lock feed-icons
#如果你的 CentOS 7 系統和我的一樣開啟了 SELinux,還需要
sudo chcon -R unconfined_u:object_r:httpd_sys_rw_content_t:s0 cache feed-icons lock

更新機制

#首先嘗試了 systemctl,沒有成功
#於是用原始的crontab
*/30 * * * * /usr/bin/php72 /usr/share/nginx/html/tt-rss/update.php --feeds --quiet

使用小撇步

  • 在偏好設定》摘要》類別里,可以新建類別。
  • 在 RSS 訂閱上右鍵,編輯摘要里可以單獨設置更新頻率。據說選項里勾上媒體快取可以緩存媒體到服務器(未驗證)。
  • 打開「全部文章」,點擊閱讀頁左上角的RSS標誌,就可以用 RSS 的方式分享自己所有的閱讀聚合。
  • 安卓版客戶端可以從 F-droid 下載,我沒有使用客戶端我使用的是 Readrops。

If it helps, please kindly consider to contribute or donate.






191218更新:Oracle Cloud 的服務器被無預警註銷,沒有通知沒有郵件什麼都沒有。但是啟動盤還在,所以可以再創建一個實例。雖然如此,仍然給人極不靠譜的感覺。新實例會產生新 IP,修改 DNS 後原來的服務就又可以用了。

藉此機會順便升級了下 Tiny Tiny RSS,由於我是通過 Git安裝的,所以需要在安裝文件夾執行下面命令就可以了。

git pull origin master
#如果你不小心改動過項目文件,可以用下面命令忽略之
git reset --hard HEAD 

更新後進入網頁可能會提示需要更新數據庫,點擊更新按鈕後就完成了升級。

本文更新於 2020/10/16。

分類
Linux 软件

Linux上的離線字典——GoldenDict

GoldenDict是一款方便的字典應用,不僅支持離線字典和屏幕取詞,也支持在線辭典服務。Fedora直接從軟件倉庫安裝 goldendict 即可sudo dnf install goldendict,默認的屏幕取詞快捷鍵是Ctrl+C+C。

分享幾個字典的下載地址:https://1drv.ms/f/s!AiSujQyFSc-uab_ItF61BBKnLUs。GoldenDict中的字典順序也是下面順序。

  1. Babylon_English_Chinese_S_.BGL
  2. Babylon_Chinese_S_English.BGL
  3. Oxford_Advanced_Learner_English-Chinese_Dictionary-4th.bgl
  4. ConciseOxfordEnglishDictionary.dsl.dz
  5. Oxford English Dictionary (2nd Edition) .bgl
  6. 现代汉英词典(金山).dsl.dz

安卓也有GoldenDict可用,我用的免費版(谷歌市場:GoldenDict Free),有最大5個字典的限制,但是也夠用了。

使用 espeak 來發音

#安裝espeak
sudo dnf install espeak
#打開GoldenDict,菜單欄依次選擇
#編輯/字典/字典來源/程式/新增
#新增內容為:
#類型:音訊
#名稱:espeak
#命令列:/usr/bin/espeak -v en -s 120 %GDWORD%
#圖示:/usr/share/doc/espeak/html/images/lips.png
#最後勾選啟用框,保存並重啟GoldenDict就可以有英文發音了

##如果要聽法語發音,
##只需要把命令列中的 en 換成 fr 即可。

更多字典可以從這些地方獲得:http://download.huzheng.org/(來自:Good offline dictionaries for GoldenDict)

使用 Speech Dispatcher 來發音

來到 2023 年,Speech Dispatcher 是新的語音生成器。這裏記錄下在 Fedora 上安裝以及命令調用的方法:

#安裝
sudo dnf install speech-dispatcher speech-dispatcher-utils
#使用
spd-say hello

本文更新於 2023/08/12。

分類
软件

youtube-dl

Edit 221015: 如果遇到一些 youtube-dl 不支持的網址,可以嘗試用 yt-dlp,來下載,比如 arte.tv 的視頻。可以用傳統的 pip 安裝:pip install yt-dlp也可以直接允許可執行文件。使用方法類似 youtube-dl。

之前用過一些在線提取和轉換YouTube視頻的服務,近來發現這些提取或轉換的鏈接要求ip一致,那就無法用洋蔥網絡下載了。好在發現youtube-dl這麼個好工具,不僅能下載單集視頻還能下載視頻列表;不僅能單獨下載字幕還能把字幕合入視頻,非常強大。目前用的這幾個參數,記錄一下。

#安裝youtube-dl
sudo dnf install youtube-dl
##單個視頻下載
#查看可下載的視頻,注意audio only的視頻,沒有伴音的哦
youtube-dl https://www.youtube.com/watch?v=qU52CFGTGu0 -F
#下載編號為22的視頻
youtube-dl --proxy socks5://127.0.0.1:9150 qU52CFGTGu0 -f 22
#續傳中斷的視頻
youtube-dl --proxy socks5://127.0.0.1:9150 qU52CFGTGu0 -f 22 --continue
#列出所有字幕
youtube-dl --proxy socks5://127.0.0.1:9150 qU52CFGTGu0 --list-subs
#只下載字幕而不下載視頻
youtube-dl --all-subs --skip-download --proxy socks5://127.0.0.1:9150 https://www.youtube.com/watch?v=qU52CFGTGu0
#使用aria2搭配proxychains實現多進程下載
sudo dnf install aria2 proxychains-ng
proxychains4 youtube-dl -f mp4 --external-downloader aria2c --external-downloader-args '-c -j4 -x 4 -s 4 -k 5M' lW0ugxbtIEE
##視頻列表下載
#將視頻列表中的視頻連接輸出到文本文件
youtube-dl -j --flat-playlist "https://www.youtube.com/playlist?list=PLATwx1z00HsdanKZcTMQEc-n_Bhu_aZ76" | jq -r '.id' | sed 's_^_https://youtu.be/_' > list.log
#從文件里讀取視頻地址並下載,下載過的會保存於done.txt不會重複下載
youtube-dl -f mp4 --external-downloader aria2c --external-downloader-args '-c -j5 -x 5 -s 5 -k 10M --max-download-limit 1024k' --batch-file list.log --download-archive done.txt

#下載分辨率是 1080 的最佳畫質音視頻
yt-dlp --format "bv*[height=1080]+ba/b" qU52CFGTGu0
#舊電視或機頂盒可能不支持 VP90 視頻編碼以及 opus 音頻編碼
#或者不識別默認的 webm 視頻文件,這時可以選擇較舊的 avc1(h264) 視頻編碼和 mp4a 音頻編碼來解決
yt-dlp qU52CFGTGu0 -F
yt-dlp qU52CFGTGu0 -f 137+140

參考:youtube-dl批量下载时,跳过之前已经下载过的文件

Using yt-dlp in command line網頁存檔

本文更新於 2024/09/20。

分類
Linux

Hourly Reminder

忙起來的時候不知不覺時間就過去了,而久坐對健康絕對不是什麼好事。那麼就產生了一個需求,提醒我時間的流逝。Android上有個不錯的開源應用Hourly Reminder,但是我是在工作的時候才需要提醒,所以最好是桌面彈窗。簡單搜索發現Fedora預裝的notify-send命令就能很好的實現toast效果,搭配crontab就能滿足需求了。

crontab -e
#單行Hourly Reminder簡潔版
0 9-18 * * 1-5 notify-send -t 6000 '整點咯' 'It is ? time.'
#Hourly Reminder python 豪華版
0 9-18 * * 1-5 /home/42/Programs/p37/bin/python /home/42/eclipse-workspace/scriptsP37/hourlyReminder.py

file:/home/42/eclipse-workspace/scriptsP37/hourlyReminder.py

#!/home/42/Programs/p37/bin/python
import time,datetime,subprocess,random

ts = int(time.time())
hour = datetime.datetime.fromtimestamp(ts).strftime('%H')
title = "現在時刻"+hour+"點整"
emojiList=['?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','☕️','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?']
content = '\r        '+random.choice(emojiList)+'\r'
subprocess.check_call(['notify-send','-t','6000',title,content])

定時任務參考自crontab guru。 Emoji複製自Get Emoji

代碼里的emoji被wordpress強制轉義,從段落里複製吧emojiList=['?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','☕️','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?','?']

本文更新於 2021/09/13。

分類
软件

Fedora使用Impactor安裝ipa

使用Impactor可以為蘋果手機安裝ipa程序,無論手機是否越獄。從Cydia Impactor下載需要的包並解壓。

./Impactor

./Impactor: error while loading shared libraries: libudev.so.0: cannot open shared object file: No such file or directory
#若出現上述錯誤則
sudo ln -sf /usr/lib64/libudev.so.1 /usr/lib64/libudev.so.0

./Impactor: error while loading shared libraries: libatomic.so.1: cannot open shared object file: No such file or directory
#若出現上述錯誤則
sudo dnf install libatomic

./Impactor: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
#若出現上述錯誤則
sudo dnf install ncurses-compat-libs

啟動Impactor後,先選中手機,再在Device>Install package選擇要安裝的包,輸入蘋果賬號密碼即可。




Fedora找尋丟失庫的方法,如

./Impactor: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
sudo dnf provides libncurses.so.5
ncurses-compat-libs-6.0-8.20170212.fc26.i686 : Ncurses compatibility libraries
軟體庫    :fedora
符合之來源:
Provide    : libncurses.so.5
sudo dnf install ncurses-compat-libs
分類
說說

棄用ibus-rime

試圖在Fedora26上使用Rime輸入法,經過數小時嘗試都不能完整打出自己想要的句子,只能吐血半升後放棄。IBus Intelligent Pinyin雖然有不少缺點也傻傻的,但仍然是我目前遇到最好用的開源拼音輸入法。查看源碼發現已經智能拼音已經更新到了1.10.92,在Fedora26上嘗試編譯失敗後(一天內兩次失敗,真是受打擊?),決定升級Fedora。

迅速新裝了一個Fedora 29 Xfce,很好用,美滋滋。