【轉載】【重要】請高手指點ffmpeg和mencoder的一些簡單問題

來源:互聯網
上載者:User

這兒牛人多啊,來問一下
我在使用ffmpeg和mencoder那些命令列編碼程式時,遇到一些問題
為什麼ffmpeg用-ss和-t參數來截視頻片段,然後封裝為mp4格式,出現音畫不同步的問題? 但如果封裝成mkv,則不會不同步,但mkv的視頻在最開始的第1幀是靜止1段時間然後等大概音頻到達的時候就開始同步播放了,大概等待0點幾秒左右 因為現在我需要封裝為mp4,所以有沒有可以讓mp4可以有mkv類似的處理方式呢?可以給出這樣做法的詳細參數嗎? 還有ffmpeg的x264輸入參數我想用x264opts輸入一個字串,裡面有preset參數,另外還設定了其他的參數,但ffmpeg出現錯誤,總是說"maybe incorrect parameters",難道preset是不正確的參數嗎? 但我用mencoder的x264encopts卻可以輸入preset作為欄位
還有mencoder也有些問題,我感覺mencoder編碼出來的視頻呈現出來的效果不是太符合我的眼睛,感覺有點生硬,ffmpeg出來的就不錯,比較柔和 或許我習慣用的播放器mpc-hc裡面的核心是ffdshow,與ffmpeg有比較多的關係吧,那麼有濾鏡可以做到ffmpeg輸出的類似效果嗎? 而且mencoder還有些bug,有些視頻-ovc copy後出來的,居然有一些馬賽克,一開始以為是幀速問題,但我調整過幀速,也沒有任何改變, 總是在某個時間處出現一點馬賽克,不是太多,但我用ffmpeg來轉,同樣時間段沒有任何問題,這是為什麼呢?
希望大家幫忙,謝謝了...

  頂

0

   
  • 2011-09-30 16:46
  • 回複
 

  • 嶺上開花

  • zj262144
  • 98位粉絲
  • 四年級7
  •  

2樓

為什麼ffmpeg用-ss和-t參數來截視頻片段,然後封裝為mp4格式,出現音畫不同步的問題? ----------------------------------------------- 因為ffmpeg是分別截取video和audio的,video因為主要畫面格的緣故精確度受限較大,audio則能切割得精確得多,所以造成了這樣的情況
可以試下用mp4box切割

  • 2011-09-30 16:52
  • 回複
 

  • Ash_Mood
  • 2位粉絲
  • 幼兒園2
  •  

3樓

其實我想說的是,不用其他工具,只用ffmpeg能做嗎?ffmpeg很多參數的吧,而且這問題只在mp4封裝上出現,mkv上就第1幀是靜止1段時間等待音頻而後就同步的,我想讓mp4也能像mkv那樣的做法,參數複雜點也行,最重要的是我只能用命令列的ffmpeg

  • 2011-09-30 17:44
  • 回複
 

  • roo_zhou
  • 五年級8
  •  

4樓

樓上說的辦法很好,我以前也考慮過,這樣不用讓播放器或容器去支援什麼audio delay, video delay之類的東西。不過這個需要改ffmpeg代碼,官方應該不會採用這種東西,所以只能自己寫自己編譯了。

  • 2011-09-30 23:53
  • 回複
 

  • Ash_Mood
  • 2位粉絲
  • 幼兒園2
  •  

5樓

其實不需改動ffmpeg的代碼吧 經過我的不斷尋找,終於發現了一個參數可以做到音畫的同步,就是類似於mkv封裝的做法,開始時暫停一會兒等待主要畫面格再音畫同步播放的做法,當然這不太完美,但總算是做到了,就是-copyinkf參數(copy initial non-keyframes),就加上這個參數就可以了,很簡單
其實我就是想找個參數而已,什麼自己寫代碼編譯的,呵呵,我不太懂,官方的東西其實已經考慮到了,但往往ffmpeg參數太繁雜,沒人會仔細地看

  • 2011-10-01 23:57
  • 回複
 

  • 嶺上開花

  • zj262144
  • 98位粉絲
  • 四年級7
  •  

6樓

引用 Ash_Mood (5樓)

