nilaoda / N_m3u8DL-RE

Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文.
MIT License
4.27k stars 456 forks source link

反饋 #32

Closed MAN-GOR closed 5 months ago

MAN-GOR commented 1 year ago

測試版本:Build Latest #61 測試系統:Win 10

  1. 不確定是我理解錯誤還是「錄製直播時即時合併」有BUG 在我預想中是把最新分片合併在之前下載的尾段,例如我之前下載2分鐘,最新分片是40秒,那就合併為2分40秒 但根據我測試是把最新分片覆蓋掉之前下載的,例如我之前下載2分鐘,最新分片是40秒,那40秒就會把2分鐘覆蓋掉 到錄製完成後合併片段只是最後一次下載的分片,之前下載的全都被覆蓋

  2. 錄製myTV SUPER的回放直播(我測試是翡翠台),不會錄製到當前最新的直播片段,而是會錄製到3小時前的片段(3小時是回放極限) 實測是因為myTV SUPER網頁版的mpd連結上會附帶「&mode=admarker%2Cticks」(模式=廣告標記,刻度),把它刪除掉就可以錄製到當前最新的直播片段

  3. 以「點播」形式下載myTV SUPER的回放直播(我測試是翡翠台),由於混流時會提示「pts has no value」、「Application provided duration: 47528000000 / timestamp: 47528000000 is out of range for mov/mp4 format」,觀看混流字幕時發現字幕會提前很多顯示 但導入沒刪除的外部字幕時發現,只需把字幕提前XX秒就能對應一整部錄製的直播…

  4. 由於錄製直播會「自動併發下載」且預設的「下載執行緒數」為8,當「auto-select」選擇的選項有點多時(1影+1音+3字幕),會提示「Response status code does not indicate success: 403 (Forbidden).」,有時候甚至會用盡重試次數,手動設置「下載執行緒數」為4後會比較少提示,就算提示也不會用盡重試次數

  5. 在繁體界面裡,「--use-shaka-packager」的解釋是「解密?使用shaka-packager替代mp4decrypt」,有個「?」在裡面

nilaoda commented 1 year ago

第一个问题,你的理解没问题,应该会不断向文件中增加内容,不会覆盖。之前我测试下来是正常的,我稍后也会再次测试一下网页版的直播。

第五个问题已修复 https://github.com/nilaoda/N_m3u8DL-RE/commit/4f809a42bb096b8b343c004957a916a6cf287631

nilaoda commented 1 year ago

第一个问题的测试:

image

image

image

N_m3u8DL-RE "https://edgeware-live.edgeware.tvb.com/__cl/slocalr43/__c/ott_J_h264/__op/cenc_m/__f/index.mpd?sig=.......&p=4092" --save-name "_TEST" --key 2747a13724124cc3cd7120b65fd6164c:92e0fe47d54ecba79141f1c9f2afe8fc --append-url-params --mp4-real-time-decryption --use-shaka-packager --live-real-time-merge
nilaoda commented 1 year ago

另外,录制同时可以使用如下命令将音视频进行实时混流以便在播放器中实时观看,(或进行串流)

ffmpeg -readrate 1 -i 2022-09-21_19-54-42_Jade.mp4 -i 2022-09-21_19-54-42_Jade.chi.m4a -c copy 2022-09-21_19-54-42_Jade.ts

只需要打开2022-09-21_19-54-42_Jade.ts,大部分播放器都会自动随着TS文件的更新而更新可播放时长。

MAN-GOR commented 1 year ago

第一個問題的測試

我用你提供的命令,只是刪除掉--use-shaka-packagerN_m3u8DL-RE "https://edgeware-live.edgeware.tvb.com/__cl/slocalr43/__c/ott_J_h264/__op/cenc_m/__f/index.mpd?sig=.......&p=4092" --save-name "_TEST" --key "KEY" --append-url-params --mp4-real-time-decryption --live-real-time-merge

第一次是錄到2分鐘,影片長度也是2分鐘;第二次是錄到3分4秒,影片長度是1分4秒;第三次是錄到4分8秒,影片長度也是1分4秒 螢幕擷取畫面 2022-09-23 133403 螢幕擷取畫面 2022-09-23 133501 螢幕擷取畫面 2022-09-23 133601

不太確定能不能幫到你,這是用--log-level "DEBUG"錄製時的文本: OneDrive

nilaoda commented 1 year ago

@MAN-GOR 这就是为什么我要加--use-shaka-packager。 mp4decrypt会造成时间戳问题 你可以用ffmpeg或者mkvmerge混流一下音视频 应该就正常了

nilaoda commented 1 year ago

@toyou-shu 录制GUI_20220923.zip

tvbent commented 1 year ago

請問這個key“92e0fe47d54ecba79141f1c9f2afe8fc”是在哪裡看到的?

MAN-GOR commented 1 year ago

