使用 FFmpeg 將 MKV、MP4 等容器更換為 FLV 容器。

1. ffmpeg -i 原始影片檔 -f flv 輸出.flv
2. ffmpeg -i 原始影片檔 -vcodec copy -acodec copy -y 輸出.flv

-i input.mkv:使用 -i 指定欲處理之檔案的名稱。
output.flv:指定將要最終生成的檔案的名稱,檔案類型根據副檔名判斷。這裡副檔名是 flv 就會生成 flv 檔案。
-acodec copy:音訊不轉檔,直接複製給將要最終生成的檔案。
-vcodec copy:視訊不轉檔,直接複製給將要最終生成的檔案。
使用copy 選項將不會有任何 encode 步驟,所以不算是轉檔,只是換個容器而已。


ffmpeg -i <input_file> -timecode_frame_start <start_timecode> -vcodec mpeg2video -an output.m2v
Note:
Start timecode is set as number of frames.
For instance, if you want to start at 18:12:36:15, you will have to set -timecode_frame_start to 1638915 (for 25 fps content).

Sub-clip Creation
ffmpeg -i <input_file> -ss -t -vcodec copy -acodec copy <output_file>

ffmpeg -i foo.mov -vcodec copy -acodec copy -ss 00:00:08 -t 00:00:05 foo_1.mov
-ss 開始攝取時間: 00:00:08,-t 總共攝取時間: 00:00:05,也就是 8+5=13,開頭8秒,結尾至13秒,只攝取5秒影片長度之意

--------------------------------------------------------------------------------
ffmpeg

