A. ubuntu 額外的版權受限程序 安裝停滯了 怎麼辦
Firefox已經支持H.264格式視頻,但不幸的是,在Ubuntu上gstreamer0.10-ffmpeg屬於額外的版權受限程序,所以本身不支持H.264視頻。所以,看H.264視頻你將要安裝Gstreamer ffmpeg插件。 在這篇文章中我是建議用戶去下載gstreamer0.10-ffmpeg *。他...
B. 格式工廠的版權爭議
由於格式工廠使用了FFmpeg的解碼/編碼演算法,卻以免費軟體的形式發布並且沒有公開源代碼,違反FFmpeg的LGPL協議,於2009年7月22日登上了FFmpeg的「恥辱柱」上。開發方 Freetime 至今仍沒有響應。
C. 怎樣使用ffmpeg 進行音頻解碼
安裝完成ffmpeg後,就可以使用ffmpeg進行音頻文件格式轉換。比如 ./ffmpeg -i /media/1.mp3 /media/1.wav, 通過該命令行可以將/media文件夾下1.mp3文件轉換成WAV格式的。
但是反過來 ./ffmpeg -i /media/1.WAV /media/1.MP3 卻不能轉換成Mp3格式,提示如下錯誤(找不到編碼器):
Stream mapping:
Stream #0:0 -> #0:0 (wav -> ?)
Encoder (codec none) not found for output stream #0:0
如果強行指定編碼器 ./ffmpeg -i /media/1.wav -acodec mp3 /media/1.mp3, 仍提示找不到編碼器錯誤:
Unknown encoder 'mp3'
這是因為,ffmpeg雖然是個開源軟體,但因為具體格式的版權原因,它並沒有包含所有的編解碼格式,或者有個格式只有對應的解碼器,但沒有編碼器,比如 Mp3就只有解碼器,能播放Mp3文件,但卻沒有Mp3的編碼器,無法將其它格式轉換成Mp3。可以通過命令行 ./ffmpeg -codecs 查詢編解碼配置,第一個D表示Decoder,該格式能夠解碼;E表示Encoder,該格式可以編碼。從中可以看出Mp3不能編碼,Mp2倒是即可解碼 也可編碼。如何解決這個問題呢?
D A D mp1 MP1 (MPEG audio layer 1)
D A D mp1float MP1 (MPEG audio layer 1)
DEA D mp2 MP2 (MPEG audio layer 2)
D A D mp2float MP2 (MPEG audio layer 2)
D A D mp3 MP3 (MPEG audio layer 3)
D A D mp3a ADU (Application Data Unit) MP3 (MPEG audio layer 3)
D A D mp3afloat ADU (Application Data Unit) MP3 (MPEG audio layer 3)
我的第一個方法是自己寫代碼來完成。源碼文件中,Allcodecs.c中對各個格式進行注冊,先修改Mp3的注冊行,改為同時注冊解碼器和編碼器:
REGISTER_ENCDEC (MP2, mp2);
REGISTER_DECODER (MP2FLOAT, mp2float);
REGISTER_DECODER (MP3, mp3) // 此行修改為 REGISTER_ENCDEC (MP3, mp3)
然後新增Mp3編碼器的實現Struct,裡面Init函數、encode函數、close函數使用Mp2的函數,因為我也不知道如何去實現Mp3的函數,或者說到代碼實現級我也不知道Mp3和Mp2的區別在哪。
AVCodec ff_mp3_encoder = {
.name = "mp3",
.type = AVMEDIA_TYPE_AUDIO,
.id = CODEC_ID_MP3,
.priv_data_size = sizeof(MpegAudioContext),
.init = MPA_encode_init,
.encode = MPA_encode_frame,
.close = MPA_encode_close,
.sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16,AV_SAMPLE_FMT_NONE},
.supported_samplerates= (const int[]){44100, 48000, 32000, 22050, 24000, 16000, 0},
.long_name = NULL_IF_CONFIG_SMALL("MP3 (MPEG audio layer 3)"),
.defaults = mp3_defaults,
};
重新編譯上線。 用命令行./ffmpeg -i /media/1.WAV /media/1.MP3 試了一下,能成功生成1.mp3文件,文件也能播放。似乎沒有問題了,單用 file /media/1.mp3 查看了一下,發現文件不是Mp3格式的,而是Mp2格式的:
/media/1.mp3: MPEG ADTS, layer II, v1, 128 kbps, 44.1 kHz, Stereo
很遺憾,自行修改代碼的方式行不通,因為不是每個編解碼格式協議的專家,自行修改代碼失敗的風險很大,不僅是Mp3,還有一些其他格式比如AMR OGG H.263是沒有編碼器的。所以,第二個方案,使用成熟的第三方編碼器和ffmpeg結合。
Mp3比較好的開源第三方庫是libmp3lame(簡稱Lame)。我下了一個最新版本(3.99.4)的Lame源碼,編譯它:
首先配置: ./configure --prefix=/shared --enable-shared --enable-static
然後編譯: make
make install
生成文件: 動態鏈接庫 /shared/lib/libmp3lame.so 和 靜態鏈接庫 /shared/lib/libmp3lame.a。這里只需要使用動態鏈接庫,將.so文件拷貝到/lib中,這個文件夾是動態鏈接庫的默認搜索路徑, 讓ffmpeg運行時可以找到。
然後對ffmpeg配置libmp3lame: ./configure --enable-libmp3lame
重新編譯ffmpeg,運行轉化命令,看看效果如何。
首先執行 ./ffmpeg -codecs 查看可用編解碼的變化,可以看到多出了libmp3lame編碼器,帶E的:
D V D lagarith Lagarith lossless
EA libmp3lame libmp3lame MP3 (MPEG audio layer 3)
EV ljpeg Lossless JPEG
D V D loco LOCO
然後執行 ./ffmpeg -i /media/1.WAV /media/1.MP3, 生成1.mp3,用File命令查看,確實是Mp3文件。
/media/1.mp3: Audio file with ID3 version 2.4.0, contains: MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz, Stereo
大功告成,問題解決。
也可在命令行中指定編解碼生成Mp3文件:./ffmpeg -i /media/1.WAV -acodec libmp3lame /media/1.MP3.
D. 如何編譯ffmpeg以支持dshow設備
fmpeg已經能支持dshow設備了!
但編譯時會遇到一些麻煩.在此把我的編譯歷程總結一下,以使後來者的心靈免遭蹂躪.
先說一下我的編譯環境:
mingw+msys,ffmpeg用最新版.
在configure ffmpeg工程時,如果不特別指定,默認fdshow設備是被支持的,但編譯後卻沒有.可以查看configure的日誌文件,會發現找不到一些依賴的頭文件.所以最終編譯出來的ffmpeg.exe,
用ffmpeg -formats來看,在indev一項中,一般只有vfwcap,而沒有dshow.
為什麼會缺頭文件呢?好像是有些文件中的內容是侵權的,所以mingw本身不提供,需要你自己把它搞過來.
但自己搞絕非易事,所以在網上搜到了一些文章,比如下文:
(引用自:http://www.klayge.org/2010/11/09/%E5%9C%A8mingw%E4%B8%8B%E4%BD%BF%E7%94%A8dshow%E7%9A%84%E6%96%B9%E6%B3%95/)
用MinGW編譯DShow的東西,經常遇到沒找到IBaseFilter的問題。本質上是MinGW的w32api並沒有提供完整的DShow頭文件所致。經過一番折騰,得到了下面的解決方案:
1. 從http://sourceforge.net/projects/mingw-w64/下載mingw-w64-headers,我這里用的是mingw-w64-headers-20100717.tar.xz
2. 把mingw-w64-headersinclude目錄下的strmif.h、rpcndr.h、uuids.h、ksuuids.h、control.h拷貝到MinGWinclude,覆蓋原有文件。
3. 打開strmif.h,刪掉所有」__MINGW_EXTENSION」。
4. 打開rpcndr.h,刪掉所有」__MINGW_EXTENSION」,並在第81行」typedef int ssize_t;」的前後分別加上」#ifdef _SSIZE_T_」和」#endif」。
5. 打開vmr9.h,查找」MixerPref9_RenderTargetMask = 0x000FF000〃一行,在後面加上」,」;查找」wchar_t szDescription[512]「,在後面加上」;」。(這個最莫名其妙了,原作者居然都沒加)
6. 打開Windows SDK的wmr9.h,把介面都添到MinGW的vmr9.h中。
至此,DShow相關的東西就可以用MinGW編譯了,不再會報缺少介面。
新增和修改過的文件可以在這里下載:
DShow patch for MinGW
我下載了他的patch,並覆蓋,發現還是不行.
唉,這個太老了,mingw的dshow相關文檔又有新內容了.
查看新的編譯錯誤,發現是找不到ddraw.h還有dsound.h兩個文件.其實這兩個文件只需從微軟提供的directx sdk中復制過來就行了.
之後編譯就能順利通過了,並最終能在ffmpeg -formats中看到dshow.
你可以用ffplay.exe播放dshow設備來進行測試.當然應先看一下dshow設備列表:
ffplay -list_devices true -f dshow video=0
之後就可以播放一個了,比如:
ffplay -f dshow video="USB video capture 0"
注意名字有空格時要用引號括起來.
轉載僅供參考,版權屬於原作者。祝你愉快,滿意請採納哦
E. 怎樣將4U2V授版權保護的視頻文件轉換成AVI視頻文件
任意格式轉換為AVI等,用轉換大師WINMPG進行轉換
http://hi..com/mpgmpg/blog/item/3a74f0fae0a280244e4aea28.html
F. ffmpeg 最大允許多大文件
基本選項: -formats 輸出所有可用格式 -f fmt 指定格式(音頻或視頻格式) -i filename 指定輸入文件名,在linux下當然也能指定:0.0(屏幕錄制)或攝像頭 -y 覆蓋已有文件 -t ration 記錄時長為t -fs limit_size 設置文件大小上限 -ss time_off 從指定的時間(s)開始, [-]hh:mm:ss[.xxx]的格式也支持 -itsoffset time_off 設置時間偏移(s),該選項影響所有後面的輸入文件。該偏移被加到輸入文件的時戳,定義一個正偏移意味著相應的流被延遲了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支持 -title string 標題 -timestamp time 時間戳 -author string 作者 -right string 版權信息 -comment string 評論 -album string album名 -v verbose 與log相關的 -target type 設置目標文件類型("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", "ntsc-svcd", ...) -dframes number 設置要記錄的幀數 視頻選項: -b 指定比特率(bits/s),似乎ffmpeg是自動VBR的,指定了就大概是平均比特率 -vb 指定視頻比特率(bits/s) -vframes number 設置轉換多少楨(frame)的視頻 -r rate 楨速率(fps) -s size 解析度 -aspect aspect 設置視頻長寬比(4:3, 16:9 or 1.3333, 1.7777) -croptop size 設置頂部切除尺寸(in pixels) -cropbottom size 設置底部切除尺寸(in pixels) -cropleft size 設置左切除尺寸 (in pixels) -cropright size 設置右切除尺寸 (in pixels) -padtop size 設置頂部補齊尺寸(in pixels) -padbottom size 底補齊(in pixels) -padleft size 左補齊(in pixels) -padright size 右補齊(in pixels) -padcolor color 補齊帶顏色(000000-FFFFFF) -vn 取消視頻 -vcodec codec 強制使用codec編解碼方式('' to stream) -sameq 使用同樣視頻質量作為源(VBR) -pass n 選擇處理遍數(1或者2)。兩遍編碼非常有用。第一遍生成統計信息,第二遍生成精確的請求的碼率 -passlogfile file 選擇兩遍的紀錄文件名為file -newvideo 在現在的視頻流後面加入新的視頻流 高級視頻選項 -pix_fmt format set pixel format, 'list' as argument shows all the pixel formats supported -intra 僅適用幀內編碼 -qscale q 以<數值>質量為基礎的VBR,取值0.01-255,約小質量越好 -loop_input 設置輸入流的循環數(目前只對圖像有效) -loop_output 設置輸出視頻的循環數,比如輸出gif時設為0表示無限循環 -g int 設置圖像組大小 -cutoff int 設置截止頻率 -qmin int 設定最小質量 -qmax int 設定最大質量 -qdiff int 量化標度間最大偏差 (VBR) -bf int 使用frames B 幀,支持mpeg1,mpeg2,mpeg4 音頻選項: -ab 設置比特率(單位:bit/s,也許老版是kb/s) -aframes number 設置轉換多少楨(frame)的音頻 -aq quality 設置音頻質量 (指定編碼) -ar rate 設置音頻采樣率 (單位:Hz) -ac channels 設置聲道數 -an 取消音頻 -acodec codec 指定音頻編碼('' to stream) -vol volume 設置錄制音量大小(默認為256) -newaudio 在現在的音頻流後面加入新的音頻流 字幕選項: -sn 取消字幕 -scodec codec 設置字幕編碼('' to stream) -newsubtitle 在當前字幕後新增 -slang code 設置字幕所用的ISO 639編碼(3個字母) Audio/Video 抓取選項: -vc channel 設置視頻捕獲通道(只對DV1394) -tvstd standard 設置電視標准 NTSC PAL(SECAM)
G. ffmpeg最全的下令參數怎麼解決
基本選項: -formats 輸出所有可用格式 -f fmt
指定格式(音頻或視頻格式) -i filename 指定輸入文件名,在linux下當然也能指定:0.0(屏幕錄制)或攝像頭 -y 覆蓋已有文件
-t ration 記錄時長為t -fs limit_size 設置文件大小上限 -ss time_off 從指定的時間(s)開始,
[-]hh:mm:ss[.xxx]的格式也支持 -itsoffset time_off
設置時間偏移(s),該選項影響所有後面的輸入文件。該偏移被加到輸入文件的時戳,定義一個正偏移意味著相應的流被延遲了 offset秒。
[-]hh:mm:ss[.xxx]的格式也支持 -title string 標題 -timestamp time 時間戳 -author string 作者 -right string 版權信息 -comment string 評論 -album string album名 -v verbose 與log相關的 -target type 設置目標文件類型("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", "ntsc-svcd", ...) -dframes number 設置要記錄的幀數 視頻選項: -b 指定比特率(bits/s),似乎ffmpeg是自動VBR的,指定了就大概是平均比特率 -vb 指定視頻比特率(bits/s)
-vframes number 設置轉換多少楨(frame)的視頻 -r rate 楨速率(fps) -s size 解析度 -aspect
aspect 設置視頻長寬比(4:3, 16:9 or 1.3333, 1.7777) -croptop size 設置頂部切除尺寸(in
pixels) -cropbottom size 設置底部切除尺寸(in pixels) -cropleft size 設置左切除尺寸 (in
pixels) -cropright size 設置右切除尺寸 (in pixels) -padtop size 設置頂部補齊尺寸(in
pixels) -padbottom size 底補齊(in pixels) -padleft size 左補齊(in pixels)
-padright size 右補齊(in pixels) -padcolor color 補齊帶顏色(000000-FFFFFF) -vn
取消視頻 -vcodec codec 強制使用codec編解碼方式('' to stream) -sameq
使用同樣視頻質量作為源(VBR) -pass n 選擇處理遍數(1或者2)。兩遍編碼非常有用。第一遍生成統計信息,第二遍生成精確的請求的碼率
-passlogfile file 選擇兩遍的紀錄文件名為file -newvideo 在現在的視頻流後面加入新的視頻流 高級視頻選項
-pix_fmt format set pixel format, 'list' as argument shows all the pixel
formats supported -intra 僅適用幀內編碼 -qscale q 以<數值>質量為基礎的VBR,取值0.01-255,約小質量越好 -loop_input 設置輸入流的循環數(目前只對圖像有效) -loop_output 設置輸出視頻的循環數,比如輸出gif時設為0表示無限循環 -g int 設置圖像組大小 -cutoff int 設置截止頻率
-qmin int 設定最小質量 -qmax int 設定最大質量 -qdiff int 量化標度間最大偏差 (VBR) -bf int
使用frames B 幀,支持mpeg1,mpeg2,mpeg4 音頻選項: -ab 設置比特率(單位:bit/s,也許老版是kb/s)
-aframes number 設置轉換多少楨(frame)的音頻 -aq quality 設置音頻質量 (指定編碼) -ar rate 設置音頻采樣率
(單位:Hz) -ac channels 設置聲道數 -an 取消音頻 -acodec codec 指定音頻編碼('' to
stream) -vol volume 設置錄制音量大小(默認為256) -newaudio 在現在的音頻流後面加入新的音頻流 字幕選項:
-sn 取消字幕 -scodec codec 設置字幕編碼('' to stream) -newsubtitle
在當前字幕後新增 -slang code 設置字幕所用的ISO 639編碼(3個字母) Audio/Video 抓取選項: -vc
channel 設置視頻捕獲通道(只對DV1394) -tvstd standard 設置電視標准 NTSC PAL(SECAM)
H. ffmpeg可以播放vc1碼流嗎
VC1是有版權的。作為免費的ffmpeg,暫時沒有看到有對這個編碼的支持。如果微軟不開放免費授權,可能永遠不會有支持。
望採納。
I. ffmpeg 的使用問題
版權問題,裡面某個編碼器的原因,具體不說了,不只是QQ影音,暴風,迅雷播放器都被列入了
J. 我想用ffmpeg命令行轉換一個視頻文件,視、音頻編碼格式不變,只是將畫面旋轉90度,請問命令行該如何寫
在你的轉碼命令裡面添加上-vf rotate=PI/2或者-vf rotate=3*PI/2,例如
ffmpeg -i E:\ffmpeg\test.mp4 -y -vf rotate=PI/2 E:\ffmpeg\dest1.mp4