請問這個key“92e0fe47d54ecba79141f1c9f2afe8fc”是在哪裡看到的?

我不能教你我是如何獲取的,我只能給你人們普遍使用的方法 https://streamable.com/bjf5f8 有任何問題請善用Google,所有答案都會在開發者工具和Google裡找到

這就是為什麼我要加--use-shaka-packager。mp4decrypt會造成時間戳問題 你可以用ffmpeg或者mkvmerge混流一下音視頻 應該就正常了

mp4decrypt有時間戳問題,shaka-packager播放時會卡住,兩者都需要混流才能觀看XD 不過後者能支援實時混流觀看,前者只能混流從開始下載到輸入混流命令時所下載的那一段

nilaoda commented 1 year ago

@tvbent getwvkey.cc 可能会对你有帮助

MAN-GOR commented 1 year ago

話說如果合併時出現 「WARN : [h264 @ 000002405e3d7040] Increasing reorder buffer to 1」 「WARN : [h264 @ 000002405e3d7040] Increasing reorder buffer to 2」 會對合併後的影片有什麼影響嗎?

myTV SUPER每一支影片合併時都會出現「Increasing reorder buffer to 2」

nilaoda commented 1 year ago

話說如果合併時出現 「WARN : [h264 @ 000002405e3d7040] Increasing reorder buffer to 1」 「WARN : [h264 @ 000002405e3d7040] Increasing reorder buffer to 2」 會對合併後的影片有什麼影響嗎?

myTV SUPER每一支影片合併時都會出現「Increasing reorder buffer to 2」

没什么影响

MAN-GOR commented 1 year ago

下載ViuTV上的「ERROR自肥企畫」時發現,第4集和第6集合併會提示以下錯誤: Application provided duration: 4293728615000 is invalid WARN : av_interleaved_write_frame(): Invalid argument WARN : Error muxing a packet for output file #0 分開下載影、音、字幕後發現,字幕最尾那一句的結束時間軸的修正有錯誤,可能是這個原因所導致的提示錯誤。

nilaoda commented 1 year ago

下載ViuTV上的「ERROR自肥企畫」時發現,第4集和第6集合併會提示以下錯誤: Application provided duration: 4293728615000 is invalid WARN : av_interleaved_write_frame(): Invalid argument WARN : Error muxing a packet for output file #0 分開下載影、音、字幕後發現,字幕最尾那一句的結束時間軸的修正有錯誤,可能是這個原因所導致的提示錯誤。

我木有会员。。😂

MAN-GOR commented 1 year ago

我木有會員。。😂

你誤會了,它所提示的會員是指註冊而已,ViuTV並沒有付費機制

MAN-GOR commented 1 year ago

還有Viu(另一個平台)在「調用ffmpeg合併中...」時會多次提示: WARN : [h264 @ 00000282f82cd380] non-existing SPS 0 referenced in buffering period WARN : Last message repeated 1 times WARN : [mpegts @ 00000282f829e880] Packet corrupt (stream = 0, dts = 1044000). WARN : concat:000.ts|001.ts|002.ts|003.ts|004.ts|005.ts|006.ts|007.ts|008.ts|009.ts|010.ts|011.ts|012.ts|013.ts|014.ts|015.ts|016.ts|017.ts|018.ts|019.ts|020.ts|021.ts|022.ts|023.ts|024.ts|025.ts|026.ts|027.ts|028.ts|029.ts|030.ts|031.ts|032.ts|033.ts|034.ts|035.ts|036.ts|037.ts|038.ts|039.ts|040.ts|041.ts|042.ts|043.ts|044.ts|045.ts|046.ts|047.ts|048.ts|049.ts|050.ts|051.ts|052.ts|053.ts|054.ts|055.ts|056.ts|057.ts|058.ts|059.ts|060.ts|061.ts|062.ts|063.ts|064.ts|065.ts|066.ts|067.ts|068.ts|069.ts|070.ts|071.ts|072.ts|073.ts|074.ts|075.ts|076.ts|077.ts|078.ts|079.ts|080.ts|081.ts|082.ts|083.ts|084.ts|085.ts|086.ts|087.ts|088.ts|089.ts|090.ts|091.ts|092.ts|093.ts|094.ts|095.ts|096.ts|097.ts|098.ts|099.ts|100.ts|101.ts|102.ts|103.ts|104.ts|105.ts|106.ts|107.ts|108.ts|109.ts|110.ts|111.ts|112.ts|113.ts|114.ts|115.ts|116.ts|117.ts|118.ts|119.ts|120.ts|121.ts|122.ts|123.ts|124.ts|125.ts|126.ts|127.ts|128.ts|129.ts|130.ts|131.ts|132.ts|133.ts|134.ts|135.ts|136.ts|137.ts|138.ts|: corrupt input packet in stream 0 請問這個有什麼影響,或是有什麼解決方法嗎?

