引言
說一個不太常用的需求,就是你有沒有想過,把電腦上珍藏多年的PDF電子書,轉換成視頻文件,讓大家學習。
為什麼要視頻,電子書不香嗎?不香!因為這是短視頻最好的時代,你不做成短視頻,沒有人願意冷靜而枯燥地閱讀。
今天分享的知識,就是如何快速地從pdf文檔,制作為mp4短視頻。搬好小闆凳,準備開講了哈!
學習時間
有一種快速方便的方法可以将PDF轉換為一個或多個圖像。命令行工具ImageMagick可以做到這一點。
你可以将整個PDF文檔轉換為單個圖像,或者也可以選擇将頁面輸出為一系列枚舉圖像文件。
使用的時候,牆裂建議指定密度 -density 、抗鋸齒 -antialias 和質量 -quality 選項,提高目标文件的轉換質量。
在下面的示例中,我們使用 -density 150、-quality 100和 -antialias 選項。ImageMagick 非常智能,它會根據輸出文件擴展名自動匹配輸出格式。
1 - 轉換整個 PDF 文件為單張 PNG 圖片
convert -density 150 -antialias "input_file_name.pdf" -append -resize 1024x -quality 100 "output_file_name.png"
這裡的關鍵參數是 -append,PDF轉換為單個圖像或一系列圖像時,效果會有所不同。
2 - 轉換整個 PDF 文件為一系列圖片
convert -density 150 -antialias "input_file_name.pdf" -resize 1024x -quality 100 "output_file_name.png"
此命令的結果是名為 out_file_name-0.png、out_file_name-1.png、out_file_name-0.png-2.png……一系列圖像文件。
如果頁數較多,那麼使用多個數字的枚舉文件名會很方便,這樣便于排序。
你也可以用格式化的數字命名輸出文件,如使用 d,得到的圖片文件名數字部分都會是3位,不足的前置補零。
convert -density 150 -antialias "input_file_name.pdf" -resize 1024x -quality 100 "output_file_name-d.png"
3 - 僅轉換指定頁面
如果隻是需要将某頁轉換輸出為圖片,這樣寫:
convert "input_file_name.pdf[1]" "output_file_name.png"
舉一反三,如果是一些頁碼範圍,就這麼些:
convert "input_file_name.pdf[i-j]" "output_file_name.png"
這些選項很人性化,有沒有?
圖片到視頻
有了圖片,組裝成視頻就不是問題了。我們之前推出過一系列的文章,介紹了音視頻處理領域的不二之選——ffmpeg。
單張圖片生成一段視頻,也是可以的,隻是沒有什麼動效,體驗很不好。我們加入生成的是多張序列化圖片,比如上一節中所說的 output_file_name-=.png 那一系列圖片,将其按照順序合并入短視頻,執行下面這行指令:
ffmpeg -r 1/5 -i output_file_name-d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
說一說參數的含義:
- -r 1/5 表明對每張圖片展示5秒鐘;
- -i output_file_name-d.png 指定一系列用作輸入的圖片;
- -c:v libx264 表明輸出視頻使用 h264 編碼格式;
- -r 30 表明輸出視頻幀率 30 fps;
- -pix_fmt yuv420p 使用 YUV pexel 格式;
是不是每一項的設置都那麼有理有據?:-)
寫在最後
對于特殊的要求,我們将需求拆解為細分的小步驟。通過每個小步驟的處理,将整個流程串聯起來就完成了整個工作,這就是軟件開發的流程。
實現的方式有很多。但是能夠在特定的場合選中選擇恰當的工具,這很重要。也對我們如何高效的工作提出了更高的要求。
Happy coding :_)
我是 @程序員小助手 ,持續分享編程知識,歡迎關注。
,