我正在嘗試使用 avconv 降低一些原始視頻的分辨率。輸出必須保持相同的原始視訊格式,因為在稍後階段我需要將其加載到另一個程式中,該程式非常挑剔並且不會接受任何其他類型的輸入。現在,我嘗試做
avconv -i myvideo.avi -s 88x72 -vcodec rawvideo myvideo-small.avi
這樣可以產生縮小的視頻,但格式似乎不完全相同。 avconv 表示讀取的輸入是
Stream #0.0: Video: rawvideo, pal8, 352x288, 30 fps, 30 tbr, 30 tbn
而產生的輸出是
Stream #0.0: Video: rawvideo, yuv420p, 88x72, q=2-31, 200 kb/s, 30 tbn, 30 tbc
儘管兩者都是 rawvideo,輸入是“pal8”,輸出是“yuv420p”。我不知道這兩種格式之間的差異,但我需要輸出保留與輸入完全相同的格式。如何才能做到這一點?
答案1
在我看來,avconv
目前僅支援 pal8 輸入。要檢查您是否可以運行:
$ avconv -pix_fmts |grep pal8
我的輸出是:
avconv version v12_dev0-498-g2e09359, Copyright (c) 2000-2014 the Libav developers
built on Dec 5 2014 09:32:02 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
I..P. pal8 1 8
第一部分的圖例是:
I.... = Supported Input format for conversion
.O... = Supported Output format for conversion
..H.. = Hardware accelerated format
...P. = Paletted format
....B = Bitstream format
所以pal8可以讀,但不能寫。這意味著您無法主動將任何流編碼為這種格式,如果您打算更改幀的大小,則需要執行此操作。
如果您發現 pal8 之外您的「挑剔」軟體可接受的另一種像素格式並且可以使用 進行編碼avconv
,您可以使用以下選項選擇該特定格式-pix_fmt
:
avconv -i in.avi -s 88x72 -pix_fmt FORMAT -c:v rawvideo out.avi