下載ViuTV上的「ERROR自肥企畫」時發現,第4集和第6集合併會提示以下錯誤:

另外之前說的ViuTV是指使用--mux-after-done時的合併

nilaoda commented 1 year ago

還有Viu(另一個平台)在「調用ffmpeg合併中...」時會多次提示: WARN : [h264 @ 00000282f82cd380] non-existing SPS 0 referenced in buffering period WARN : Last message repeated 1 times WARN : [mpegts @ 00000282f829e880] Packet corrupt (stream = 0, dts = 1044000). WARN : concat:000.ts|001.ts|002.ts|003.ts|004.ts|005.ts|006.ts|007.ts|008.ts|009.ts|010.ts|011.ts|012.ts|013.ts|014.ts|015.ts|016.ts|017.ts|018.ts|019.ts|020.ts|021.ts|022.ts|023.ts|024.ts|025.ts|026.ts|027.ts|028.ts|029.ts|030.ts|031.ts|032.ts|033.ts|034.ts|035.ts|036.ts|037.ts|038.ts|039.ts|040.ts|041.ts|042.ts|043.ts|044.ts|045.ts|046.ts|047.ts|048.ts|049.ts|050.ts|051.ts|052.ts|053.ts|054.ts|055.ts|056.ts|057.ts|058.ts|059.ts|060.ts|061.ts|062.ts|063.ts|064.ts|065.ts|066.ts|067.ts|068.ts|069.ts|070.ts|071.ts|072.ts|073.ts|074.ts|075.ts|076.ts|077.ts|078.ts|079.ts|080.ts|081.ts|082.ts|083.ts|084.ts|085.ts|086.ts|087.ts|088.ts|089.ts|090.ts|091.ts|092.ts|093.ts|094.ts|095.ts|096.ts|097.ts|098.ts|099.ts|100.ts|101.ts|102.ts|103.ts|104.ts|105.ts|106.ts|107.ts|108.ts|109.ts|110.ts|111.ts|112.ts|113.ts|114.ts|115.ts|116.ts|117.ts|118.ts|119.ts|120.ts|121.ts|122.ts|123.ts|124.ts|125.ts|126.ts|127.ts|128.ts|129.ts|130.ts|131.ts|132.ts|133.ts|134.ts|135.ts|136.ts|137.ts|138.ts|: corrupt input packet in stream 0 請問這個有什麼影響,或是有什麼解決方法嗎?

下載ViuTV上的「ERROR自肥企畫」時發現,第4集和第6集合併會提示以下錯誤:

另外之前說的ViuTV是指使用--mux-after-done時的合併

两种可能

  1. 如果重新下载没有这些警告信息,说明真的是网络原因丢包了
  2. 如果重新下载还是这样,则可能是服务端切片的问题导致ffmpeg合并时警告TS包有问题(也可能是解密存在问题)。如果下载好的文件播放起来没有什么问题,可以启用二进制合并(--binary-merge)来规避这些警告。
MAN-GOR commented 1 year ago

兩種可能

  1. 如果重新下載沒有這些警告信息,說明真的是網絡原因丟包了
  2. 如果重新下載還是這樣,則可能是服務端切片的問題導致ffmpeg合並時警告TS包有問題(也可能是解密存在問題)。如果下載好的文件播放起來沒有什麼問題,可以啟用二進制合並(--binary-merge)來規避這些警告。

感謝,因為每套也會提示,而且Viu是無加密m3u8,所以加個--binary-merge應該就可以了

MAN-GOR commented 1 year ago

使用「--mux-after-done "format=mp4"」混流HBO GO的檔案後,在potplayer裡所有語言標籤都變成不知名符號 而且在mkvtoolnix裡查看使用「--mux-after-done "format=mp4"」混流的檔案時,所有字幕皆沒有顯示。使用mkvtoolnix再度混流後的檔案會失去所有字幕 螢幕擷取畫面 (74) 螢幕擷取畫面 (75) image

另外有一個問題,使用「--auto-select」時,音訊會自動選擇所有音質最好的原聲和配音 但是當我使用「-sa lang="ENG|YUE":for=best」時,它只會選擇其中一條音訊下載 我知道在best後面加2字能再多下載一條,但可能不是每一集都有配音,那這情況又會下載到1條最好和1條次好的英文音訊 請問有沒有一個選項能下載所有音質最好的原聲和配音?

nilaoda commented 1 year ago

@MAN-GOR 先设置到debug级别--log-level DEBUG 看看合并时使用的命令吧。我怀疑是语言描述是简体中文的问题(?)

mkvtoolnix看不到是因为mp4容器的字幕它识别不到。要想它能识别,需要设置format=mkv。此外,为了MKV能有更好的兼容性,可以追加--sub-format SRT

选择音轨的问题,暂时应该做不到,等后续优化吧。

MAN-GOR commented 1 year ago

