将音频和视频转码以在网络上显示的最佳方式是什么?
我需要以编程方式进行。我想做一些像 YouTube 或谷歌视频这样的东西,用户可以上传他们想要的任何格式,我将它编码为 flv、mp3 和/或 mp4。我可以在我们的服务器上执行此操作,但我更愿意使用 EC2 实例甚至 Web 服务。我们有一个 Windows 2008 服务器。
有点取决于你想花多少钱。如果这是一个全新的(而且大多是没有资金的)想法,那么请走 ffmpeg 路线,但是当您扩展并希望提高质量时,请考虑可以自动化的更专业的编码工具之一(Rhozet、Inlet、Digital Rapids 是3 个选项)。
我强烈推荐 ffmpeg。在 Windows 上,我发现这个站点可以托管好的二进制文件。
ffmpeg 可以做到,它是一个使用 libavcodec 的命令行工具。可以处理大多数视频格式的转换。如果适合您的需要,它的许可证是 LPGL。您可以以编程方式将其用作单独的进程,或者如果您觉得硬核,您可以自己使用 libavcodec 库直接编码。
当您想转码为 Flv(这可能是网络上最好的)时,我使用以下行:
ffmpeg -hq -y -i $directory/$file -r 20 -s 300x200 -deinterlace -ar 22050 $directory/$file.flv 1>/dev/null 2>/dev/null
它工作得很好,当然在 linux 下:-)。
如果你正在寻找 GPL 的东西:
对于音频,请尝试sox。 很强大!它做了很多!它包含在大多数 linux 发行版中。
还有著名的用于 mp3 [音频] 编码的LAME 。
对于视频,mencoder令人印象深刻!它是mplayer包的一部分。它将处理大多数视频格式的转换。比我想象的要多得多。(有关文档,请参阅第 9 章。MEncoder 的基本用法和第 10 章。使用 MEncoder 进行编码。)
它可以创建的内容更加有限。但它确实支持mpeg4、mpeg2、dvd-mpeg、flv等等。(虽然我自己没有尝试过flv,但谷歌显示其他人正在使用它。)
我做过类似 jpeg + sound -> 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 [Edit Decision Lists] 用于剪掉我想要的视频部分。
对于 DVD-mpeg-video,${VBITRATE} 通常为 5000。但是,如果您稍微弄乱了一点,您可以将更多视频压缩到 DVD 上。假设您可以容忍工件。
scale=720:480,harddup -- 我的 dvdplayer 的比例不对,harddup 解决了我的“el cheeseo”播放器上的音视频不同步问题。
(为了在无法处理 4x3 视频的宽屏播放器上播放,我使用了诸如"aspect=16/9"、"-vf scale=560:480,expand=720:480,harddup" 之类的暴行。但总的来说你不想浪费位编码黑条。)
到目前为止,这不是mencoder最有效的一组选项!运行可能很耗时。但我心中还有其他目标...
请注意,ffmpeg 的某些部分受 GPL 保护。我相信 libpostproc 模块是,如果我没记错的话,它用于转码。确保此许可证与您正在做的事情兼容。
我会看一下 Main Concept 的参考 SDK:
它是为转码而构建的,因为它是一个许可的 SDK,它没有任何与 ffmpeg/libavcodec 相关的法律问题。
Rhozet Carbon Coder可以处理多种格式,而且您可以使用插件来更改视频(例如添加水印)