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