題:
簡單的程序可以在Windows,Linux或Android上剪切視頻而不會降低質量
Sopalajo de Arrierez
2015-10-16 03:07:53 UTC
view on stackexchange narkive permalink

我需要一個程序來剪切視頻(從中提取子視頻),但是我絕對需要與原始視頻沒有任何質量損失

只要我不需要執行任何其他操作(如編輯,調整大小,旋轉,添加字幕,著色等),我便希望此程序易於管理。理想的情況是設置開始捕獲,結束捕獲以及 split 的按鈕。

我已經測試了 Allok視頻分配器,但是我確定視頻質量會有所下降(雖然不多,但確實存在)(音頻保持正常,或者看起來如此) ,即使我將程序設置為最高質量也是如此。

首選開源方法。
命令行方法被接受。
Windows 請使用Linux 平台。我沒有Mac。只要保持主要功能(無質量損失),在 Android 上執行此操作就沒問題。

在SU上查看此問題:http://superuser.com/questions/138331/using-ffmpeg-to-cut-up-video ...可能有點過時了,但是您也許可以回答自己的問題有關此信息的問題:-)
實際上,這甚至更適用於您的問題:http://superuser.com/questions/377343/cut-part-from-video-file-from-start-position-to-end-position-with-ffmpeg
四 答案:
#1
+19
Steve Barnes
2015-10-16 11:16:19 UTC
view on stackexchange narkive permalink

我建議使用命令行和 ffmpeg,例如:

ffmpeg -ss start_time -i input_file .ext -t 持續時間 -vcodec複製-acodec複製 輸出文件 .ext

  • .ext 必須是受支持的視頻類型,並且在兩種情況下都必須相同。請注意,名稱和.ext之間不應有空格。只有在上方才能使用粗體和斜體
  • -ss 應該在輸入文件之前,這樣可以選擇開始時間之前的最後一個關鍵幀必須 -t
  • 之前,其中 start_time duration 都可以是幾秒鐘,分鐘:秒,小時:分鐘:秒和分鐘&秒以任何冒號格式限制為2位數字,並且任何秒都可以附加.milliseconds。
  • -vcodec複製-acodec複製通知ffmpeg您想要完全相同的視頻和音頻編碼,即不降低質量。

也請注意,由於ffmpeg可以在所謂的管道中進行操作大多數選項的順序非常重要,因此,如果您的輸出文件名出現在某些選項之前,則它們將被認為是管道中下一階段的選項,因此不會影響您的輸出圖像。這樣做是為了使您可以在單個命令行上指定一個輸入文件和幾個具有不同選項的輸出文件,例如,您可以每隔5分鐘生成一個10秒的剪輯序列,以重新組合它們。

此解決方案是:

  • 免費/免費
  • 開源
  • 除非您要求,否則質量沒有變化
  • 如果需要,可以更改格式,分辨率,順序,添加靜止幀等幾乎任何內容。
  • Windows,Linux & Mac
  • 您確實需要查找拆分時間並手動記下它們,但這不應該太麻煩

有有許多可用於ffmpeg,的GUI前端,許多程序沒有提到它們真正所做的只是提供了一個,但是為什麼要為這樣的簡單操作而煩惱。

適用於OP的示例命令:

  ffmpeg -i OriginalVideo.flv -ss 1:00 -t 3:00 -vcodec複製-acodec複製OutputFile.flv  

感謝Sopalajo de Arrierez花了一些時間進行實驗並發布了對他們有用的內容。

謝謝,@Steve,,但是當您說“ input_file和output_file都具有相同的名稱”時,您是什麼意思?這是不可能的。您是說“相同的擴展名”嗎?
@SopalajodeArrierez-確切地說,我會編輯。
從Windows 7測試了“ ffmpeg.exe -i“ PathToFile.flv” -ss 01:00“ PathToNewFile.flv” -t 01:00`,以便從.flv視頻的第一分鐘到第二分鐘提取內容。結果文件有很大的質量損失,一見鍾情。
測試添加`-vcodec copy -acodec`具有相同結果:質量下降。
終於解決了。這是執行此操作的行:`ffmpeg -i OriginalVideo.flv -ss 1:00 -t 3:00 -vcodec copy -acodec copy OutputFile.flv`。我建議您編輯答案。也許您可以提及以下示例:`.flv`用於文件格式(對於輸出文件必須相同!),從第1分鐘,0秒開始,持續時間3分鐘(180秒)開始。重要說明:必須在輸出文件之前指定參數; ffmpeg將忽略之後寫的任何內容。那是我的問題(也許您也可以詳細介紹)。
@SopalajodeArrierez-更新的答案-感謝您的反饋。
在我看來,這是最好的解決方案,只要剪切的速度可以確保您不會進行編碼。請注意,-c複製似乎是-vcodec複製-acodec複製的別名,因此可以代替使用。
語法規範中有一個錯字(兩次):文件名和`.ext`之間的空格。
使用`ffmpeg`可以很好地處理詳細信息,例如`Stream#0:1->#0:0(copy)`可以證明沒有質量變化。
另一個建議,史蒂夫:如此處https://trac.ffmpeg.org/wiki/Seeking所述,對我來說,在`-i input_file.ext`之前指定`-ss timestart`效果更好,因為它設置了(等等我理解)生成的視頻的開始,直到您在指定時間戳記之前找到的最接近關鍵幀。如果稍後指定,結果視頻的前幾秒鐘可能會有一些延遲。此處提供更多信息:http://stackoverflow.com/questions/14005110/how-to-split-a-video-using-ffmpeg-so-that-each-chunk-starts-with-a-key-frame。在`.flv`和`.mp4`文件上測試。
@SopalajodeArrierez需要輸入錯誤,以允許斜體和粗體-如果我嘗試使用`* name ***。ext **`,則SO / markdown的限制,它是帶有星號的。我認為最好有清晰度而不是某些東西可以粘貼,但仍然需要進行編輯。添加筆記。
除了音頻不同步外,它的效果非常好。這個問題有方法解決嗎?
@bytecode77我有一個同樣的問題,即“音頻不同步”,您找到解決方案了嗎?
#2
+6
ElektroStudios
2015-10-16 14:29:17 UTC
view on stackexchange narkive permalink

