2017-01-05 56 views
0

在今年夏天,我一直在編寫一個腳本,它將一個x264視頻/ mp3流分解成不同的流,以便通過MSE-DASH工作。 (主要依據webmproject.org website上的說明)這些相同的腳本已停止工作,將6GB視頻轉換爲幾個25 Gb視頻。我跟上了ffmpeg的更新,所以我不知道它何時停止工作,但我猜測這是由於他們的DASH Webm實現更新的方式。爲什麼一個ffmpeg webm破折號碼流比其他的大得多?

我發現新方法效果更好,但仍然有一個流的主要問題。我希望有人能夠解釋這種編碼是如何工作的,以便我能夠理解其根本原因。

#!/bin/bash 
COMMON_OPTS="-map 0:0 -an -threads 11 -cpu-used 4 -cmp chroma" 
WEBM_OPTS="-f webm -c:v vp9 -keyint_min 50 -g 50 -dash 1" 

ffmpeg -i $1 -vn -acodec libvorbis -ab 128k audio.webm & 
ffmpeg -i $1 $COMMON_OPTS $WEBM_OPTS -b:v 500k -vf scale=1280:720 -y vid-500k.webm & 
ffmpeg -i $1 $COMMON_OPTS $WEBM_OPTS -b:v 700k -vf scale=1280:720 -y vid-700k.webm & 
ffmpeg -i $1 $COMMON_OPTS $WEBM_OPTS -b:v 1000k -vf scale=1280:720 -y vid-1000k.webm & 
ffmpeg -i $1 $COMMON_OPTS $WEBM_OPTS -b:v 1500k -vf scale=1280:720 -y vid-1500k.webm 

轉碼還沒有完成,但你可以看到,這是領導:

-rw-r--r-- 1 user staff 87M Jan 4 23:27 audio.webm 
-rw-r--r-- 1 user staff 27M Jan 4 23:42 vid-1000k.webm 
-rw-r--r-- 1 user staff 285M Jan 4 23:42 vid-1500k.webm 
-rw-r--r-- 1 user staff 15M Jan 4 23:42 vid-500k.webm 
-rw-r--r-- 1 user staff 20M Jan 4 23:42 vid-700k.webm 

的1500K變種是不成比例地高於其他流較大。

另一個問題是,當我使用較短的視頻,可以說八或九分鐘,上述配置按預期運行,一切都很完美。我不知道這個限制在哪裏,因爲每個測試都花費了大量的處理能力和時間,但是如果它不到十分鐘,它就會工作,如果超過一個小時,它會產生大量文件。

回答

1

如果您希望將視頻比特率限制爲某個值,僅僅使用-b:v是不夠的。根據來源(高移動,場景複雜度),實際比特率會更高。您也需要指定-maxrate-bufsize

即,得到一個可變比特率(VBR)的視頻大約1500K約束 - 高峯期可以更高取決於VBV的大小 - 你可以使用:

-b:v 1500k -maxrate 1500k -bufsize 1500k 

對於恆定比特率(CBR)與正在取得的最好結果一個單幀VBV。 25fps示例(1500/25 = 60):

-b:v 1500k -minrate 1500k -maxrate 1500k -bufsize 60k 
+0

非常感謝。我知道這是我第二次開始工作,但我想確保視頻不是畸形的。我提到劇本停止了工作,我還應該提到的是他們停止了他們以前工作過的視頻。你知道什麼改變了ffmpeg,現在需要更多的參數字符串精度? – ranvel

+0

@renvel是的,奇怪的是一個變種變得如此之高。雖然我不知道發生了什麼變化...... – aergistal