發表文章

目前顯示的是有「ffmpeg」標籤的文章

FFmpeg 影片旋轉與 Metadata 旋轉標記(Side Data)處理解析

圖片
在處理手機或相機拍攝的影片時,常會遇到「畫面明明是直的,但處理後方向卻亂掉」的狀況。這篇文章記錄了我理解 FFmpeg 畫面旋轉與消除 Metadata 轉向標記的經驗。 為什麼畫面會「轉兩次」? 影片的方向控制其實分為兩個層面: 原始像素資料 :畫面實際儲存的長寬與像素陣列。 Metadata 轉向標記(Displaymatrix Side Data) :播放器讀取時,根據這項標記自動旋轉畫面(例如 -90.00 degrees )。 FFmpeg 預設在處理影片時,會 自動套用 Metadata 的旋轉標記。如果你又手動加上 -vf transpose ,就會導致畫面被「旋轉了兩次」。

[AI協作] 使用 Metadata 資料重新命名 MP4 影片檔案:完整腳本與踩坑紀錄

圖片
整理歷年影片備份時,發現檔名存在各種格式不一致的問題:有些檔名帶有 6 位數秒級時間,有些帶有 9 位數毫秒級時間,有些說明文字直接黏在數字後面;更棘手的是,從相機或手機匯出的影片,檔名上的時間與 MP4 內部的 Metadata( creation_time )存在 UTC 時區差。 為了批量修正這些影片,我決定寫一個 Bash 腳本來自動化處理。這篇文章紀錄了開發過程中遇到的幾個 Shell 特性陷阱,以及如何透過與AI協作快速疊代出穩定的解決方案。

[AI協作]更新FFMPEG BASH SCRIPT

  在Ubuntu 22.04上與AI協作的更新FFMPEG BASH SCRIPT 抓取的是由  John VanSickle  建置的靜態ffmpeg軟體包, 如果你需要 ffmpeg 使用URL,如m3u8,請依建議安裝nscd套件,否則程式會crash sudo apt install nscd

連拍照片轉成gif或影片(ffmpeg)

跑馬拉松會有場邊幫忙拍照的,有時候給一連串個人照片,我們就可以透過ffmpeg把他們轉成動圖或是影片 ffmpeg照片轉mp4影片 ffmpeg照片轉gif動圖 以下分別介紹轉換方法 ffmpeg照片轉mp4影片 ffmpeg -framerate 3 -i %02d.jpg -c:v libx264 -pix_fmt yuv420p output.mp4 如果覺得轉成的mp4影片速度比較慢,可以把-framerate 3改成-framerate 6或更大得數值;反之,若覺得mp4影片速度較快,可以把-framerate 3改成-framerate 2或更小得數值。 -i %02d.jpg 是指照片檔案的檔名為01.jpg,02.jpg,03.jpg.... ffmpeg照片轉gif動圖 ffmpeg -framerate 3 -i %02d.jpg -loop 0 output.gif 如果覺得轉成的動圖速度比較慢,可以把-framerate 3改成-framerate 6或更大得數值;反之,若覺得動圖速度較快,可以把-framerate 3改成-framerate 2或更小得數值。 -i %02d.jpg 是指照片檔案的檔名為01.jpg,02.jpg,03.jpg.... -loop 0是表示反覆播放 使用上述這個指令產生出來的圖片會有網格感,是因為採用的色盤沒有經過最佳化。 最佳化轉gif動圖 最佳化就是需要分成兩個階段來處理 階段1. 生成使用的顏色色盤 階段2. 轉換成動圖 ffmpeg -i %02d.jpg -vf palettegen palette.png ffmpeg -framerate 3 -i %02d.jpg -i palette.png -lavfi paletteuse - loop 0 output.gif 參數同前面得解釋

ffmpeg將mp4影片轉換成mp3音檔

  ffmpeg將mp4影片轉換成mp3音檔 原來我沒紀錄過這個,不過在AI時代,這些已經不重要了。 只要在google打一句話 convert mp4 video to mp3 audio using ffmpeg in bash, AI就會回答我們了 #!/bin/bash for file in *.mp4; do filename = "${ file % . * }" echo "to mp3 $filename ..." ffmpeg -y -i " $file " -vn -dn -sn -acodec libmp3lame -b:a 128k " $filename .mp3" done ffmpeg的參數 -y 若輸出的檔案已存在,強制覆蓋不詢問 -i 檔案名稱  指定輸入檔案 -vn -dn -sn 不要處理影片(video),資料(data),字幕(subtitle) -acodec 指定音訊編碼器 -b:a 指定audio的碼率(bitrate) 以前紀錄的只有Windows Prompt(命令提示字元)的版本 用ffmpeg轉換任意影片成mp3