ffmpeg [[infile options][`-i' infile]]… {[outfile options] outfile}…
ffmpeg -i source.avi -f flv Out.flv

ffmpeg -i source.avi -vcodec flv -acodec copy -y Out.flv

ffmpeg支援的格式非常多,只要輸入 ffmpeg -formats 就可以看到支援的codec。
codec前會有一些說明文字,例如:
`D’ Decoding available
`E’ Encoding available
`V/A/S’ Video/audio/subtitle codec
`S’ Codec supports slices
`D’ Codec supports direct rendering
`T’ Codec can handle input truncated at random locations instead of only at frame boundaries
ffmpeg參數:

Main options:
-i : 輸入檔案名稱,會自動依codec 讀入
-f :輸入格式,例:flv
-y : overwrite output files
-t : duration set the recording time,指定輸出影片最大長度,例:hh:mm:ss[.xxx]
-fs : 限定輸出影片最大大小
-ss : 從指定的時間開始轉檔,例 hh:mm:ss[.xxx]

一些可以設定的影片資訊
-tilte : string
-author : string
-copyright: string
-comment: string
-album: string
-track: number
-year: number

Video options:
-vcodec : 影像編碼格式,例:libxvid ,即XVID
-s : 輸出畫面的解析度,例如:-s 320×240,預設和source一樣, qvga = 320×240
-r : 指FPS,rate set frame rate,例: 25 (fps)
-b bitrate set video bitrate (in kbit/s),例: 200 (kb/s)
-pass n : n = [1|2],one pass , two pass
-newvideo : append 影片到輸出檔上

Audio options:
-acodec : 聲音編碼格式,例:libmp3lame , 即MP3
-ar : 聲音的取樣頻率,預設是 44100 Hz
-ac : 設定聲音的聲道數。1指是的單聲道
-ab : 指定聲音的bitrate,例: 64k
-an : 關掉聲音
-newaudio : 一樣 append

Subtitle options:
`-scodec codec’
Force subtitle codec (‘copy’ to copy stream).
`-newsubtitle’
append字幕到輸出檔上
`-slang code’
Set the ISO 639 language code (3 letters) of the current subtitle stream.
`-sbsf bitstream_filter’
Bitstream filters available are “mov2textsub", “text2movsub".

一些例子:(from ffmpeg常用轉檔參數)
把影像檔案轉換成avi格式
# ffmpeg -i filename.flv -f avi -vcodec libxvid -acodec libmp3lame -ar 22050 filename.avi
把影像檔案轉換成3gp格式
# ffmpeg -i filename.avi -s qcif -vcodec h263 -acodec libfaac -ac 1 -ar 8000 -r 25 -ab 32 filename.3gp
把影像檔轉換成flv格式
# ffmpeg -i filename.mpg -ab 56 -ar 22050 -b 500 -r 15 filename.flv
將聲音檔案轉成mp3
# ffmpeg -i filename.wav -acodec libmp3lame -ar 44100 -ab 128k filename.mp3

 

//--------------------------------------------------------------------------

ffmpeg,ffserver,ffplay相關說明筆記

ffmpeg是linux上的一個編解碼lib,主要可用來作轉檔的動作
而ffplayer和ffserver則是其上提供的一個簡單的播放器和影音串流服務器

以下稍微筆記一下各用法
ffserver
用來當影音串流服務器用,主要都是參考設定檔的動作來執行,可支援RTP/UDP ,HTTP/TCP等傳輸方式,預設的設定檔為
目錄下的 doc/ffserver.conf
因此一般的啟動方式為
./ffserver -f doc/ffserver.conf
當然也可自行修該設定檔並放到其他位置來執行
相關的server設定需到ffserver.conf中修改才行
啟動server後可利用 http://127.0.0.1:8090/stat.html 網址來得知server情況

ffplayer
播放器,可撥來自server的串流或主機上檔案
一般用法如下:
./ffplay  檔案位置
例如:
當主機有提供RTP串流時可用
./ffplay  rtsp://127.0.0.1:5454/food.avi
播放主機上檔案可用
./ffplay /home/food.avi

另有相關設定參數
`-sync type'  :(type=audio或 video 或 ext),代表播放要和誰同步,當播放出來的影音有點奇怪時,可試著加入此參數作校正,其預設為audio

ffmpeg 參數說明:
-i           :輸入的檔案
-formats     :顯示可用的格式,編解碼的,協議的...
-f format    :轉出檔案的格式,例如:avi,mp4...
-target type :設置目標文件類型(vcd,svcd,dvd) 所有的格式選項(比特率,編解碼以及緩衝區大小)自動設置,只需要輸入如下的就可以了:ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
-vcodec codec:強制使用codec編解碼方式。如果用copy表示原始編解碼數據必須被拷貝
-sameq       :使用同樣視頻質量作為源(VBR)
-pass n      :選擇處理遍數(1或者2)。兩遍編碼非常有用。第一遍生成統計信息,第二遍生成精確的請求的碼率
-b bitrate   :輸出影像的位元率(bitrate),預設 = 200 kb/s,說明-bitrate通常是指數位音樂或者視訊的平均位元速率,可以簡單的認為等於檔案大小除以播放時間。例如常用的RMVB在壓縮電影時常常設定視訊平均位元速率為450kbps,則平均每秒佔用約55千位元組,這樣可以估算10分鐘的視訊大小約為55KB*60*10=33MB,2小時的視訊則約為400MB。碼率並不是衡量音訊/視訊質量的唯一標準,格式、影像大小、音訊取樣頻率、音訊解析度等因素也是很重要的指標。
-r fps       :輸出影像的幀率(frame rate),預設為25
-s size      :輸出影像的大小,例如:800x600...
-acodec codec:使用codec編解碼
-ab bitrate  :輸出音訊的位元率(bitrate),預設 = 64K
-ar freq     :輸出音訊的取樣頻率,預設 = 44100Hz
-ac channels :輸出音訊的聲道數,1或2(Stereo)
-ss time     :開始轉檔的影片時間,單位(秒)
-t duration  :片長(duration set the recording time)
-y           :overwrite output files

例如:
輸出純粹的YUV檔
ffmpeg -i mydivx.avi hugefile.yuv
播放YUV格式
./ffplay -s 1280x720 ../file.yuv
重點在於當初轉成YUV的影片大小要符合

./ffmpeg -i ../FF13.mp4 -f ffm -b 10000k -ab 64k -r 60 -ar 48000 -ac 2 -s hd720 ../file.ffm

BB 發表在 痞客邦 PIXNET 留言(0) 人氣()