[英]How can I reencode a video to match another's codec exactly?
當我休假時,我通常使用我們的攝像機錄制視頻。 由於它們都是相同的格式,我可以使用 ffmpeg 將它們連接成一個大而流暢的視頻,而無需重新編碼。
但是,有時我會使用手機或其他相機錄制視頻(如果攝像機的空間/電池耗盡或被留在酒店)。
我想確定我的攝像機使用的編解碼器、幀率等,並使用這些參數將手機視頻轉換為相同的格式。 這樣,我將能夠連接所有視頻而無需重新編碼攝像機視頻。
使用 ffprobe,我發現我的攝像機具有以下編碼:
Input #0, mpegts, from 'camcorderfile.MTS':
Duration: 00:00:09.54, start: 1.936367, bitrate: 24761 kb/s
Program 1
Stream #0:0[0x1011]: Video: h264 (High) (HDPR / 0x52504448), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 59.94 fps, 59.94 tbr, 90k tbn, 119.88 tbc
Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 256 kb/s
Stream #0:2[0x1200]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
電話(iPhone 5s)編碼是:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'mov.MOV':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2017-01-02T03:04:05.000000Z
com.apple.quicktime.location.ISO6709: +12.3456-789.0123+456.789/
com.apple.quicktime.make: Apple
com.apple.quicktime.model: iPhone 5s
com.apple.quicktime.software: 10.2.1
com.apple.quicktime.creationdate: 2017-01-02T03:04:05-0700
Duration: 00:00:14.38, start: 0.000000, bitrate: 11940 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080, 11865 kb/s, 29.98 fps, 29.97 tbr, 600 tbn, 1200 tbc (default)
Metadata:
creation_time : 2017-01-02T03:04:05.000000Z
handler_name : Core Media Data Handler
encoder : H.264
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 63 kb/s (default)
Metadata:
creation_time : 2017-01-02T03:04:05.000000Z
handler_name : Core Media Data Handler
Stream #0:2(und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
Metadata:
creation_time : 2017-01-02T03:04:05.000000Z
handler_name : Core Media Data Handler
Stream #0:3(und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
Metadata:
creation_time : 2017-01-02T03:04:05.000000Z
handler_name : Core Media Data Handler
我假設 ffmpeg 會自動采用任何可接受的視頻格式,而且我只需要弄清楚輸出設置。 我想我需要使用-s 1920x1080
和-pix_fmt yuv420p
作為輸出,但是為了使手機視頻與攝像機視頻具有相同的編碼,我還需要哪些其他標志?
我可以得到一些關於如何將 ffprobe 輸出轉換為我需要提供給 ffmpeg 的標志的指示嗎?
編輯:為兩個媒體文件添加了整個 Input #0。
Ffmpeg 有一個與concat
一起使用的過濾器,看起來像這樣(從https://trac.ffmpeg.org/wiki/Concatenate復制):
ffmpeg -i input1.mp4 -i input2.webm -i input3.mov \
-filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mkv
鏈接的網站解釋了它是如何工作的。 使用此功能,您不必擔心比特率。 程序會自動調整它。 舊版本的 ffmpeg 在匹配比特率方面有一些問題,但我最近用它來連接視頻和動畫,效果很好。 不確定它是否適用於幀速率。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.