Stories

Detail Return Return

FFmpeg開發筆記(七十五)使用qrencode和quirc對視頻畫面讀寫二維碼 - Stories Detail

上一篇文章《Windows給FFmpeg集成二維碼圖像的編解碼器》介紹了給FFmpeg集成二維碼的編解碼器qrencode和quirc,接下來講解如何利用編碼器qrencode向視頻畫面添加二維碼,以及如何利用解碼器quirc從視頻畫面讀取二維碼。

確保Windows系統已經按照《FFmpeg開發實戰:從零基礎到短視頻上線》第一章“1.3  Windows系統安裝FFmpeg”的説明安裝配置了MSYS,再打開MSYS的MINGW64控制枱,輸入以下帶qrencode濾鏡的ffmpeg命令在seas.mp4的左上角添加二維碼,二維碼的文本內容由序號、時間戳和當前時間組成。

ffmpeg -i seas.mp4 -vf qrencode=x=40:y=40:qrcode_width=main_w/6:text="%{n} %{pts} %{gmtime}" ff_qrencode.mp4

接着運行下面的ffplay命令播放添加了二維碼的新視頻:

ffplay -i ff_qrencode.mp4

新視頻的播放界面如下圖所示,可見該視頻的左上方果然添加了二維碼圖像。

運行以下幫助命令,可查看qrencode濾鏡的詳細用法。

ffmpeg -h filter=qrencode

根據幫助命令的返回結果,可知qrencode濾鏡主要有下列幾個常用參數:
x:二維碼圖像左上角的橫座標。
y:二維碼圖像左上角的縱座標。
qrcode_width:二維碼圖像的寬度,可簡寫為q。
padded_qrcode_width:二維碼圖像的留白寬度,可簡寫為Q。
level:二維碼圖像的容錯等級,可簡寫為l。為0表示低容錯,為1表示中等容錯,為2表示默認容錯,為3表示高度容錯。
foreground_color:二維碼圖像的前景顏色,可簡寫為fc。
background_color:二維碼圖像的背景顏色,可簡寫為bc。
text:二維碼的文本內容。
雖然視頻畫面加上了二維碼,可是怎麼知道這些二維碼是否準確呢?這時就要通過解碼器quirc從視頻畫面讀取二維碼了。
繼續執行以下帶quirc濾鏡的ffmpeg命令,表示要查看目標視頻裏的二維碼信息:

ffmpeg -i ff_qrencode.mp4 -vf quirc -f null -

以上命令的執行結果如下:

……
Found QR code at position 40,40 - 40,119 with payload: 193 7.720000 2025-06-03 03:33:46
Found QR code at position 40,40 - 40,119 with payload: 194 7.760000 2025-06-03 03:33:46
Found QR code at position 40,40 - 40,119 with payload: 195 7.800000 2025-06-03 03:33:46
Found QR code at position 40,40 - 40,119 with payload: 196 7.840000 2025-06-03 03:33:46

從quirc濾鏡的命令結果可見,解析出來的二維碼內容形如“193 7.720000 2025-06-03 03:33:46”這樣,説明正確讀到了之前添加的二維碼時間戳內容。

更多詳細的FFmpeg開發知識參見《FFmpeg開發實戰:從零基礎到短視頻上線》一書。

user avatar waluna Avatar qiyuxuanangdelvdou Avatar pipiimmortal Avatar
Favorites 3 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.