如何在Ubuntu 22.04中轉錄CD成FLAC檔案

圖片
久違的需要轉錄CD成檔案,發現我已經不知道Ubuntu上可以用哪些軟體。為自己整理一下可以用得三種轉換方式,一個CLI,兩個GUI方案。

使用ffmpeg將jpg,png圖片轉換成avif格式

圖片
 因為近期發現許多Web應用開始導入avif圖檔,在保持一定品質時獲得更小的檔案,所以就開始將手邊的轉換成avif圖檔。 上圖使用 Copilot設計工具 創造 使用ffmpeg將圖片轉換成avif格式指令如下

ffmpeg將目錄下的wma串接起來並轉成mp3

 因為拿到很多小的wma聲音檔案,想要接成一個完整的mp3就好

小程式:使用wasm版ffmpeg轉換m4a成wav音檔

使用WASM版ffmpeg緣由 這個東西會在Line BOT中使用到,因為不是所有雲服務上都能夠安裝ffmpeg套件,所以這個機制就能,雖然轉換效率不太好,就是一個可運行的方案。 1. 安裝node.js  建議使用node.js 18 LTS版本 2. 安裝套件 npm install @ffmpeg/core@^0.11 @ffmpeg/ffmpeg@^0.11 @ffmpeg/ffmpeg在 0.12之後做了API的改變 ,並且不支援Node.js了 3. 寫程式

解決ffmpeg轉檔遭遇error: libx264 width not divisible by 2

圖片
解決ffmpeg轉檔遭遇錯誤 [libx264 @ 0x6a371c0] width not divisible by 2 (861x909) [vost#0:0/libx264 @ 0x6a36dc0] Error initializing output stream: Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height Conversion failed!

在Ubuntu上裝static版本ffmpeg 6.0

static版本ffmpeg可以從這裡下載,目前release是6.0 https://johnvansickle.com/ffmpeg/ 改名成 johnvansickle-ffmpeg-release-amd64-static.tar.xz 然後跑下面的安裝script

用ffmpeg轉成HLS串流(m3u8)

用ffmpeg轉成HLS串流,原本內容有人反應太精簡了,而且用起來也有問題,所以2022重新調整過,整理如下。

用ffmpeg切影片,輸出截圖,生成動畫縮圖

最近在用OBS錄影,都會有自己本身切過去/切回來的畫面,想要剪掉它,發現我原來沒有特別整理這塊指令

筆記:ffmpeg和alsa指令錄音PCM及WAV

因為工作研發及驗證需要整理一下ffmpeg和alsa錄音指令

在heroku app加上ffmpeg轉檔

因為最近想要使line bot可以接受影音資料並儲存起來供瀏覽器瀏覽,會需要有轉檔的機制,因為之前已經做過node.js的line bot就繼續延伸下。

Ubuntu 16.04的ffmpeg編譯啟用gnutls

我在上一篇 用docker-compose編譯ffmpeg 時,使用--enable-openssl作為--enable-gnutls的替代。 這裡是遭遇了一個libz的錯誤 /usr/bin/ld: attempted static link of dynamic object `/usr/lib/x86_64-linux-gnu/libz.so' 這部份從build log看起來是因為檢測libgnutls28-dev套件時會使用到shared版本的libz,就算我在前面已經編譯了static版本的libz,它也還是找了shared版本的libz來檢測,導致config不過。 這也意謂著,我要使用啟用gnutls就須要重編譯整個套件,下面就介紹若要啟用gnutls該如何處理。

用docker-compose編譯ffmpeg

用docker-compose編譯ffmpeg ffmpeg官方網站有提供ffmpeg的編譯方法,是static的版本,不過編譯時會報錯,做些微調後我放上github了 https://github.com/Mirochiu/docker-build-static-ffmpeg

筆記:重新編譯libvpx來支援vp9 profile2的HDR

緣由 因為Android新版本的文件寫到我的手機有支援VP9 Profile2功能,所以就想來嘗試一下 首先移除掉之前裝的套件libvpx sudo apt-get remove libvpx-dev

解決升級ffmpeg版本後make失敗的問題

  問題:  升級ffmpeg版本後make失敗的問題 make: *** No rule to make target `libavfilter/all_channel_layouts.inc', needed by `libavfilter/formats.o'.  Stop. make: *** Waiting for unfinished jobs.... CC libavfilter/fifo.o

解決ffmpeg無法正常重複播放的問題

解決ffmpeg無法正常重複播放的問題 在-i選項(input)前面增加-stream_loop 重複次數 記住!這個選項寫在後面等於沒寫 預設是只播一次 -stream_loop 0 重複一次 -stream_loop 1 無限重播 -stream_loop -1