@MAN-GOR 先設置到debug級別--log-level DEBUG 看看合並時使用的命令吧。我懷疑是語言描述是簡體中文的問題(?)

忘記給你密鑰和連結來測試了,現在補上: N_m3u8DL-RE.exe --tmp-dir "Downloads" --save-dir "Downloads" --use-shaka-packager --auto-select --sub-format "SRT" --mux-after-done "format=mp4" --save-name "1" --key "41ec85b13972541d8cd968398182c1c7:f8ac68dd1de813d3383a3765290ed4a4" "https://hbogoprod-vod.akamaized.net/video/vod/output/HBOAsia/62aafc61d940521074a90c13_hbovodhd/dash0/TWN_index.mpd"

mkvtoolnix看不到是因為mp4容器的字幕它識別不到。要想它能識別,需要設置format=mkv。此外,為了MKV能有更好的兼容性,可以追加--sub-format SRT

--sub-format SRT的話之前已經有加了,不過format=是用mp4而已,我晚些看看mkv會不會一樣

選擇音軌的問題,暫時應該做不到,等後續優化吧。

好的,感謝!

nilaoda commented 1 year ago

@MAN-GOR 你这种场景,可以这样来实现音轨选择

直接通过group id来过滤

-sa id="(ENG|YUE).*/3":for=best2

过滤group id,再过滤语言

-sa id=".*/3":lang="ENG|YUE":for=best2

这样的话只会在最佳音轨里进行筛选,不会下载其他质量的音轨。

MAN-GOR commented 1 year ago

先設置到debug級別--log-level DEBUG 看看合並時使用的命令吧。我懷疑是語言描述是簡體中文的問題(?)

mkvtoolnix看不到是因為mp4容器的字幕它識別不到。要想它能識別,需要設置format=mkv。此外,為了MKV能有更好的兼容性,可以追加--sub-format SRT

使用format=mp4合併時,沒有錯誤提示,但裡面的語言標籤全是不知名符號: DEBUG : E:\widevine_keys-main\ffmpeg.exe: -loglevel warning -y -i "Downloads\1.mp4" -i "Downloads\1.THA.m4a" -i "Downloads\1.ENG.m4a" -i "Downloads\1.YUE.m4a" -i "Downloads\1.TH.srt" -i "Downloads\1.MA.srt" -i "Downloads\1.EN.srt" -i "Downloads\1.ID.srt" -i "Downloads\1.CZ.srt" -i "Downloads\1.CN.srt" -map 0 -map 1 -map 2 -map 3 -map 4 -map 5 -map 6 -map 7 -map 8 -map 9 -c:a copy -c:v copy -c:s mov_text -map_metadata -1 -metadata:s:0 language="und" -metadata:s:1 language="THA" -metadata:s:2 language="ENG" -metadata:s:3 language="YUE" -metadata:s:4 language="TH" -metadata:s:5 language="MA" -metadata:s:6 language="EN" -metadata:s:7 language="ID" -metadata:s:8 language="CZ" -metadata:s:9 language="CN" -metadata date="2022-10-11T18:16:07.0452334+08:00" -ignore_unknown -copy_unknown "Downloads\1.MUX.mp4" WARN : Cleaning files... WARN : Rename to 1.mp4 INFO : Done

使用format=mkv合併後無亂碼標籤,但合併時有「Starting new cluster due to timestamp」提示 E:\widevine_keys-main\ffmpeg.exe: -loglevel warning -y -i "Downloads\1.mp4" -i "Downloads\1.THA.m4a" -i "Downloads\1.ENG.m4a" -i "Downloads\1.YUE.m4a" -i "Downloads\1.TH.srt" -i "Downloads\1.MA.srt" -i "Downloads\1.EN.srt" -i "Downloads\1.ID.srt" -i "Downloads\1.CZ.srt" -i "Downloads\1.CN.srt" -map 0 -map 1 -map 2 -map 3 -map 4 -map 5 -map 6 -map 7 -map 8 -map 9 -c copy -map_metadata -1 -metadata:s:0 language="und" -metadata:s:1 language="THA" -metadata:s:2 language="ENG" -metadata:s:3 language="YUE" -metadata:s:4 language="TH" -metadata:s:5 language="MA" -metadata:s:6 language="EN" -metadata:s:7 language="ID" -metadata:s:8 language="CZ" -metadata:s:9 language="CN" -metadata date="2022-10-11T18:13:31.3668000+08:00" -ignore_unknown -copy_unknown "Downloads\1.MUX.mkv" WARN : [matroska @ 000002ba82643c00] Starting new cluster due to timestamp WARN : Last message repeated 4 times WARN : Cleaning files... WARN : Rename to 1.mkv INFO : Done

