[R語言應用] 用R語言+剪映製作YouTube直播剪輯影片 – 完全免費

0

Last Updated on 2024-12-09

Home » R語言教學 » R語言應用 » [R語言應用] 用R語言+剪映製作YouTube直播剪輯影片 – 完全免費

你有沒有想把 YouTube 的影片檔案轉成 mp3,下載到電腦裡面,但又覺得每個手動去貼網址很麻煩?這篇文章告訴你解決方法。


有喜歡的實況主或是主播或是VTuber,平常會固定開台聊天、雜談,或者直播唱歌,想剪輯精華影片或者cover曲目,幫忙他們推廣,但不知道怎麼開始嗎?過程很繁雜,要下載原始直播的影片(mov/mp4),接著剪輯你需要的片段,丟到影片編輯器後要加上開場、結尾,還要上字幕、上圖卡,最後再上傳到YouTuber上,感覺好難!沒關係,R語言加上剪映可以搞定一切,重點是完全免費

流程概述

我們先以YouTube直播為例,描述如何製作剪輯影片:

  • 步驟一:鎖定你想要的直播影片,接著想辦法下載它
    • 卡點一:直播動輒兩三小時,網路上的youtube2mp3、youtube 2mp4工具無法處理
  • 步驟二:剪輯你想要的直播影片,接著要想辦法剪輯它
    • 卡點二:整串丟到剪輯影片裡,檔案滿大的
  • 步驟三:上字幕,如果是雜談要手打逐字稿,如果是歌回要找歌詞對秒數
    • 卡點三:上字幕很耗時間
  • 步驟三:輸出後把影片上傳到YouTube
    • 這步驟最簡單
  • 步驟四:為了推廣給外國人、方便聽障朋友讀影片,你想上字幕
    • 剪映要付費版才能輸出srt!

你需要的工具

  • 下載影片工具:RStudio + R
  • 剪輯工具:RStudio + R
  • 影片編輯工具:剪映
  • 其他工具:json轉srt工具、youtube cc字幕轉srt工具

步驟一:下載影片,可以用R

我們在之前的文章 [R語言應用] 利用R語言把YouTube影片下載成mp3 有介紹過怎麼利用 youtube-dl 這個專案把影片下載成mp3。

裡面主要是安裝R語言套件lares,搭配GitHub上的專案youtube-dl,接著再回去調用lares的函數,把影片抓成mp3。事實上,lares是額外在R裡面方便R愛用者街上youtube-dl,事情不一定要透過它完成、你也不一定要用R語言進行。

我們這篇會用另一個跟youtube-dl有關的專案,叫做yt-dlp。請你按照這篇文章的教學安裝yt-dlp。如果你不確定怎麼做,可以試試看在terminal(終端機)裡面執行底下的程式碼

sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp

或者在RStudio視窗裡面,下方console旁邊的terminal,點進去後貼上上面那段程式碼,應該就可以下載下來了。

Terminal可以執行上面那段code。

安裝好之後,接著你就可以下載mp4或者其他格式的影片。程式碼長這樣

system('yt-dlp --output "%(title)s.%(ext)s" --embed-thumbnail --add-metadata --merge-output-format mp4 "https://www.youtube.com/watch?v=-AzoKJwuqs4"')

裡面的YouTube連結放上你想要的就好,它就會將影片下載到你R語言專案的預設路徑。因為直播時常往往超過一小時,所以會一直顯示在跑,請耐心等候。接下來就可以開始準備剪輯囉。

步驟二:剪輯影片,可以用R

剪輯影片部分,你可以用R剪輯(其實是用yt-dlp),也可以直接丟到影片編輯軟體裡面處理,這部分看你。

丟到R有什麼好處?我覺得寫程式跟影片編輯軟體那種圖形介面(Graphic User Interface,GUI)最大差異就是能否標準化,藉此提升效率。

有幾個地方我覺得R比GUI好:用R可以不用手動拖拉決定要剪到哪一段、用R可以不用手動算秒數、用R可以設定參數確保檔案名稱不會亂寫;如果用心寫函數的話,R應該也可以幫上後面產出SRT檔,但這塊我還沒鑽研。

上面提的好處發生在什麼地方?先給大家看我的程式碼。

### 寫一個function轉秒數
timecode_to_second <- function(timecode) {
  # 將輸入轉換為字串
  timecode <- as.character(timecode)
  
  # 確認長度是否為四位數,否則補零到四位
  if (nchar(timecode) < 4) {
    timecode <- sprintf("%04d", as.integer(timecode))
  } else if (nchar(timecode) != 4) {
    stop("輸入的 timecode 格式不正確,應為四位數,例如 '0518' 或 518")
  }
  
  # 計算分鐘和秒數
  minutes <- as.integer(substr(timecode, 1, 2))
  seconds <- as.integer(substr(timecode, 3, 4))
  
  # 回傳總秒數
  return(minutes * 60 + seconds)
}

### 設置秒數
time_start <- timecode_to_second(2748)
time_end <- timecode_to_second(3113)

### 設置檔名
name_file <- "【歌回】VTuber 123 20241202.mp4"
name_newfile <- "VTuber 123 - 每次都想呼喊你的名字 cover.mp4"

### 執行剪輯
system(paste0('ffmpeg -hide_banner -loglevel panic -y -ss ', time_start, ' -to ', time_end,' -i "',name_file,'" "', name_newfile,'" '))

後面步驟還在撰寫中!

剪映原始檔案抓取字幕工具

YouTube CC字幕下載擴充功能

YouTube CC字幕下載工具

簡體轉繁體工具

No Comments

Leave a Reply