ffmpeg 怎麼轉都有橫紋 + 參數使用心得分享

看了自己 NAS 內的每天容量報告一個多月,幾個超大檔案越看越礙眼,想說動手用 FFMPEG 把早期製作的影片檔案重新壓縮,但是怎麼壓都有問題,也解決了幾個問題,跟大家分享一下幾個參數使用心得和疑問。

使用版本:ffmpeg version N-91125-g16b4f97b72 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 7.3.0 (GCC)

最後我用的指令檔:
.\ffmpeg -i "測試.avi" -max_muxing_queue_size 8192  -ss 00:20 -t 00:30 -c:v libx264 -b 24000k  -preset veryslow -minrate 24000k  -tune film -crf 5 -c:a mp3  crf15_b24m.mkv

  1. .\ffmpeg :因為是使用 powershell ,所以下指令前面加了 .\
  2. -i "測試.avi" : 指定輸入檔名,如果有中文字,需要用雙引號括起來。
  3. -max_muxing_queue_size 8192 :因為原始檔案很大的關係(24GB)或是我原始檔直接抓100m區域網路(NAS內的檔案)的速度不夠快,所以一直會出現 Too many packets buffered for output stream 0:0  ,我解決方法是把這個參數放大到 819200 才可以順利轉檔。
  4. -ss 00:20 :檔案開始轉檔的位置,另外還有更精確的方法,可以查一下手冊
  5. -t 00:30 :要剪多長的時間,一開始我一直搞錯,以為這兩個參數是剪輯 20 ~ 30 秒 總共十秒,後來注意看才發現是從20秒處開始剪下30秒長度的影片。
  6. -c:v libx264 : -c:v 是簡寫,libx264 是指定轉碼格式。 (mp4 常用 libx264)
  7. -b 24000k  :bitrate 24M ,簡單說此數值越高,畫質越好,可以參考原始檔的 bitrate。 更正一下在我用的版本中會出現 Please use -b:a or -b:v, -b is ambiguous  要我指定是 audio 或是 video
  8. -preset veryslow : 轉碼速度越慢,畫質越好,從 ultrafast 到 placebo,但是 placebo 效益太低。
  9. -minrate 24000k  :最低畫質,相對應還有 -maxrate
  10. -tune film :影片最佳化,如果是照片合籍,可以用 stillimage
  11. -crf 5 :壓縮比從 1 到 51 , 18 算是肉眼看不出的程度,因為我一直轉出有橫紋,就索性調到 5
  12. -c:a mp3 :音效指定轉檔格式,也可用 copy 就不轉音訊。
  13. crf15_b24m.mkv:輸出檔名, 副檔名部份可以讓 ffmpeg 自動判斷要轉哪種格式。

原始檔和轉檔後的 mediainfo
ffmpeg 怎麼轉都有橫紋 + 參數使用心得分享ffmpeg 怎麼轉都有橫紋 + 參數使用心得分享ffmpeg 怎麼轉都有橫紋 + 參數使用心得分享
可以明顯看出橫紋
ffmpeg 怎麼轉都有橫紋 + 參數使用心得分享

還未解決的問題1是只要轉 mp4 不論是 -c:a mp3 或是 -c:a copy  都不會有聲音!只有轉 mkv 聲音會出現。

問題2 是那個橫紋問題,雖然說為了節省空間,將早期的影片檔案縮小,但是畫質希望盡可能不影響,但那個真的差很多....
(此問題已經解決,使用 -deinterlace ,感謝 @xnqxxnqx )
沒貼過組圖,好像不太能轉,這邊再貼一下給各位參考。







看起來是反交錯沒開 找一下指令吧
是這個參數沒錯! 感謝!

但是轉檔沒聲音的問題 還在克服中,有觀察到 log 中有提到

Stream mapping:
Stream #0:1 -> #0:0 (rpza (native) -> h264 (libx264))
Stream #0:0 -> #0:1 (pcm_s16le (native) -> mp3 (libmp3lame))


不知道是不是因為這個?
我之前轉都是用vidcoder 這類有包裝過的軟體

先剪一小段影片 參數設一設 轉出來沒什麼問題 再去轉其他的

但我不確定 能否支援NAS直接轉


chrixtal wrote:看了自己 NAS ...(恕刪)