使用format=mkv:muxer=mkvmerge時會直接提示合併失敗 DEBUG : E:\widevine_keys-main\mkvmerge.exe: -q --output "Downloads\1.MUX.mkv" --no-chapters --language 0:"und" "Downloads\1.mp4" --language 0:"THA" "Downloads\1.THA.m4a" --language 0:"ENG" "Downloads\1.ENG.m4a" --language 0:"YUE" "Downloads\1.YUE.m4a" --language 0:"TH" "Downloads\1.TH.srt" --language 0:"MA" "Downloads\1.MA.srt" --language 0:"EN" "Downloads\1.EN.srt" --language 0:"ID" "Downloads\1.ID.srt" --language 0:"CZ" "Downloads\1.CZ.srt" --language 0:"CN" "Downloads\1.CN.srt" ERROR : Mux failed

mp4和mkvmerge混流出來的檔案有問題可能是因為語言標籤(CN和CZ)不符合規格?

另外關於我之前說的:

下載ViuTV上的「ERROR自肥企畫」時發現,第4集和第6集合併會提示以下錯誤: Application provided duration: 4293728615000 is invalid WARN : av_interleaved_write_frame(): Invalid argument WARN : Error muxing a packet for output file #0

相信錯誤源頭在於字幕最尾句的結束時間軸 從下圖可以看到「--auto-subtitle-fix-True」的開始時間軸是00:23:03.200,但結束時間軸卻是00:02:24.519 螢幕擷取畫面 2022-10-11 183557 螢幕擷取畫面 2022-10-11 183606

最終測試強行合併會導致最後一句的字幕連影音一起被剪走 原片是23:04,合併後變成了23:03

nilaoda commented 1 year ago

@MAN-GOR 已修正时间轴问题

nilaoda commented 1 year ago

混流那个确实是因为MPD描述中lang不是标准的ISO Code,导致合并失败的。这种情况还是手动混流吧……

nilaoda commented 1 year ago

@MAN-GOR 0.0.4对HBO的语言标签做了优化

MAN-GOR commented 1 year ago

@MAN-GOR 0.0.4对HBO的语言标签做了优化

感謝您!

MA是馬來文,是找不到馬來文的語言標籤嗎? 因為MA還是會顯示und

另外那些中文名稱是根據語言標籤來對應嗎? 所以Yue、CN、CZ才不會顯示為粵語、簡中、繁中

nilaoda commented 1 year ago

@MAN-GOR 程序判断逻辑在这里: https://github.com/nilaoda/N_m3u8DL-RE/blob/9ad3b9edb12c78b1f6a7d9c4342fb9c72ff5b21b/src/N_m3u8DL-RE/Util/MergeUtil.cs#L267

在Windows上支持的全部标签和显示名称:

