ffmpeg 視頻 添加 時間戳 手動 編譯 简体版
原文   原文鏈接

FFMPEG給視頻加時間戳水印

項目中須要給視頻添加時間戳,理所固然最好用的辦法是ffmpeg。在找到正確的作法前,還被網上的答案timecode給水了一下(水的不輕,在這裏轉了2天),大概是這樣寫的:java

ffmpeg -i wildlife.wmv -vf "drawtext=fontfile=arial.ttf: text='fuck': timecode='09\:57\:00\:00': r=25: \x=(w-tw)/1.5: y=h-(20*lh):fontcolor=white: box=1: boxcolor=0x00000000@1" -an -y out.wmvubuntu

 

轉了一大圈,最後找到了答案, 在Ubuntu14.04LTS下面的使用過程:服務器

#安裝官方庫提供的版本,2.X的版本
sudo apt-get install ffmpeg

#添加時間戳的命令, 這串命令在實際應用中是用java生成的,而後使用process執行這個命令
ffmpeg -i "/input/input-video.mp4" -vf "drawtext=expansion=strftime:  basetime=$(date +%s -d '2016-12-19 16:27:50')000000 :text='%Y-%m-%d %H\\:%M\\:%S':fontsize=11:fontcolor=white:box=1:x=10:y=10:boxcolor=black@0.5:" -strict -2 -y "/output/output-video.mp4"

其中:ide

  -i: 指定輸入文件,這裏使用的視頻編碼是H264, 音頻編碼是AAC字體

  -vf: 視頻濾鏡,使用了drawtext濾鏡,basetime是視頻時間戳的初始值,text是顯示時間的格式,fontsize後面一串是關於水印的顏色、字體、背景等設置ui

  -strict -2:AAC的解碼在2.x版本是試驗性功能,須要加這個參數編碼

  -y: 覆蓋已經存在的輸出文件spa

      最後一段是輸出文件.net

問題來了:源視頻的參數變化卡死了FFMPEG進程

這樣相安無事的使用了一段時間,直到有一天發現服務器上的FFMPEG卡在那不動了,CPU佔用率90%多。問了一下,錄製視頻的客戶端確實改了一些東西,主要是視頻碼率和畫面大小,音頻參數沒有改。先看看是什麼致使卡死了,經過調整一些參數的方法,定位到了是音頻致使卡死的(音頻參數沒動過,因此無法解釋清楚爲何,只能猜是視頻的變化影響了音頻,反正MP4容器裏面的東西一竅不通)。code

ffmpeg -i "/input/input-video.mp4" -vf "drawtext=expansion=strftime:  basetime=$(date +%s -d '2016-12-19 16:27:50')000000 :text='%Y-%m-%d %H\\:%M\\:%S':fontsize=11:fontcolor=white:box=1:x=10:y=10:boxcolor=black@0.5:"-an -y "/output/output-video.mp4"

和原始命令不一樣的地方就是-strict -2換成了-an, -an表示不處理音頻。這個時候視頻又能正確的被處理了(只是沒有聲音)。問題是找到了,找來找去也沒找到解決辦法。

沒招了,升級版本試試

先去Ubuntu16.04的系統上試了試,使用系統倉庫的版本是2.8,也有一樣的問題。

去官網看了看,官網都3.2了。果斷去找3.2的版本,在官網找了Ubuntu14的PPA版本,按照他們的步驟裝好了一試,報錯:大概意思就是drawtext過濾器不存在,刪了一些參數,發現aac的解碼器也沒有。大體的意思就是有一些依賴庫沒有自動裝。看了看沒找到怎麼裝,也不知道具體依賴庫有哪些,放棄。

沒辦法了,只能試試手動編譯了

#安裝文檔的步驟刪了一些不要的庫
sudo apt-get update
sudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev \
  libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \
  libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev

#要h264的庫
sudo apt-get install libx264-dev

#要aac的庫
sudo apt-get install libfdk-aac-dev

#configure,編譯目的路徑也懶得改了,最好仍是改了,否則到時候ffmpeg安裝到了~/bin目錄下
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
  --prefix="$HOME/ffmpeg_build" \
  --pkg-config-flags="--static" \
  --extra-cflags="-I$HOME/ffmpeg_build/include" \
  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  --bindir="$HOME/bin" \
  --enable-gpl \
  --enable-libass \
  --enable-libfdk-aac \
  --enable-libfreetype \
  --enable-libtheora \
  --enable-libvorbis \
  --enable-libx264 \
  --enable-nonfree

PATH="$HOME/bin:$PATH" make

make install

make distclean

#更新一下profile,ffmpeg加入到了PATH
source ~/.profile

從新運行了一下加水印的命令,ffmpeg又能正常工做了。

完整編譯過程:http://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu#CompilationInstallation

相關文章
相關標籤/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。
本站公眾號
   歡迎關注本站公眾號,獲取更多信息