转码音频和视频
将音频和视频转码为在网络上显示的最佳方式是什么?转码音频和视频
我需要以编程方式进行。我想做一些类似YouTube或Google Video的内容,用户可以上传他们想要的任何格式,然后将其编码为flv,mp3和/或mp4。我可以在我们的服务器上完成,但我宁愿使用EC2实例甚至是Web服务。我们有一台Windows 2008服务器。
ffmpeg可以做到这一点,它是一个使用libavcodec的命令行工具。可以处理大多数视频格式的转换。如果符合您的需求,它的许可证是LPGL。您可以通过编程的方式将其作为单独的进程来使用,或者如果您觉得自己的核心,可以直接使用libavcodec库进行编码。
请注意,ffmpeg的某些部分在GPL下。我相信libpostproc模块是,如果我记得正确,这是用于转码。确保此许可证与您正在做的事情兼容。
当你要转码的FLV(这可能是最好的网站),然后我用这条线:
ffmpeg -hq -y -i $directory/$file -r 20 -s 300x200 -deinterlace -ar 22050 $directory/$file.flv 1>/dev/null 2>/dev/null
它非常好,当然在linux的:-)。
我会看看主要概念的参考SDK:
它是专为转码,因为它是有执照的SDK它没有任何周围的ffmpeg /法律问题libavcodec的。
类型取决于你想花多少钱。如果这是一个全新的(并且大部分没有基金)的想法,那么去ffmpeg路线,但是当你扩大规模并寻求提高质量时,考虑一种可以自动化的更专业的编码工具(Rhozet,Inlet,Digital Rapids 3个选项)。
如果您正在寻找GPL的东西:
对于音频混日子,尝试sox.很强大!它做了很多!它包含在大多数Linux发行版中。
还有着名的LAME用于mp3 [音频]编码。
对于视频,mencoder令人印象深刻!它是mplayer包的一部分。它将处理大多数视频格式的转换。远远超过我梦寐以求的存在。 (有关文档,请参见Chapter 9. Basic usage of MEncoder和Chapter 10. Encoding with MEncoder。)
它可以创建的内容稍微有限。但它支持MPEG4 ,MPEG2,DVD-MPEG,FLV,等等。 (虽然我自己并没有尝试过flv,但Google显示其他人正在使用它。)
我做的事情,如JPEG +声音 - > Mpeg4电影:
nice +20 $MENCODER mf://${JPEGFILE} -mf w=720:h=480:fps=1/${SOUNDLENGTH}:type=jpeg -audiofile ${SOUNDFILE} -ovc lavc -oac lavc -lavcopts vcodec=mpeg4 -ofps 30000/1001 -o ${MENU_MPG}
或转码任意格式化的视频到DVD兼容的MPEG:
nice +20 $MENCODER -edl ${EDL} -ovc lavc -oac lavc -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=${VBITRATE}:keyint=18:acodec=ac3:abitrate=192:aspect=4/3:trell:mbd=2:dia=4:cmp=3:precmp=3:ildctcmp=3:subcmp=3:mbcmp=3:cbp:mv0:dc=10 -of mpeg -mpegopts format=dvd -vf scale=720:480,harddup -srate 48000 -af lavcresample=48000 -ofps 30000/1001 -o ./${INFILE}.reformatted ${FILEPATH}
-edl/-edlout [编辑决策列表]仅用于剪切我想要的视频部分。
对于DVD-mpeg-video,$ {VBITRATE}通常为5000。但如果你有点漏洞,你可以把更多的视频压缩到DVD上。假设你可以容忍这些工件。
scale = 720:480,harddup - 我的dvdplayer的刻度尺出错,harddup在我的“el cheapo”播放器上解决声音 - 视频不同步问题。
(要播放的宽屏播放器,不会处理4x3的视频,我用像暴行“纵横=九分之十六”,“-vf规模= 560:480,扩大= 720:480 ,harddup“。但是一般来说,你不想浪费编码黑条的位。)
这不是迄今为止最有效的一组选项到mencoder!运行可能很耗时。但我心中有其他目标......
实际上ffmpeg的GPL部分是可选的,只有在使用--enable-gpl选项运行./configure时才包含。 – mouviciel 2009-02-16 16:19:45