其實不需改動ffmpeg的代碼吧 經過我的不斷尋找,終於發現了一個參數可以做到音畫的同步,就是類似於mkv封裝的做法,開始時暫停一會兒等待主要畫面格再音畫同步播放的做法,當然這不太完美,但總算是做到了,就是-copyinkf參數(copy initial non-keyframes),就加上這個參數就可以了,很簡單 其...

這樣會有其他更嚴重的問題的
你可以專門壓個只有初始幀是IDR的視頻,再用這個參數截取中間部分,再播放,就知道我說的是什麼意思了

  • 2011-10-02 09:29
  • 回複
 

  • Ash_Mood
  • 2位粉絲
  • 幼兒園2
  •  

7樓

引用 zj262144 (6樓)

這樣會有其他更嚴重的問題的 你可以專門壓個只有初始幀是IDR的視頻,再用這個參數截取中間部分,再播放,就知道我說的是什麼意思了

這會出現什麼問題呢?難道會花屏嗎?我不知道怎樣可以壓個只有初始幀是IDR的視頻,我真的不熟悉這些視頻技術的名詞。。。 不過這參數倒也是有一點問題的,當-ss參數放在-i輸入檔案之前(因為這樣不用等待視頻尋道),-copyinkf就失效了,一樣不同步

  • 2011-10-02 16:37
  • 回複
 

  • 嶺上開花

  • zj262144
  • 98位粉絲
  • 四年級7
  •  

8樓

ffmpeg -i "%~1" -vcodec libx264 -x264opts keyint=infinite:scenecut=0 -acodec copy -y "%~dpn1_.mp4"
這樣視頻就只有第一幀是IDR了
當然我這隻是舉了個極端的例子,用於說明截取時使用copyinkf可能引入的問題

  • 2011-10-02 17:56
  • 回複
 

  • Ash_Mood
  • 2位粉絲
  • 幼兒園2
  •  

9樓

引用 zj262144 (8樓)

ffmpeg -i "%~1" -vcodec libx264 -x264opts keyint=infinite:scenecut=0 -acodec copy -y "%~dpn1_.mp4" 這樣視頻就只有第一幀是IDR了 當然我這隻是舉了個極端的例子,用於說明截取時使用copyinkf可能引入的問題

我現在壓制了一個第一幀是IDR的視頻來測試,但截取再二次轉換過後播放沒發現有什麼問題,截取的時間和秒數都很正確,也沒什麼花屏或不同步之類的問題 現在我知道你說的意思了(不知道是否準確),這個IDR幀後面的幀都是要依據其參考的,這種視頻要拖動時間是很慢的,因為要從IDR幀到指定時間的所有幀都要重新處理,我覺得你說的問題就是第二次編碼後加copyinkf後即使加ss參數也會總是從IDR幀開始播放,而不是從指定時間開始播放... 但我測試後,這樣的問題並沒有發生,除了編碼時慢一些外(因為要重新處理IDR幀到指定時間的幀),其他都很好,沒任何問題

  • 2011-10-03 18:43
  • 回複
 

  • 嶺上開花

  • zj262144
  • 98位粉絲
  • 四年級7
  •  

10樓

引用 Ash_Mood (9樓)

我現在壓制了一個第一幀是IDR的視頻來測試,但截取再二次轉換過後播放沒發現有什麼問題,截取的時間和秒數都很正確,也沒什麼花屏或不同步之類的問題 現在我知道你說的意思了(不知道是否準確),這個IDR幀後面的幀都是要依據其參考的,這種視頻要拖動時間是很慢的,因為要從IDR幀到指定時間...

參數意思只是先這樣編碼出那樣一個視頻而已
我的意思是這之後再截取
---- 重編碼同時截取當然沒問題,但是速度相當慢,並且還損失了品質,這樣就損失了純截取的意義了……當然你如果沒問題的話就無所謂

  • 2011-10-03 18:57
  • 回複
 

  • Ash_Mood
  • 2位粉絲
  • 幼兒園2
  •  

11樓

哦,原來是這個意思,原來我是重編碼了,現在我在那個視頻上直接截取了,沒重編碼,發現視頻黑屏了,音頻則正常截取,不過我的大多數需求是二次轉換而不是直接截取,這還能接受,不過這類視頻確實很極端,應該很少見吧 那我想知道,如果在不重編碼的情況下,按4樓的說法,就算改動ffmpeg的代碼,也不可能對此類視頻截取到的吧,就算是補幀,也會傷害視頻的品質嗎?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.