点击展开 ``` iv ivl Invariant Language (Invariant Country) Invariant Language (Invariant Country) Invariant Language (Invariant Country) aa aar 阿法尔语 阿法文 Afar af afr 南非荷兰语 南非荷蘭文 Afrikaans agq agq 亚罕语 亞罕文 Aghem ak aka 阿肯语 阿坎文 Akan am amh 阿姆哈拉语 阿姆哈拉文 Amharic ar ara 阿拉伯语 阿拉伯文 Arabic arn arn 马普切语 馬普切文 Mapuche as asm 阿萨姆语 阿薩姆文 Assamese asa asa 帕雷语 阿蘇文 Asu ast ast 阿斯图里亚斯语 阿斯圖里亞文 Asturian az aze 阿塞拜疆语 亞塞拜然文 Azerbaijani ba bak 巴什基尔语 巴什喀爾文 Bashkir bas bas 巴萨语 巴薩文 Basaa be bel 白俄罗斯语 白俄羅斯文 Belarusian bem bem 本巴语 別姆巴文 Bemba bez bez 贝纳语 貝納文 Bena bg bul 保加利亚语 保加利亞文 Bulgarian bin bin 比尼语 比尼文 Edo bm bam 班巴拉语 班巴拉文 Bamanankan bn ben 孟加拉语 孟加拉文 Bangla bo bod 藏语 藏文 Tibetan br bre 布列塔尼语 布列塔尼文 Breton brx brx 博多语 博多文 Bodo bs bos 波斯尼亚语 波士尼亞文 Bosnian byn byn 比林语 比林文 Blin ca cat 加泰罗尼亚语 加泰蘭文 Catalan ccp ccp 查克玛语 查克馬文 Chakma ce che 车臣语 車臣文 Chechen ceb ceb 宿务语 宿霧文 Cebuano cgg cgg 奇加语 奇加文 Chiga chr chr 切罗基语 柴羅基文 Cherokee ckb ckb 中库尔德语 中庫德文 Central Kurdish co cos 科西嘉语 科西嘉文 Corsican cs ces 捷克语 捷克文 Czech cu chu 教会斯拉夫语 宗教斯拉夫文 Church Slavic cy cym 威尔士语 威爾斯文 Welsh da dan 丹麦语 丹麥文 Danish dav dav 台塔语 台塔文 Taita de deu 德语 德文 German dje dje 哲尔马语 扎爾馬文 Zarma doi doi 多格拉语 多格來文 Dogri dsb dsb 下索布语 下索布文 Lower Sorbian dua dua 杜阿拉语 杜亞拉文 Duala dv div 迪维希语 迪維西文 Divehi dyo dyo 朱拉语 朱拉文 Jola-Fonyi dz dzo 宗卡语 宗卡文 Dzongkha ebu ebu 恩布语 恩布文 Embu ee ewe 埃维语 埃維文 Ewe el ell 希腊语 希臘文 Greek en eng 英语 英文 English eo epo 世界语 世界文 Esperanto es spa 西班牙语 西班牙文 Spanish et est 爱沙尼亚语 愛沙尼亞文 Estonian eu eus 巴斯克语 巴斯克文 Basque ewo ewo 埃翁多语 依汪都文 Ewondo fa fas 波斯语 波斯文 Persian ff ful 富拉语 富拉文 Fulah fi fin 芬兰语 芬蘭文 Finnish fil fil 菲律宾语 菲律賓文 Filipino fo fao 法罗语 法羅文 Faroese fr fra 法语 法文 French fur fur 弗留利语 弗留利文 Friulian fy fry 西弗里西亚语 西弗里西亞文 Western Frisian ga gle 爱尔兰语 愛爾蘭文 Irish gd gla 苏格兰盖尔语 蘇格蘭蓋爾文 Scottish Gaelic gl glg 加利西亚语 加利西亞文 Galician gn grn 瓜拉尼语 瓜拉尼文 Guarani gsw gsw 瑞士德语 德文(瑞士) Swiss German gu guj 古吉拉特语 古吉拉特文 Gujarati guz guz 古西语 古西文 Gusii gv glv 马恩语 曼島文 Manx ha hau 豪萨语 豪撒文 Hausa haw haw 夏威夷语 夏威夷文 Hawaiian he heb 希伯来语 希伯來文 Hebrew hi hin 印地语 印地文 Hindi hr hrv 克罗地亚语 克羅埃西亞文 Croatian hsb hsb 上索布语 上索布文 Upper Sorbian hu hun 匈牙利语 匈牙利文 Hungarian hy hye 亚美尼亚语 亞美尼亞文 Armenian ia ina 国际语 國際文 Interlingua ibb ibb 伊比比奥语 伊比比奧文 Ibibio id ind 印度尼西亚语 印尼文 Indonesian ig ibo 伊博语 伊布文 Igbo ii iii 彝语 彝文 Yi is isl 冰岛语 冰島文 Icelandic it ita 意大利语 義大利文 Italian iu iku 因纽特语 因紐特文 Inuktitut ja jpn 日语 日文 Japanese jgo jgo 恩艮巴语 恩格姆巴文 Ngomba jmc jmc 马切姆语 馬恰美文 Machame jv jav 爪哇语 爪哇文 Javanese ka kat 格鲁吉亚语 喬治亞文 Georgian kab kab 卡拜尔语 卡比爾文 Kabyle kam kam 卡姆巴语 卡姆巴文 Kamba kde kde 马孔德语 馬孔德文 Makonde kea kea 卡布佛得鲁语 卡布威爾第文 Kabuverdianu khq khq 西桑海语 西桑海文 Koyra Chiini ki kik 吉库尤语 吉庫尤文 Kikuyu kk kaz 哈萨克语 哈薩克文 Kazakh kkj kkj 卡库语 卡庫文 Kako kl kal 格陵兰语 格陵蘭文 Kalaallisut kln kln 卡伦金语 卡倫金文 Kalenjin km khm 高棉语 高棉文 Khmer kn kan 卡纳达语 坎那達文 Kannada ko kor 韩语 韓文 Korean kok kok 孔卡尼语 貢根文 Konkani kr kau 卡努里语 卡努里文 Kanuri ks kas 克什米尔语 喀什米爾文 Kashmiri ksb ksb 香巴拉语 尚巴拉文 Shambala ksf ksf 巴菲亚语 巴菲亞文 Bafia ksh ksh 科隆语 科隆文 Colognian kw cor 康沃尔语 康瓦耳文 Cornish ky kir 柯尔克孜语 吉爾吉斯文 Kyrgyz la lat 拉丁语 拉丁文 Latin lag lag 朗吉语 朗吉文 Langi lb ltz 卢森堡语 盧森堡文 Luxembourgish lg lug 卢干达语 干達文 Ganda lkt lkt 拉科塔语 拉科塔文 Lakota ln lin 林加拉语 林加拉文 Lingala lo lao 老挝语 寮文 Lao lrc lrc 北卢尔语 北盧爾文 Northern Luri lt lit 立陶宛语 立陶宛文 Lithuanian lu lub 鲁巴加丹加语 魯巴加丹加文 Luba-Katanga luo luo 卢奥语 盧奧文 Luo luy luy 卢雅语 盧雅文 Luyia lv lav 拉脱维亚语 拉脫維亞文 Latvian mai mai 迈蒂利语 邁蒂利文 Maithili mas mas 马赛语 馬賽文 Masai mer mer 梅鲁语 梅魯文 Meru mfe mfe 毛里求斯克里奥尔语 克里奧文(模里西斯) Morisyen mg mlg 马拉加斯语 馬達加斯加文 Malagasy mgh mgh 马库阿语 馬夸文 Makhuwa-Meetto mgo mgo 梅塔语 美塔文 Metaʼ mi mri 毛利语 毛利文 Maori mk mkd 马其顿语 馬其頓文 Macedonian ml mal 马拉雅拉姆语 馬來亞拉姆文 Malayalam mn mon 蒙古语 蒙古文 Mongolian mni mni 曼尼普尔语 曼尼普爾文 Manipuri moh moh 摩霍克语 莫霍克文 Mohawk mr mar 马拉地语 馬拉地文 Marathi ms msa 马来语 馬來文 Malay mt mlt 马耳他语 馬爾他文 Maltese mua mua 蒙当语 蒙當文 Mundang my mya 缅甸语 緬甸文 Burmese mzn mzn 马赞德兰语 馬贊德蘭文 Mazanderani naq naq 纳马语 納馬文 Nama nb nob 书面挪威语 巴克摩挪威文 Norwegian Bokmål nd nde 北恩德贝勒语 北地畢列文 North Ndebele nds nds 低地德语 低地德文 Low German ne nep 尼泊尔语 尼泊爾文 Nepali nl nld 荷兰语 荷蘭文 Dutch nmg nmg 夸西奥语 夸西奧文 Kwasio nn nno 挪威尼诺斯克语 耐諾斯克挪威文 Norwegian Nynorsk nnh nnh 恩甘澎语 恩甘澎文 Ngiemboon nqo nqo 西非书面文字 曼德文字 (N’Ko) N’Ko nr nbl 南恩德贝勒语 南地畢列文 South Ndebele nso nso 北索托语 北索托文 Sesotho sa Leboa nus nus 努埃尔语 努埃爾文 Nuer nyn nyn 尼昂科勒语 尼揚科萊文 Nyankole oc oci 奥克语 奧克西坦文 Occitan om orm 奥罗莫语 奧羅莫文 Oromo or ori 奥里亚语 歐迪亞文 Odia os oss 奥塞梯语 奧塞提文 Ossetic pa pan 旁遮普语 旁遮普文 Punjabi pap pap 帕皮阿门托语 帕皮阿門托文 Papiamento pcm pcm 尼日利亚皮钦语 奈及利亞皮欽文 Nigerian Pidgin pl pol 波兰语 波蘭文 Polish prg prg 普鲁士语 普魯士文 Prussian ps pus 普什图语 普什圖文 Pashto pt por 葡萄牙语 葡萄牙文 Portuguese qu que 克丘亚语 蓋楚瓦文 Quechua quc quc 基切语 基切文 Kʼicheʼ rm roh 罗曼什语 羅曼斯文 Romansh rn run 隆迪语 隆迪文 Rundi ro ron 罗马尼亚语 羅馬尼亞文 Romanian rof rof 兰博语 蘭博文 Rombo ru rus 俄语 俄文 Russian rw kin 卢旺达语 盧安達文 Kinyarwanda rwk rwk 罗瓦语 羅瓦文 Rwa sa san 梵语 梵文 Sanskrit sah sah 萨哈语 雅庫特文 Sakha saq saq 桑布鲁语 薩布魯文 Samburu sat sat 桑塔利语 桑塔利文 Santali sbp sbp 桑古语 桑古文 Sangu sd snd 信德语 信德文 Sindhi se sme 北方萨米语 北薩米文 Northern Sami seh seh 塞纳语 賽納文 Sena ses ses 东桑海语 東桑海文 Koyraboro Senni sg sag 桑戈语 桑戈文 Sango shi shi 希尔哈语 希爾哈文 Tachelhit si sin 僧伽罗语 僧伽羅文 Sinhala sk slk 斯洛伐克语 斯洛伐克文 Slovak sl slv 斯洛文尼亚语 斯洛維尼亞文 Slovenian sma sma 南萨米语 南薩米文 Southern Sami smj smj 吕勒萨米语 魯勒薩米文 Lule Sami smn smn 伊纳里萨米语 伊納里薩米文 Inari Sami sms sms 斯科特萨米语 斯科特薩米文 Skolt Sami sn sna 绍纳语 紹納文 Shona so som 索马里语 索馬利文 Somali sq sqi 阿尔巴尼亚语 阿爾巴尼亞文 Albanian sr srp 塞尔维亚语 塞爾維亞文 Serbian ss ssw 斯瓦蒂语 斯瓦特文 siSwati ssy ssy 萨霍语 薩霍文 Saho st sot 南索托语 塞索托文 Sesotho su sun 巽他语 巽他文 Sundanese sv swe 瑞典语 瑞典文 Swedish sw swa 斯瓦希里语 史瓦希里文 Kiswahili syr syr 叙利亚语 敘利亞文 Syriac ta tam 泰米尔语 坦米爾文 Tamil te tel 泰卢固语 泰盧固文 Telugu teo teo 特索语 特索文 Teso tg tgk 塔吉克语 塔吉克文 Tajik th tha 泰语 泰文 Thai ti tir 提格利尼亚语 提格利尼亞文 Tigrinya tig tig 提格雷语 蒂格雷文 Tigre tk tuk 土库曼语 土庫曼文 Turkmen tn tsn 茨瓦纳语 塞茲瓦納文 Setswana to ton 汤加语 東加文 Tongan tr tur 土耳其语 土耳其文 Turkish ts tso 聪加语 特松加文 Xitsonga tt tat 鞑靼语 韃靼文 Tatar twq twq 北桑海语 北桑海文 Tasawaq tzm tzm 塔马齐格特语 中阿特拉斯塔馬塞特文 Central Atlas Tamazight ug uig 维吾尔语 維吾爾文 Uyghur uk ukr 乌克兰语 烏克蘭文 Ukrainian ur urd 乌尔都语 烏都文 Urdu uz uzb 乌兹别克语 烏茲別克文 Uzbek vai vai 瓦伊语 瓦伊文 Vai ve ven 文达语 溫達文 Venda vi vie 越南语 越南文 Vietnamese vo vol 沃拉普克语 沃拉普克文 Volapük vun vun 温旧语 溫舊文 Vunjo wae wae 瓦尔瑟语 瓦爾瑟文 Walser wal wal 瓦拉莫语 瓦拉莫文 Wolaytta wo wol 沃洛夫语 沃洛夫文 Wolof xh xho 科萨语 科薩文 isiXhosa xog xog 索加语 索加文 Soga yav yav 洋卞语 洋卞文 Yangben yi yid 意第绪语 意第緒文 Yiddish yo yor 约鲁巴语 約魯巴文 Yoruba zgh zgh 标准摩洛哥塔马塞特语 標準摩洛哥塔馬塞特文 Standard Moroccan Tamazight zh zho 中文 中文 Chinese zu zul 祖鲁语 祖魯文 isiZulu ```

