theringe 寫:
以前我分割與合併影像用mkvmerge,但發現它分割完之後幾乎都不會留存原始影像的信息(諸如影像比特率,聲音比特率,幀率等)
我試著將一個影片先分割成數個部分,也就是利用剛才的mkvmerge
然後利用ffmpeg一個個轉檔成H.264格式
之後再使用mkvmerge將所有轉檔完成的影像合併
但會發生一種問題,在播放的時候,每到了分割的段落時總會出現聲音不連續的現象,會出現極為短暫的雜音
影像部份我就不清楚了,至少我是看不出來,或許也會有相同的問題
請問您在處理影片轉檔時會碰到這樣的問題嗎?您都是怎麼處理的呢?
1. 我想分割與合併不會保留原始的影音 bitrate 等 metadata 是正常的,因為轉檔時,很可能重新指定。
2. 切割再合併聲音會不連續的現象很可能發生,亦因此有些人在處理影音的時候,會把影音先分離,壓好影像之後,再把聲音合併回去。
我比較常用在 JPG 轉 AVI,還有格式轉換上。慣用 mencoder 跟 ffmpeg
很久以前記的筆記,多半是 2006 年以前了(因為先前作視訊系統跟監控系統,常在轉換一個影音格式,所以留下比較多筆記)
轉貼在這裡給大家參考囉~
Using ffmpeg to convert wmv to 3gp -
http://blog.richliu.com/2007/04/24/471/代碼:
nice -n 19 ffmpeg -y -i “$filename.$extname” -s qcif -r 20 -b 200k -vcodec mpeg4 -ab 64k -ac 2 -ar 22050 -acodec libfaac “$filename.3gp”
用 ffmpeg 轉換 JPG 成 FLV
Converting stream of jpg files to FLV stream -
http://stackoverflow.com/questions/7510 ... flv-stream FFmpeg FAQ 文件 -
http://www.ffmpeg.org/faq.html#SEC14代碼:
ffmpeg -f image2 -r 1 -i frame%04d.jpg -s 320x240 -y -an -r 24 out.flv
引言回覆:
-f 來源目錄
-r 1 來源檔案為 1 fps
-i frame%4d.jpg 表示輸入檔格式為 frame0000.jpg frame0001.jpg frame0002.jpg 格式
-s 320x240
-y 覆蓋存在的輸出檔案
-an 不錄音(no audio)
-r 24 輸出檔為 24 fps
我猜想把 -i 的 JPG 換成影片應該也是可行。
轉換 MOV 成 AVI (MPEG4v2 格式)
代碼:
mencoder 1-1.mov -o 1-1.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vhq:vbitrate=640
把原本 720x480 的影片壓成 320x240 的做法是在 -vf 中加上 scale=320:240:1 其中 320 是寬, 240 是高, 1 是 enable interlaced
代碼:
mencoder in.avi -o out.avi -vf pp=md,scale=320:240:1 -ovc lavc -lavcopts vcodec=msmpeg4v2:vhq:vbitrate=640
MPlayer / Mencoder Deinterlace -
http://www.ee.oulu.fi/~tuukkat/mplayer/ ... eadme.html引言回覆:
加上 " -vf pullup,pp=md " 參數後, 確實有差.
avi 轉 flv -
http://www.mplayerhq.hu/DOCS/HTML/en/me ... codec.html代碼:
mencoder input.avi -o output.flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc \
-lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 \
-srate 22050
查 mencoder 支援格式
代碼:
iSensor:~# mencoder -of help -ovc help -oac help
MEncoder dev-CVS--3.3.5 (C) 2000-2006 MPlayer Team
CPU: Intel Pentium 4/Celeron 4 Northwood; Pentium 4 EE/Xeon Prestonia,Gallatin (Family: 15, Stepping: 9)
MMX2 supported but disabled
SSE2 supported but disabled
CPUflags: Type: 15 MMX: 1 MMX2: 0 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 0
Compiled for x86 CPU with extensions: MMX SSE
Available output formats:
avi - Microsoft Audio/Video Interleaved
mpeg - MPEG-1/2 system stream format
lavf - FFmpeg libavformat muxers
rawvideo - (video only, one stream only) raw stream, no muxing
rawaudio - (audio only, one stream only) raw stream, no muxing
Available codecs:
copy - frame copy, without re-encoding. Doesn't work with filters.
frameno - special audio-only file for 3-pass encoding, see DOCS.
raw - uncompressed video. Use fourcc option to set format explicitly.
nuv - nuppel video
lavc - libavcodec codecs - best quality!
vfw - VfW DLLs, currently only AVID is supported.
qtvideo - QuickTime DLLs, currently only SVQ1/3 are supported.
libdv - DV encoding with libdv v0.9.5
xvid - XviD encoding
x264 - H.264 encoding
Available codecs:
copy - frame copy, without re-encoding (useful for AC3)
pcm - uncompressed PCM audio
mp3lame - cbr/abr/vbr MP3 using libmp3lame
lavc - FFmpeg audio encoder (MP2, AC3, ...)
faac - FAAC AAC audio encoder
測試 jpeg 直接轉 flv : [註] vbitrate 最好還是設一下, 會比較清晰., 其他參數都與 motion 有關(運算比較久, 但對動態的反應比較好)
代碼:
#!/bin/sh
mencoder "mf://*.jpg" -mf fps=10 -o output.flv -of lavf -ovc lavc -lavcopts vcodec=flv:vbitrate=1000:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames
把 HDDV 的 MPEG/TS 格式轉成 FLV
代碼:
# 先把 MPEG/TS 轉成 AVI 格式(把不必要的 TS 資料拿掉)
$ mencoder n2.dv -o n2.avi -ovc copy -oac copy
# 拿 n2.avi 轉換 flv
$ mencoder n2.avi -o nmmba.flv -of lavf -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -oac mp3lame -lameopts abr -srate 22050
把 DVD 的 VOB 轉成 AVI
代碼:
mencoder VTS_01_1.VOB -oac mp3lame -ovc lavc -o test.avi
- Jazz