關於反交錯,可參考這篇文章
[FFmpeg] 交錯/循序掃描
樓主用 -b 24000k 似乎不切實際(-b 應改為 -b:v)
一般用 5000k左右即已足夠,最多10000K,
再大只是虛胖而已,我想你的"測試.avi" 本身的BitRate 應該也不會超過這個範圍
當使用 -crf 時, -b:v 這個設定是不必要的, FFmpeg 會根據你的 crf 設定值動態的給BitRate
同時 crf 設到5也沒有意義, 15~18之間就已到頂
-minrate 同樣沒有必要
有橫紋的問題要用反交錯的方式解決
還有 -ss 0:20 最好放在最前面, 即 -i 之前,才不會很久才到達 0:20的地方
這樣去做看是否可解決沒有聲音的問題
若再不行,請上傳你的"測試.avi"讓我試試
fct3512 wrote:
關於反交錯,可參考...(恕刪)

fct3512 wrote:
關於反交錯,可參考...(恕刪)


感謝大大的 -deinterlace
關於 crf 的部份 我這邊有的影片測是真的有差,我可以接受的畫質大概 12 ,如果降到 15 就可以明顯看出畫質劣化的樣子。

另外放上 測試的檔案, 我把它切成一小段給您測試,我用了 c:v copy c:a copy,但是很奇怪,切出來的檔案也沒有聲音,用 mediainfo 打開是有看到 音效軌。

另外也謝謝大大提示參數的應用與交互關係,感謝!

測試檔案放在這:
測試檔案
chrixtal wrote:感謝大大的 -deinterlace...(恕刪)

這是我的Mediainfo看到的結果,並沒有看到任何Audio Stream


fct3512 wrote:
這是我的Mediainfo...(恕刪)


我再轉了一次也是沒有!

轉檔的資訊在這邊,而且每次轉檔 不知道為什麼 在切割的時候,都要等很久,要強迫按 Ctrl+C 才會結束

PS D:\ffmpeg> .\ffmpeg -ss 03:20 -t 00:00:10 -i "Y:\Temp_New\Produce.mov" -c:v copy -c:a copy Produce_2.mov
ffmpeg version N-91125-g16b4f97b72 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 7.3.0 (GCC)
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth
libavutil 56. 18.102 / 56. 18.102
libavcodec 58. 19.102 / 58. 19.102
libavformat 58. 15.100 / 58. 15.100
libavdevice 58. 4.100 / 58. 4.100
libavfilter 7. 24.100 / 7. 24.100
libswscale 5. 2.100 / 5. 2.100
libswresample 3. 2.100 / 3. 2.100
libpostproc 55. 2.100 / 55. 2.100
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Y:\Temp_New\Produce.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2010-04-23T10:00:44.000000Z
Duration: 00:41:45.03, start: 0.000000, bitrate: 30423 kb/s
Stream #0:0(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, stereo, s16, 1536 kb/s (default)
Metadata:
creation_time : 2010-04-23T10:00:44.000000Z
handler_name : Apple 替身資料處理器
Stream #0:1(eng): Video: rpza (rpza / 0x617A7072), rgb555le, 640x360, 28881 kb/s, 30 fps, 30 tbr, 256 tbn, 256 tbc (default)
Metadata:
creation_time : 2010-04-23T10:00:44.000000Z
handler_name : Apple 替身資料處理器
encoder : 繕簪?
Output #0, mov, to 'Produce_2.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
encoder : Lavf58.15.100
Stream #0:0(eng): Video: rpza (rpza / 0x617A7072), rgb555le, 640x360, q=2-31, 28881 kb/s, 30 fps, 30 tbr, 16384 tbn, 256 tbc (default)
Metadata:
creation_time : 2010-04-23T10:00:44.000000Z
handler_name : Apple 替身資料處理器
encoder : 繕簪?
Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, stereo, s16, 1536 kb/s (default)
Metadata:
creation_time : 2010-04-23T10:00:44.000000Z
handler_name : Apple 替身資料處理器
Stream mapping:
Stream #0:1 -> #0:0 (copy)
Stream #0:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 300 fps=0.4 q=-1.0 Lsize= 35771kB time=00:00:09.96 bitrate=29407.1kbits/s speed=0.0128x
video:35767kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.011992%
Exiting normally, received signal 2.
chrixtal wrote:我再轉了一次也是沒...(恕刪)

你把 ".\ffmpeg -ss 03:20 -t 00:00:10 -i "Y:\Temp_New\Produce.mov" -c:v copy -c:a copy Produce_2.mov"
中的 Produce_2.mov 改為 Produce_2.mkv 試試
關閉廣告
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!