Yue、CN、CZ不在里面,所以识别不到。我还在考虑更好的方式,也许应该允许用户输入自定义映射?

benwwchen commented 1 year ago

另外,录制同时可以使用如下命令将音视频进行实时混流以便在播放器中实时观看,(或进行串流)

ffmpeg -readrate 1 -i 2022-09-21_19-54-42_Jade.mp4 -i 2022-09-21_19-54-42_Jade.chi.m4a -c copy 2022-09-21_19-54-42_Jade.ts

只需要打开2022-09-21_19-54-42_Jade.ts,大部分播放器都会自动随着TS文件的更新而更新可播放时长。

请问对字幕有什么比较好的办法可以加入串流吗?看了一下新增的--live-pipe-mux参数,发现在代码里排除了字幕流,mpeg-ts 也确实不支持 srt 字幕。也尝试过用下面的ffmpeg命令转成 hls 流,但是-readrate 1参数似乎对字幕无效,只有在命令运行时已经写入部分的srt有被转成webvtt,后续追加的字幕ffmpeg就没有继续读取了。

有没有可能根据下载的分段直接动态生成 m3u8 呢?但是目前即使开启--live-keep-segments,字幕保留的分段格式还是转成srt之前的原始格式。

ffmpeg -re -i ${infile_prefix}.mp4 -i ${infile_prefix}.chi.m4a -i ${infile_prefix}.chi.srt \
-map 0 -map 1 -map 2 \
-c:v copy -c:a copy -c:s webvtt \
-hls_flags delete_segments -f hls \
-var_stream_map "a:0,agroup:chi,default:yes v:0,agroup:chi,s:0,sgroup:chi" \
-hls_time 30 -master_pl_name index_test.m3u8 "$stream_dir/live_%v.m3u8"
nilaoda commented 1 year ago

@benwwchen 生成m3u8是可行的,不过需要花费大量的时间对字幕进行单独处理,暂时搁置。

MAN-GOR commented 1 year ago

在myTV SUPER下載「日語」或「韓語」影劇時開啟自動合併: 使用ffmpeg自動合併時,音軌會顯示為und,而非對應標籤。 使用mkvmerge自動合併時,會提示合併失敗。

nilaoda commented 1 year ago

@MAN-GOR 加进去了,可以从Actions下载新版本:

https://github.com/nilaoda/N_m3u8DL-RE/actions/runs/4626229144 https://nightly.link/nilaoda/N_m3u8DL-RE/actions/runs/4626229144