您要查找的是 AviDemux

AviDemux 是一款開源GUI視頻處理軟件在Linux中製造,該產品還針對Windows(x86和x64)發行,它還具有一個名為 avidemux_cli.exe 的命令行版本,該版本位於軟件包內。

它可以執行可以進行各種格式的重新轉換,並且可以執行複制/剪切/粘貼操作而無需重新轉換,這意味著在此過程中質量下降了0%,因為這只是一個remux操作。

它具有一個非常人性化的用戶界面,並且非常適合一次或在各個點上剪切/分割視頻,就像我說的那樣,除非您指定相反的選項,否則無需進行轉換。

AviDemux interface

我愛 AviDemux ,您也會愛上它。在此處下載:

http://fixounet.free.fr/avidemux/download.html

經過測試的最新v2.6.10 64位可從5分鐘的.flv視頻中提取4分鐘:結果是一個.avi文件,其中包含音頻,但根本沒有視頻。
@Sopalajo de Arrierez如果您使用的是FLV視頻,請嘗試在“輸出格式”列表中選擇** FLV Muxer **而不是** AVI Muxer **。
http://www.fosshub.com/Avidemux.html/avidemux_2.6.13_win64.exe不起作用
與@SopalajodeArrierez相同的問題。匹配的音頻/視頻編解碼器輸入和輸出。
#3
+3
Sopalajo de Arrierez
2018-03-30 06:13:07 UTC
view on stackexchange narkive permalink

我想完成其他答案,方法是在另一個線程上引用我的這種解決方案,該線程似乎可以解決音頻同步並凍結幀的開始有關 ffmpeg 的問題:

關鍵幀問題

(好奇的)解決方案僅在 -i 之前,先輸入 -ss 參數。

#4
+2
cybernard
2015-10-16 05:28:03 UTC
view on stackexchange narkive permalink

我建議Windows使用 VideoReDo。標記開始和結束並單擊剪切。完成剪切後,單擊保存並以原始格式保存。

這個工具真的可以轉換而不會造成任何損失嗎?我目前測試過的所有東西(包括ffmpeg)都會降低質量。
唯一真正的編輯方法是將其轉換為未壓縮的AVI。然後,只要保留它就不會降解。但是,除了文件大小要增加100倍外。
“正確的編輯方式?”。我不需要編輯視頻。問題僅在於削減。
讓我改一下。唯一獲得100%損失的方法是在未壓縮的AVI中減少剪切。 99.9%的壓縮技術使用下一幀中前一幀的部分數據。當您從2個幀中“切出”一個塊時,將修改編輯兩側的1個幀,並且會發生少量損失。僅單幀壓縮方法將100%未經修改。到目前為止,這些技術已不復存在。但是,未壓縮的AVI就是未壓縮的,並且每一幀都是彼此獨立的,因此在剪切時,不會發生丟失,而在未壓縮的情況下,也不會丟失。
ffmpeg有數十種設置,您可以使用正確的設置獲得結果。但是,除非切點丟失或未壓縮,否則在切點處丟失的量很少。如果將文件轉換為未壓縮的AVI並在完成後以這種方式保存,則任何視頻編輯器都可以減少100%的損失。
在切點處有些丟失是可以的。說我不希望其他人損失嗎?
關於未壓縮AVI是唯一允許100%無損剪切的格式的評論具有誤導性。 MP4當然也可以在關鍵幀處進行無損剪切。
@AlexPeters通常,等待下一個關鍵幀並不總是足夠精確。但是,如果視頻編輯器願意,他們可以自動找到先前的關鍵幀,以及所有直到實際剪切點的幀。然後,在視頻剪輯的結尾,他們可以再次快退到上一個剪輯幀和所有後續幀,直到剪輯點。可能創建新的關鍵幀,從而實現完美的裁剪。但是,我不知道他們中的任何人實際上這樣做。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...