﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-xiaomage234-随笔分类-video encoding</title><link>http://www.blogjava.net/xiaomage234/category/34728.html</link><description>生命本就是一次凄美的漂流，记忆中放不下的，永远是孩提时代的那一份浪漫与纯真！</description><language>zh-cn</language><lastBuildDate>Thu, 26 Nov 2020 20:26:06 GMT</lastBuildDate><pubDate>Thu, 26 Nov 2020 20:26:06 GMT</pubDate><ttl>60</ttl><item><title>基带、射频，到底是干什么用的？</title><link>http://www.blogjava.net/xiaomage234/archive/2020/11/24/435733.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Tue, 24 Nov 2020 02:41:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2020/11/24/435733.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/435733.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2020/11/24/435733.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/435733.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/435733.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: from:https://www.huxiu.com/article/351920.html本文来自微信公众号：&nbsp;鲜枣课堂（ID：xzclasscom），作者：小枣君，题图来自：视觉中国大家好，我是小枣君。今天我们来聊聊基带和射频。说起基带和射频，相信大家都不陌生。它们是通信行业里的两个常见概念，经常出现在我们面前。不过，越是常见的概念，网上的资料就越混乱，错误也就越多。这些错误给很多初...&nbsp;&nbsp;<a href='http://www.blogjava.net/xiaomage234/archive/2020/11/24/435733.html'>阅读全文</a><img src ="http://www.blogjava.net/xiaomage234/aggbug/435733.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2020-11-24 10:41 <a href="http://www.blogjava.net/xiaomage234/archive/2020/11/24/435733.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>20+ 个免费和高级的 Web 视频播放器</title><link>http://www.blogjava.net/xiaomage234/archive/2011/12/16/366523.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Fri, 16 Dec 2011 06:23:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2011/12/16/366523.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/366523.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2011/12/16/366523.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/366523.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/366523.html</trackback:ping><description><![CDATA[<div><span style="font-family: Verdana, Simsun, sans-serif; font-size: 13px; line-height: normal; "><div id="OSChina_News_23953" textcontent=""  newstype2"="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; line-height: 24px; color: #000000; font-size: 10.5pt; overflow-x: hidden; overflow-y: hidden; "><h2>免费视频播放器</h2><h3>Flowplayer &#8211; Flash Video Player for the Web</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="http://www.oschina.net/p/flowplayer" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68445"="" title="Video Players (1)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-1.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><h3>Video LightBox JS</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="http://videolightbox.com/" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68446"="" title="Video Players (2)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-2.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><h3>JW Player</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="http://www.oschina.net/p/jw+flv+media+player" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68447"="" title="Video Players (3)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-3.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><h3>Free flash flv/mp4 player</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="http://www.gdd.ro/free-flash-flv-player" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68448"="" title="Video Players (4)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-4.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><h3>SublimeVideo &#8211; HTML5 Video Player</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="https://www.sublimevideo.net/" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68449"="" title="Video Players (5)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-5.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><h2>高级视频播放器</h2><h3>HTML5 Video Player</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="http://codecanyon.net/item/html5-video-player-v1/758636?ref=designmodo" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68450"="" title="Video Players (6)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-6.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><h3>Vplayer &#8211; Video player with Gallery</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="http://codecanyon.net/item/vplayer-video-player-with-gallery/137344?ref=designmodo" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68451"="" title="Video Players (7)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-7.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><h3>Tejas &#8211; Premium HTML5 Video Player</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="http://codecanyon.net/item/tejas-premium-html5-video-player/122203?ref=designmodo" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68452"="" title="Video Players (8)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-8.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><h3>JQuery Html5 Video Player</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="http://codecanyon.net/item/jquery-html5-video-player/122055?ref=designmodo" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img wp-image-68453=""  alignnone"="" title="Video Players (9)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-9.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><h3>HTML5 Video Gallery with Live Playlist</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="http://codecanyon.net/item/html5-video-gallery-with-live-playlist-/490139?ref=designmodo" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68454"="" title="Video Players (10)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-10.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><h3>MediaBox &#8211; jQuery Plugin for Audio &amp; Video</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="http://codecanyon.net/item/mediabox-jquery-plugin-for-audio-video/241182?ref=designmodo" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68455"="" title="Video Players (11)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-11.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><h3>Video Player Reflection Multi Skin Local / YouTube</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="http://activeden.net/item/video-player-reflection-multi-skin-local-youtube/114037?ref=designmodo" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68457"="" title="Video Players (13)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-13.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><h3>Dynamic Flash Video Player (.flv &amp; h.264)</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="http://activeden.net/item/dynamic-flash-video-player-flv-h264/21823?ref=designmodo" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68458"="" title="Video Players (14)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-14.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><h3>Very Versatile Video Player (h.264, and flv)</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="http://activeden.net/item/very-versatile-video-player-h264-and-flv/38632?ref=designmodo" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68459"="" title="Video Players (15)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-15.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><h3>Ultra XML Video Player</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="http://activeden.net/item/ultra-xml-video-player/102806?ref=designmodo" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68460"="" title="Video Players (16)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-16.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><h3>Clean White Video Player</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="http://activeden.net/item/clean-white-video-player/82263?ref=designmodo" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68461"="" title="Video Players (17)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-17.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><h3>Xml video player</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="http://activeden.net/item/xml-video-player-with-glossy-live-preview-playlist/93272?ref=designmodo" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68462"="" title="Video Players (18)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-18.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><h3>AS3 Video Player</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="http://activeden.net/item/as3-video-player/558214?ref=designmodo" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68463"="" title="Video Players (19)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-19.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><h3>Smart Video Player</h3><h3><a href="http://activeden.net/item/smart-video-player/139864?ref=designmodo" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68464"="" title="Video Players (20)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-20.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></h3><h3>Fullscreen Video Player 03 AS2</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="http://activeden.net/item/fullscreen-video-player-03-as2/56312?ref=designmodo" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68465"="" title="Video Players (21)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-21.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><h3>New Video Player. Dynamic Movie Player FlashVars.</h3><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; "><a href="http://activeden.net/item/new-video-player-dynamic-movie-player-flashvars/47981?ref=designmodo" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "><img size-full=""  wp-image-68466"="" title="Video Players (22)" src="http://cdn.designmodo.com/wp-content/uploads/2011/11/Video-Players-22.jpg" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; max-width: 600px; " /></a></p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 2em; ">via&nbsp;<a href="http://designmodo.com/video-players/" target="_blank" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; ">designmodo</a></p><p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 5px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0em; font-weight: bold; color: #aa0000; ">更多关于<a href="http://www.oschina.net/p/flowplayer" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 3px; margin-bottom: 0px; margin-left: 3px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; ">FlowPlayer</a>的详细信息，或者下载地址请点<a href="http://www.oschina.net/action/project/go?id=6885&amp;p=download" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 3px; margin-bottom: 0px; margin-left: 3px; color: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; ">这里</a></p></div><div style="padding-top: 3px; padding-right: 0px; padding-bottom: 3px; padding-left: 10px; margin-top: 20px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #eeffee; text-align: left; color: #666666; font-size: 10pt; line-height: 22px; border-left-width: 10px; border-left-style: solid; border-left-color: #ccffcc; background-position: initial initial; background-repeat: initial initial; ">本站文章除注明转载外，均为本站原创或编译<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />欢迎任何形式的转载，但请务必注明出处，尊重他人劳动共创开源社区<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />转载请注明：文章转载自：<strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">开源中国社区</strong>&nbsp;[<a href="http://www.oschina.net/" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #333333; outline-width: 0px; outline-style: initial; outline-color: initial; ">http://www.oschina.net</a>]<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />本文标题：20+ 个免费和高级的 Web 视频播放器<br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " />本文地址：<a href="http://www.oschina.net/news/23953/video-players" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: #333333; outline-width: 0px; outline-style: initial; outline-color: initial; ">http://www.oschina.net/news/23953/video-players</a></div></span></div><img src ="http://www.blogjava.net/xiaomage234/aggbug/366523.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2011-12-16 14:23 <a href="http://www.blogjava.net/xiaomage234/archive/2011/12/16/366523.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FLV高清的两种方式FLV1和FLV4</title><link>http://www.blogjava.net/xiaomage234/archive/2009/01/19/251896.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Mon, 19 Jan 2009 06:51:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2009/01/19/251896.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/251896.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2009/01/19/251896.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/251896.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/251896.html</trackback:ping><description><![CDATA[<p>&nbsp;现在国内主流的MP4机器，都宣称可以直接播放RMVB和FLV。 我比较关心FLV，就是YOUTUBE、土豆、优酷上的视频格式。 </p>
<p>不过，FLV也分FLV1和FLV4二种格式。（二者的文件后缀名都是FLV，但在电脑上用KMPLAYER播放时，FLV4的文件会有提示） </p>
<p>FLV1主要在欧美和中国的视频网站流行，特点是体积小，在线播放流畅，但清晰度低。 </p>
<p>而FLV4是近年在日、韩视频网站开始流行的新格式，特点是解析度普遍在400*300以上，同等画面尺寸下，要比FLV1清晰得多，色彩饱和度也特别浓郁。缺点是，文件比较大，在线播放经常停顿。 </p>
<p>我从日韩视频网站上搜集、下载了不少日韩歌星MV的FLV视频，格式当然是FLV4的。 很想知道，国内的MP4是否能直接播放FLV4的格式？ </p>
<p>恳请有知道的朋友能指点一下 </p>
<p>问题补充：不好意思,我不是笼统地指MP4是否支持FLV，而是特指FLV4格式，因为我知道是有几款MP4支持FLV1。 </p>
<p>据说，二种FLV的视频编码格式不同，FLV1的视频编码格式是Sorenson H.263或H.264，而FLV4则是ON2 VP6 。 </p>
<p>FLV4在线视频片段观赏: <br />
http://tclon2.com/index.htm</p>
<p><br />
MC目前还办不到，我见过FLV4格式，是比较清楚。<br />
你可以用MC转成MP4（H.264+AAC），再修改后缀为FLV，FLASH播放器可以直接调用播放，效果同样非常好，不比On2VP6+MP3差.<br />
<br />
On2 VP6-S 高清视频<br />
On2 VP6-S编码器是Adobe Flash Player的新伙伴，专为播放高清内容而设。比较H.264 (AVC)及其他同类技术，为 Adobe&#174; Flash&#174; Player 而设的On2 VP6-S能以较低的数据传输率及处理器利用率，输出一流的高清影像。<br />
<br />
压制flv4视频参考地址：<a href="http://sk.sosg.net/post/45.htm">http://sk.sosg.net/post/45.htm</a><br />
On2 VP6和Sorenson Spark 视频编解码器比较：<a href="http://hi.baidu.com/jinzhou_shi/blog/item/0b249beffbde2c32adafd501.html">http://hi.baidu.com/jinzhou_shi/blog/item/0b249beffbde2c32adafd501.html</a><br />
土豆网为网络视频选用On2 VP6技术，有效节省带宽成本：http://www.eetchina.com/ART_8800558976_621496_NT_ae7228dc.HTM</p>
<img src ="http://www.blogjava.net/xiaomage234/aggbug/251896.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2009-01-19 14:51 <a href="http://www.blogjava.net/xiaomage234/archive/2009/01/19/251896.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>视频格式_百度百科</title><link>http://www.blogjava.net/xiaomage234/archive/2009/01/19/251878.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Mon, 19 Jan 2009 05:04:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2009/01/19/251878.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/251878.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2009/01/19/251878.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/251878.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/251878.html</trackback:ping><description><![CDATA[<strong>手机专用视频格式 3GP</strong><br />
　　3GP概述<br />
　　3GP是一种3G流媒体的视频编码格式，主要是为了配合3G网络的高传输速度而开发的，也是目前手机中最为常见的一种视频格式。 <br />
　　目前，市面上一些安装有Realplay播放器的智能手机可直接播放后缀为rm的文件，这样一来，在智能手机中欣赏一些rm格式的短片自然不是什么难事。然而，智能手机毕竟是少数，大部分手机并不支持rm格式的短片，若要在这些手机上实现短片播放则必须采用一种名为3GP的视频格式。目前有许多具备摄像功能的手机，拍出来的短片文件其实都是以3GP为后缀的，如诺基亚6230、摩托罗拉V600、阿尔卡特OT756等。下文将介绍如何制作适合手机播放的3GP文件。<br />
　　在目前上市的一些智能手机或者支持视频拍摄的手机中我们往往能看到所谓支持3GPP格式图象，那么什么是3GPP格式呢？简单的说，该格式是&#8220;第三代合作伙伴项目&#8221;(3GPP)制定的一种多媒体标准，使用户能使用手机享受高质量的视频、音频等多媒体内容。其核心由包括高级音频编码 (AAC)、自适应多速率 (AMR) 和MPEG-4 和 H.263 视频编码解码器等组成，目前大部分支持视频拍摄的手机都支持3GPP格式的视频播放。<br />
　　转换工具是关键<br />
　　在整个制作过程中，首先要下载将通常格式的视频文件转为3GP的工具，在这里记者推荐诺基亚的NOKIA　multimedia　converter　Pro　V2.0，这是诺基亚专门编写的压制工具，可以把AVI、MPG等格式的视频文件直接转换成手机上能看的3GP文件。 <br />
　　下载后按步骤安装。安装完毕后双击文件MMConverterPro.exe即可打开软件主界面。 <br />
　　在界面的中上方，有Video和Audio两个按键，点击后可分别进入各自的界面。其中的Video界面是本文的主题，使用者可以在这里将各种格式的视频文件转换为适于手机播放的3GP。至于Audio，顾名思义是制作音乐的界面，使用者在此可将电脑常用的mp3文件转为适合手机彩信发送和存储的AMR格式。同时，通过这个方法也可以制作AMR格式的真人铃声。 <br />
　　除了诺基亚专用的转换工具以外推荐的一款通用的转换工具：Xilisoft Video Converter 这款软件优点：可以在DVD、VCD、SVCD、MOV、RM、AVI、MPEG、WMV、3GP、MP4等格式间相互转换，你可以指定视频和音频编码器、设置各项输出参数，其重要之处在于：可以从视频文件转换出任意流行的音频文件，诸如MP2、MP3、AC3、RA、M4A等。此工具支持多线程，可以同时进行多个文件的转换，所有的转换过程都非常简明快捷。 <br />
　　转换软件操作简单<br />
　　Windows　Moive　Maker制作的短片格式为WMV，需要再用WMV　to　AVI　MPEG　VCD　SVCD　DVD　Converter将其转为AVI或MPG格式，转换方法可参照工具附带的说明书，相当简便。随即进入最后步骤，制作3GP格式的手机短片。 <br />
　　1、在NOKIA　multimedia　converter　Pro　V2.0的主界面中选择File&#8594;Open&#8594;选择截取好的短片。 <br />
　　2、打开短片后，界面中间原本字体为灰色的convert按键会变为黑色，点击convert，键入文件名、选好存放路径，按下&#8220;保存&#8221;键即可。 <br />
　　3、转换成功后，你可以点击右面界面的播放键来预览制作完成的3GP影片了，此时你还会发现现在的文件比原来的要小得多。<br />
　　3GP是一个多媒体储存格式, 由3GPP所定义并为3G手机所使用. 它是一个简化的MPEG-4 Part 14 (MP4) 版本. 3GP版本的档案附档名为 .3gp 或 .3g2<br />
　　3GP是以MPEG-4 or H.263格式储存影像串流(video streams)，并以AMR-NB or AAC-LC 格式储存声音串流(audio streams)。3GP档案永远为big-endian，储存以及转换从最高位元开始(the most significant bytes first)。3GP亦定义影像的大小以及带宽， 所以内容可以正确的缩至手机萤幕显示的大小。<br />
　　透过合适的多媒体播放软件，3GP档案亦可以在个人电脑上观看。支援3GP格式的多媒体播放软件计有：Media Player Classic、MPlayer、QuickTime、RealPlayer、VLC Player、Xine及Zoom Player。<br />
　　3GP影像档案可使用3GP Video Converter 或使用 MPEG Streamclip 和QuickTime Alternative 并用的方式，以转换至多种其他格式，大多数有3G功能的电话已支援这种格式， 甚至在撷取影像时就是使用此种格式。在PC萤幕显示的品质与在手机萤幕显示的品质类似. 通常保全摄影机会使用此种格式， 以便可在一小块区域显示注脚。这也是为何手机使用3GP格式的原因。<br />
　　简单编辑电影片断<br />
　　虽然相比一些常见的视频文件，3GP所占的内存非常小，但由于手机内存限制，长时间、大容量的电影并不适合通常的手机播放。所以在选取影片时制作者要特别留意，如果是常见的4－5分钟长短的MTV（音乐电视）短片大可放心压缩；如果要截取电影的片断则需要借助其他工具，如Windows　Moive　Maker进行简单编辑。 <br />
　　1、打开Windows　Moive　Maker，选择文件&#8594;导入&#8594;在电脑中寻找需要剪切的影片&#8594;双击打开。 <br />
　　2、此时软件会读取影片信息，时间依影片大小而定，在进度条达到100％时即可，软件界面的中间会显示&#8220;剪辑1&#8221;。<br />
　　3、点选&#8220;剪辑1&#8221;，此时在软件界面的右方会显示影片播放信息，将下方的滑块移至你想剪辑片断的开始处，点选界面顶部工具栏中的&#8220;剪辑&#8221;，选择&#8220;分割&#8221;，此时会生成&#8220;剪辑1（1）&#8221;文件。<br />
　　4、点选&#8220;剪辑1（1）&#8221;，将滑块移至你想剪辑片断的结尾处，再此处点选界面顶部工具栏中的&#8220;剪辑&#8221;、&#8220;分割&#8221;，此时将生成&#8220;剪辑1(2)&#8221;。<br />
　　5、经过两次分割后的&#8220;剪辑1（1）&#8221;即为你所想要截取的影片，在&#8220;剪辑1（1）&#8221;上选择&#8220;添加到情节提要&#8221;，最后选择文件&#8594;保存电影。 <br />
　　在现时市面上提供手机画像的电话所使用的标准，有以下两个：<br />
　　3GPP（GSM手机使用的标准）<br />
　　3GPP2（CDMA手机使用的标准）<br />
　　两者都是基于相同的编码标准：影像方面采用MPEG-4及H.263，而声音则采用AAC或AMR标准。<br />
　　推荐一个专业的压缩3GP格式的软件，<br />
　　软件名称：Allok Video to 3GP Converter<br />
　　大小：4951KB <br />
　　软件简介：<br />
　　Allok 公司出品的专为手机 3GP 视频设计的媒体转换器。此软件使用 H263/MPEG4/XviD 这三种编解码器，你的手机至少支持其中之一吧？<br />
　　转换时的输入格式目前支持几乎所有主流的音频视频格式：*.avi；*.mpg；*.divx；*.div；*.xvid；*.mpeg；*.wmv；*.asf；*.asx；*.mpe；*.m1v；*.m2v；*.dat；*.mp4；*.m4v；*.dv；*.dif；*.mjpg；*.mjpeg；*.mov；*.qt；*.rm；*.rmvb；*.3gp；*.3g2；*.h261；*.h264；*.yuv；*.raw；*.flv；*.swf；*.vob；*.mkv；*.ogm；<br />
　　可以将它们转换为：<br />
　　3GP + AMR 格式（*.3gp）、3GP + AAC 格式（*.3gp）、3GP2 + AAC 格式（*.3g2）、MPEG-4 视频格式（*.mp4）、AVI 视频格式 （*.avi）、DivX 视频格式（*.avi）<br />
　　特色功能：<br />
　　支持视频分割，帮助您去粗取精，可以只保留你最喜爱的片段；<br />
　　允许导入外挂的各种字幕文件、支持所有的主流字幕文件格式。<br />
　　特别推荐各位朋友使用这个软件压缩你手机适合的手机电影，过几天我再写一个此软件详细的使用教程。请各位朋友耐心等待！<br />
　　专业网站<br />
　　可以去下面几个网站下载3gp手机电影：<br />
　　http://www.Sky3gp.com http://www.anwang.net http://www.3la3la.com http://www.fuwabbs.cn http://www.hao3gp.com http://www.3gp2.com http://www.513gp.com http://www.523gp.cn<br />
<strong>ASF</strong><br />
　　ASF 是 Advanced Streaming format 的缩写，由字面（高级流格式）意思就应该看出这个格式的用处了吧。说穿了 ASF 就是 MICROSOFT 为了和现在的 Real player 竞争而发展出来的一种可以直接在网上观看视频节目的文件压缩格式！由于它使用了 MPEG4 的压缩算法，所以压缩率和图像的质量都很不错。因为 ASF 是以一个可以在网上即时观赏的视频&#8220;流&#8221;格式存在的，所以它的图像质量比 VCD 差一点点并不出奇，但比同是视频&#8220;流&#8221;格式的 RAM 格式要好。不过如果你不考虑在网上传播，选最好的质量来压缩文件的话，其生成的视频文件比 VCD （MPEG1）好是一点也不奇怪的，但这样的话，就失去了 ASF 本来的发展初衷，还不如干脆用 N AVI 或者 DIVX 。但微软的&#8220;子第&#8221;就是有它特有的优势，最明显的是各类软件对它的支持方面就无人能敌。<br />
<strong>n AVI<br />
</strong>　　n AVI 是 newAVI 的缩写，是一个名为 ShadowRealm 的地下组织发展起来的一种新视频格式。它是由 Microsoft ASF 压缩算法的修改而来的（并不是想象中的 AVI），视频格式追求的无非是压缩率和图像质量，所以 NAVI 为了追求这个目标，改善了原始的 ASF 格式的一些不足，让 NAVI 可以拥有更高的帧率（frame rate）。当然，这是牺牲 ASF 的视频流特性作为代价的。概括来说， NAVI 就是一种去掉视频流特性的改良型 ASF 格式！再简单点就是---非网络版本的 ASF ！<br />
<strong>AVI</strong><br />
　　AVI 是 Audio Video Interleave 的缩写，这个看来也不用我多解释了，这个微软由 WIN3.1 时代就发表的旧视频格式已经为我们服务了好几个年头了。如果这个都不认识，我看你还是别往下看了，这个东西的好处嘛，无非是兼容好、调用方便、图像质量好，但缺点我想也是人所共知的：尺寸大！就是因为这点，我们现在才可以看到由 MPEG1 的诞生到现在 MPEG4 的出台。<br />
<strong>MPEG</strong><br />
　　MPEG 是 Motion Picture Experts Group 的缩写，它包括了 MPEG-1, MPEG-2 和 MPEG-4 （注意，没有MPEG-3，大家熟悉的MP3 只是 MPEG Layeur 3）。MPEG-1相信是大家接触得最多的了，因为它被广泛的应用在 VCD 的制作和一些视频片段下载的网络应用上面，可以说 99% 的 VCD 都是用 MPEG1 格式压缩的，（注意 VCD2.0 并不是说明 VCD 是用 MPEG-2 压缩的）使用 MPEG-1 的压缩算法，可以把一部 120 分钟长的电影（未视频文件）压缩到 1.2 GB 左右大小。MPEG-2 则是应用在 DVD 的制作（压缩）方面，同时在一些 HDTV（高清晰电视广播）和一些高要求视频编辑、处理上面也有相当的应用面。使用 MPEG-2 的压缩算法压缩一部 120 分钟长的电影（未视频文件）可以到压缩到 4 到 8 GB 的大小（当然，其图像质量等性能方面的指标 MPEG-1 是没得比的）。MPEG-4 是一种新的压缩算法，使用这种算法的 ASF 格式可以把一部 120 分钟长的电影（未视频文件）压缩到 300M 左右的视频流，可供在网上观看。其它的 DIVX 格式也可以压缩到 600M 左右，但其图像质量比 ASF 要好很多。<br />
<strong>DIVX</strong><br />
　　DIVX 视频编码技术可以说是一种对 DVD 造成威胁的新生视频压缩格式（有人说它是 DVD 杀手），它由 Microsoft mpeg4v3 修改而来，使用 MPEG4 压缩算法。同时它也可以说是为了打破 ASF 的种种协定而发展出来的。而使用这种据说是美国禁止出口的编码技术 --- MPEG4 压缩一部 DVD 只需要 2 张 CDROM！这样就意味着，你不需要买 DVD ROM 也可以得到和它差不多的视频质量了，而这一切只需要你有 CDROM 哦！况且播放这种编码，对机器的要求也不高，CPU 只要是 300MHZ 以上（不管你是PII,CELERON,PIII,AMDK6/2,AMDK6III,AMDATHALON,CYRIXx86）在配上 64 兆的内存和一个 8兆 显存的显卡就可以流畅的播放了。这绝对是一个了不起的技术，前途不可限量！<br />
<strong>QuickTime<br />
</strong>　　QuickTime（MOV）是 Apple（苹果）公司创立的一种视频格式，在很长的一段时间里，它都是只在苹果公司的 MAC 机上存在。后来才发展到支持 WINDOWS 平台的，但平心而论，它无论是在本地播放还是作为视频流格式在网上传播，都是一种优良的视频编码格式。到目前为止，它共有 4 个版本，其中以 4.0 版本的压缩率最好！<br />
REAL VIDEO<br />
　　REAL VIDEO （RA、RAM）格式由一开始就是定位就是在视频流应用方面的，也可以说是视频流技术的始创者。它可以在用 56K MODEM 拨号上网的条件实现不间断的视频播放，当然，其图像质量和 MPEG2、DIVX 等比是不敢恭维的啦。毕竟要实现在网上传输不间断的视频是需要很大的频宽的，这方面 ASF 的它的有力竞争者！<br />
<strong>RMVB<br />
</strong>　　所谓RMVB格式，是在流媒体的RM影片格式上升级延伸而来。VB即VBR，是Variable Bit Rate（可改变之比特率）的英文缩写。我们在播放以往常见的RM格式电影时，可以在播放器左下角看到225Kbps字样，这就是比特率。影片的静止画面和运动画面对压缩采样率的要求是不同的，如果始终保持固定的比特率，会对影片质量造成浪费。<br />
　　而RMVB则打破了原先RM格式那种平均压缩采样的方式，在保证平均压缩比的基础上，设定了一般为平均采样率两倍的最大采样率值。将较高的比特率用于复杂的动态画面（歌舞、飞车、战争等），而在静态画面中则灵活地转为较低的采样率，合理地利用了比特率资源，使RMVB在牺牲少部分你察觉不到的影片质量情况下最大限度地压缩了影片的大小，最终拥有了近乎完美的接近于DVD品质的视听效果，如图1所示的就是RMVB格式的《圣斗士冥王篇》。可谓体积与清晰度&#8220;鱼与熊掌兼得&#8221;，其发展前景不容小觑。<br />
　　相较DVDrip而言，RMVB的优势不言而喻。首先在保证影片整体视听效果的前提下，RMVB的个头只有300~450MB左右（以90分钟的标准电影计算），而DVDrip却需要700MB甚至更多；其次RMVB的字幕为内嵌字幕，不像DVDrip那样要安装调试字幕外挂软件，有时还会出现乱码；更重要的是RMVB的影音播放只需一次性安装完解码器，以后无论影像还是音效都无需另行调试。而DVDrip却视频、音频解码一大堆，设置不当还会造成音画不同步、花屏失声等等毛病。<br />
<strong>本地影像视频<br />
</strong>　　●AVI格式：它的英文全称为Audio Video 文件后缀名：*.avi<br />
　　Interleaved，即音频视频交错格式。它于1992年被Microsoft公司推出，随Windows3.1一起被人们所认识和熟知。所谓&#8220;音频视频交错&#8221;，就是可以将视频和音频交织在一起进行同步播放。这种视频格式的优点是图像质量好，可以跨多个平台使用，其缺点是体积过于庞大，而且更加糟糕的是压缩标准不统一，最普遍的现象就是高版本Windows媒体播放器播放不了采用早期编码编辑的AVI格式视频，而低版本Windows媒体播放器又播放不了采用最新编码编辑的AVI格式视频，所以我们在进行一些AVI格式的视频播放时常会出现由于视频编码问题而造成的视频不能播放或即使能够播放，但存在不能调节播放进度和播放时只有声音没有图像等一些莫名其妙的问题，如果用户在进行AVI格式的视频播放时遇到了这些问题，可以通过下载相应的解码器来解决。<br />
　　●nAVI格式：nAVI是newAVI的缩写，是一个名为ShadowRealm的地下组织发展起来的一种新视频格式(与我们上面所说的AVI格式没有太大联系)。它是由Microsoft <br />
　　ASF压缩算法的修改而来的，但是又与下面介绍的网络影像视频中的ASF视频格式有所区别，它以牺牲原有ASF视频文件视频&#8220;流&#8221;特性为代价而通过增加帧率来大幅提高ASF视频文件的清晰度。<br />
　　●DV-AVI格式：DV的英文全称是Digital Video <br />
　　Format，是由索尼、松下、JVC等多家厂商联合提出的一种家用数字视频格式。目前非常流行的数码摄像机就是使用这种格式记录视频数据的。它可以通过电脑的IEEE <br />
　　1394端口传输视频数据到电脑，也可以将电脑中编辑好的的视频数据回录到数码摄像机中。这种视频格式的文件扩展名一般是.avi，所以也叫DV-AVI格式。<br />
　　●MPEG格式：它的英文全称为Moving Picture Expert <br />
　　Group，即运动图像专家组格式，家里常看的VCD、SVCD、DVD就是这种格式。MPEG文件格式是运动图像压缩算法的国际标准，它采用了有损压缩方法减少运动图像中的冗余信息，说的更加明白一点就是MPEG的压缩方法依据是相邻两幅画面绝大多数是相同的，把后续图像中和前面图像有冗余的部分去除，从而达到压缩的目的(其最大压缩比可达到200:1)。目前MPEG格式有三个压缩标准，分别是MPEG－1、MPEG－2、和MPEG－4，另外，MPEG-7与MPEG-21仍处在研发阶段。<br />
　　MPEG－1：制定于1992年，它是针对1.5Mbps以下数据传输率的数字存储媒体运动图像及其伴音编码而设计的国际标准。也就是我们通常所见到的VCD制作格式。使用MPEG-1的压缩算法，可以把一部120分钟长的电影压缩到1.2GB左右大小。这种视频格式的文件扩展名包括.mpg、.mlv、.mpe、.mpeg及VCD光盘中的.dat文件等。<br />
　　MPEG－2：制定于1994年，设计目标为高级工业标准的图像质量以及更高的传输率。这种格式主要应用在DVD/SVCD的制作(压缩)方面，同时在一些HDTV(高清晰电视广播)和一些高要求视频编辑、处理上面也有相当的应用。使用MPEG-2的压缩算法，可以把一部120分钟长的电影压缩到4到8GB的大小。这种视频格式的文件扩展名包括.mpg、.mpe、.mpeg、.m2v及DVD光盘上的.vob文件等。<br />
　　MPEG－4：制定于1998年，MPEG－4是为了播放流式媒体的高质量视频而专门设计的，它可利用很窄的带度，通过帧重建技术，压缩和传输数据，以求使用最少的数据获得最佳的图像质量。目前MPEG-4最有吸引力的地方在于它能够保存接近于DVD画质的小体积视频文件。另外，这种文件格式还包含了以前MPEG压缩标准所不具备的比特率的可伸缩性、动画精灵、交互性甚至版权保护等一些特殊功能。这种视频格式的文件扩展名包括.asf、.mov和DivX ,AVI等。<br />
　　小提示：细心的用户一定注意到了，这中间怎么没有MPEG－3编码？实际上，大家熟悉的MP3就是采用的MPEG－3(MPEG <br />
　　Layeur3)编码。<br />
　　●DivX格式：这是由MPEG－4衍生出的另一种视频编码(压缩)标准，也即我们通常所说的DVDrip格式，它采用了MPEG4的压缩算法同时又综合了MPEG-4与MP3各方面的技术，说白了就是使用DivX压缩技术对DVD盘片的视频图像进行高质量压缩，同时用MP3或AC3对音频进行压缩，然后再将视频与音频合成并加上相应的外挂字幕文件而形成的视频格式。其画质直逼DVD并且体积只有DVD的数分之一。这种编码对机器的要求也不高，所以DivX视频编码技术可以说是一种对DVD造成威胁最大的新生视频压缩格式，号称DVD杀手或DVD终结者。<br />
　　●MOV格式：美国Apple公司开发的一种视频格式，默认的播放器是苹果的QuickTimePlayer。具有较高的压缩比率和较完美的视频清晰度等特点，但是其最大的特点还是跨平台性，即不仅能支持MacOS，同样也能支持Windows系列。<br />
<strong>网络影像视频<br />
</strong>　　●ASF格式：它的英文全称为Advanced Streaming format，它是微软为了和现在的Real <br />
　　Player竞争而推出的一种视频格式，用户可以直接使用Windows自带的Windows Media <br />
　　Player对其进行播放。由于它使用了MPEG-4的压缩算法，所以压缩率和图像的质量都很不错(高压缩率有利于视频流的传输，但图像质量肯定会的损失，所以有时候ASF格式的画面质量不如VCD是正常的)。<br />
　　●WMV格式：它的英文全称为Windows Media <br />
　　Video，也是微软推出的一种采用独立编码方式并且可以直接在网上实时观看视频节目的文件压缩格式。WMV格式的主要优点包括：本地或网络回放、可扩充的媒体类型、部件下载、可伸缩的媒体类型、流的优先级化、多语言支持、环境独立性、丰富的流间关系以及扩展性等。<br />
　　●RM格式：Real Networks公司所制定的音频视频压缩规范称为Real <br />
　　Media，用户可以使用RealPlayer或RealOne <br />
　　Player对符合RealMedia技术规范的网络音频/视频资源进行实况转播并且RealMedia可以根据不同的网络传输速率制定出不同的压缩比率，从而实现在低速率的网络上进行影像数据实时传送和播放。这种格式的另一个特点是用户使用RealPlayer或RealOne <br />
　　Player播放器可以在不下载音频/视频内容的条件下实现在线播放。另外，RM作为目前主流网络视频格式，它还可以通过其Real <br />
　　Server服务器将其它格式的视频转换成RM视频并由Real <br />
　　Server服务器负责对外发布和播放。RM和ASF格式可以说各有千秋，通常RM视频更柔和一些，而ASF视频则相对清晰一些。<br />
　　●RMVB格式：这是一种由RM视频格式升级延伸出的新视频格式，它的先进之处在于RMVB视频格式打破了原先RM格式那种平均压缩采样的方式，在保证平均压缩比的基础上合理利用比特率资源，就是说静止和动作场面少的画面场景采用较低的编码速率，这样可以留出更多的带宽空间，而这些带宽会在出现快速运动的画面场景时被利用。这样在保证了静止画面质量的前提下，大幅地提高了运动图像的画面质量，从而图像质量和文件大小之间就达到了微妙的平衡。另外，相对于DVDrip格式，RMVB视频也是有着较明显的优势，一部大小为700MB左右的DVD影片，如果将其转录成同样视听品质的RMVB格式，其个头最多也就400MB左右。不仅如此，这种视频格式还具有内置字幕和无需外挂插件支持等独特优点。要想播放这种视频格式，可以使用RealOnePlayer2.0或RealPlayer8.0加RealVideo9.0以上版本的解码器形式进行播放。 <br />
　　●FLV视频格式<br />
　　FLV 是FLASH VIDEO的简称，FLV流媒体格式是一种新的视频格式，全称为Flash Video。由于它形成的文件极小、加载速度极快，使得网络观看视频文件成为可能，它的出现有效地解决了视频文件导入Flash后，使导出的SWF文件体积庞大，不能在网络上很好的使用等缺点。<br />
　　目前各在线视频网站均采用此视频格式。如新浪播客、56、土豆、酷6、youtube等，无一例外。FLV已经成为当前视频文件的主流格式。<br />
　　FLV就是随着Flash MX的推出发展而来的视频格式，目前被众多新一代视频分享网站所采用，是目前增长最快、最为广泛的视频传播格式。是在sorenson 公司的压缩算法的基础上开发出来的。FLV格式不仅可以轻松的导入Flash 中，速度极快，并且能其到保护版权的作用，并且可以不通过本地的微软或者REAL播放器播放视频。<br />
　　常见的视频编码： <br />
　　1、Microsoft RLE <br />
　　一种8位的编码方式，只能支持到256色。压缩动画或者是计算机合成的图像等具有大面积色块的素材可以使用它来编码，是一种无损压缩方案。 <br />
　　2、Microsoft Video 1 <br />
　　用于对模拟视频进行压缩，是一种有损压缩方案，最高仅达到256色，它的品质就可想而知，一般还是不要使用它来编码AVI。 <br />
　　3、Microsoft H.261和H.263 Video Codec <br />
　　用于视频会议的Codec，其中H.261适用于ISDN、DDN线路，H.263适用于局域网，不过一般机器上这种Codec是用来播放的，不能用于编码。 <br />
　　4、Intel Indeo Video R3.2 <br />
　　所有的Windows版本都能用Indeo video 3.2播放AVI编码。它压缩率比Cinepak大，但需要回放的计算机要比Cinepak的快。 <br />
　　5、Intel Indeo Video 4和5 <br />
　　常见的有4.5和5.10两种，质量比Cinepak和R3.2要好，可以适应不同带宽的网络，但必须有相应的解码插件才能顺利地将下载作品进行播放。适合于装了Intel公司MMX以上CPU的机器，回放效果优秀。如果一定要用AVI的话，推荐使用5.10，在效果几乎一样的情况下，它有更快的编码速度和更高的压缩比。 <br />
　　6、Intel IYUV Codec <br />
　　使用该方法所得图像质量极好，因为此方式是将普通的RGB色彩模式变为更加紧凑的YUV色彩模式。如果你想将AVI压缩成MPEG-1的话，用它得到的效果比较理想，只是它的生成的文件太大了 <br />
　　7、Microsoft MPEG-4 Video codec <br />
　　常见的有1.0、2.0、3.0三种版本，当然是基于MPEG-4技术的，其中3.0并不能用于AVI的编码，只能用于生成支持&#8220;视频流&#8221;技术的ASF文件。 <br />
　　8、DivX- MPEG-4 Low-Motion/Fast-Motion <br />
　　实际与Microsoft MPEG-4 Video code是相当的东西，只是Low-Motion采用的固定码率，Fast-Motion采用的是动态码率，后者压缩成的AVI几乎只是前者的一半大，但质量要差一些。Low-Motion适用于转换DVD以保证较好的画质，Fast-Motion用于转换VCD以体现MPEG-4短小精悍的优势。 <br />
　　9 、DivX 3.11/4.12/5.0 <br />
　　实际上就是DivX，原来DivX是为了打破Microsoft的ASF规格而开发的，现在开发组摇身一变成了Divxnetworks公司，所以不断推出新的版本，最大的特点就是在编码程序中加入了1-pass和2-pass的设置，2-pass相当于两次编码，以最大限度地在网络带宽与视觉效果中取得平衡。
<img src ="http://www.blogjava.net/xiaomage234/aggbug/251878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2009-01-19 13:04 <a href="http://www.blogjava.net/xiaomage234/archive/2009/01/19/251878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>音频格式_百度百科</title><link>http://www.blogjava.net/xiaomage234/archive/2009/01/19/251877.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Mon, 19 Jan 2009 05:01:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2009/01/19/251877.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/251877.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2009/01/19/251877.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/251877.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/251877.html</trackback:ping><description><![CDATA[以下是常见音频文件格式的特点。 <br />
　　要在计算机内播放或是处理音频文件，也就是要对声音文件进行数、模转换，这个过程同样由采样和量化构成，人耳所能听到的声音，最低的频率是从20Hz起一直到最高频率20KHZ，20KHz以上人耳是听不到的，因此音频的最大带宽是20KHZ，故而采样速率需要介于40~50KHZ之间，而且对每个样本需要更多的量化比特数。音频数字化的标准是每个样本16位-96dB的信噪比，采用线性脉冲编码调制PCM，每一量化步长都具有相等的长度。在音频文件的制作中，正是采用这一标准。<br />
<strong>CD格式：正统血脉<br />
</strong>　　当今世界上音质最好的音频格式是什么？当然是CD了。因此要讲音频格式，CD自然是打头阵的先锋。在大多数播放软件的&#8220;打开文件类型&#8221;中，都可以看到＊.cda格式，这就是CD音轨了。标准CD格式也就是44.1K的采样频率，速率88K/秒，16位量化位数，因为CD音轨可以说是近似无损的，因此它的声音基本上是忠于原声的，因此如果你如果是一个音响发烧友的话，CD是你的首选。它会让你感受到天籁之音。CD光盘可以在CD唱机中播放，也能用电脑里的各种播放软件来重放。一个CD音频文件是一个＊.cda文件，这只是一个索引信息，并不是真正的包含声音信息，所以不论CD音乐的长短，在电脑上看到的&#8220;＊.cda文件&#8221;都是44字节长。注意：不能直接的复制CD格式的＊.cda文件到硬盘上播放，需要使用象EAC这样的抓音轨软件把CD格式的文件转换成WAV，这个转换过程如果光盘驱动器质量过关而且EAC的参数设置得当的话，可以说是基本上无损抓音频。推荐大家使用这种方法。<br />
<strong>WAV：无损<br />
</strong>　　是微软公司开发的一种声音文件格式，它符合 PIFFResource Interchange File Format 文件规范，用于保存WINDOWS平台的音频信息资源，被WINDOWS平台及其应用程序所支持。&#8220;*.WAV&#8221;格式支持MSADPCM、CCITT A LAW等多种压缩算法，支持多种音频位数、采样频率和声道，标准格式的WAV文件和CD格式一样，也是44.1K的采样频率，速率88K/秒，16位量化位数，看到了吧，WAV格式的声音文件质量和CD相差无几，也是目前PC机上广为流行的声音文件格式，几乎所有的音频编辑软件都&#8220;认识&#8221;WAV格式。 但缺点是体型过于&#8220;巨大&#8221;。<br />
<strong>AIFF与AU<br />
</strong>　　这里顺便提一下由苹果公司开发的AIFF（Audio Interchange File Format）格式和为UNIX系统开发的AU格式，它们都和WAV非常相像，在大多数的音频编辑软件中也都支持它们这几种常见的音乐格式。<br />
<strong>MP3：流行</strong><br />
　　MP3格式诞生于八十年代的德国，所谓的MP3也就是指的是MPEG标准中的音频部分，也就是MPEG音频层。根据压缩质量和编码处理的不同分为3层，分别对应&#8220;*.mp1"/&#8220;*.mp2&#8221;/&#8220;*.mp3&#8221;这3种声音文件。需要提醒大家注意的地方是：MPEG音频文件的压缩是一种有损压缩，MPEG3音频编码具有10：1~12：1的高压缩率，同时基本保持低音频部分不失真，但是牺牲了声音文件中12KHz到16KHz高音频这部分的质量来换取文件的尺寸，相同长度的音乐文件，用＊.mp3格式来储存，一般只有＊.wav文件的1/10，而音质要次于CD格式或WAV格式的声音文件。由于其文件尺寸小，音质好；所以在它问世之初还没有什么别的音频格式可以与之匹敌，因而为＊.mp3格式的发展提供了良好的条件。直到现在，这种格式还是风靡一时，作为主流音频格式的地位难以被撼动。但是树大招风，MP3音乐的版权问题也一直是找不到办法解决，因为MP3没有版权保护技术，说白了也就是谁都可以用。 <br />
　　MP3格式压缩音乐的采样频率有很多种，可以用64Kbps或更低的采样频率节省空间，也可以用320Kbps的标准达到极高的音质。我们用装有Fraunhofer IIS Mpeg Lyaer3的 MP3编码器（现在效果最好的编码器）MusicMatch Jukebox 6.0在128Kbps的频率下编码一首3分钟的歌曲，得到2.82MB的MP3文件。采用缺省的CBR（固定采样频率）技术可以以固定的频率采样一首歌曲，而VBR（可变采样频率）则可以在音乐&#8220;忙&#8221;的时候加大采样的频率获取更高的音质，不过产生的MP3文件可能在某些播放器上无法播放。我们把VBR的级别设定成为与前面的CBR文件的音质基本一样，生成的VBR MP3文件为2.9MB。<br />
<strong>MIDI：作曲家最爱<br />
</strong>　　经常玩音乐的人应该常听到MIDI（Musical Instrument Digital Interface）这个词，MIDI允许数字合成器和其他设备交换数据。MID文件格式由MIDI继承而来。MID文件并不是一段录制好的声音，而是记录声音的信息，然后在告诉声卡如何再现音乐的一组指令。这样一个MIDI文件每存1分钟的音乐只用大约5～10KB。今天，MID文件主要用于原始乐器作品，流行歌曲的业余表演，游戏音轨以及电子贺卡等。＊.mid文件重放的效果完全依赖声卡的档次。＊.mid格式的最大用处是在电脑作曲领域。＊.mid文件可以用作曲软件写出，也可以通过声卡的MIDI口把外接音序器演奏的乐曲输入电脑里，制成＊.mid文件。<br />
<strong>WMA：最具实力</strong><br />
　　WMA (Windows Media Audio) 格式是来自于微软的重量级选手，后台强硬，音质要强于MP3格式，更远胜于RA格式，它和日本YAMAHA公司开发的VQF格式一样，是以减少数据流量但保持音质的方法来达到比MP3压缩率更高的目的，WMA的压缩率一般都可以达到1：18左右，WMA的另一个优点是内容提供商可以通过DRM（Digital Rights Management）方案如Windows Media Rights Manager 7加入防拷贝保护。这种内置了版权保护技术可以限制播放时间和播放次数甚至于播放的机器等等，这对被盗版搅得焦头乱额的音乐公司来说可是一个福音，另外WMA还支持音频流(Stream)技术，适合在网络上在线播放，作为微软抢占网络音乐的开路先锋可以说是技术领先、风头强劲，更方便的是不用象MP3那样需要安装额外的播放器，而Windows操作系统和Windows Media Player的无缝捆绑让你只要安装了windows操作系统就可以直接播放WMA音乐，新版本的Windows Media Player7.0更是增加了直接把CD光盘转换为WMA声音格式的功能，在新出品的操作系统Windows XP中，WMA是默认的编码格式，大家知道Netscape的遭遇，现在&#8220;狼&#8221;又来了。WMA这种格式在录制时可以对音质进行调节。同一格式，音质好的可与CD媲美，压缩率较高的可用于网络广播。虽然现在网络上还不是很流行，但是在微软的大规模推广下已经是得到了越来越多站点的承认和大力支持，在网络音乐领域中直逼＊.mp3，在网络广播方面，也正在瓜分Real打下的天下。因此，几乎所有的音频格式都感受到了WMA格式的压力。<br />
　　时下的MP3支持格式最常见的是MP3和WMA。MP3由于是有损压缩，因此讲求采样率，一般是44.1KHZ。另外，还有比特率，即数据流，一般为8---320KBPS。在MP3编码时，还看看它是否支持可变比特率（VBR），现在出的MP3机大部分都支持，这样可以减小有效文件的体积。WMA则是微软力推的一种音频格式，相对来说要比MP3体积更小。<br />
<strong>RealAudio：流动旋律</strong><br />
　　RealAudio主要适用于在网络上的在线音乐欣赏，现在大多数的用户仍然在使用56Kbps或更低速率的Modem，所以典型的回放并非最好的音质。有的下载站点会提示你根据你的Modem速率选择最佳的Real文件。现在real的的文件格式主要有这么几种：有RA（RealAudio）、RM（RealMedia，RealAudio G2）、RMX（RealAudio Secured），还有更多。这些格式的特点是可以随网络带宽的不同而改变声音的质量，在保证大多数人听到流畅声音的前提下，令带宽较富裕的听众获得较好的音质。 <br />
　　近来随着网络带宽的普遍改善，Real公司正推出用于网络广播的、达到CD音质的格式。如果你的RealPlayer软件不能处理这种格式，它就会提醒你下载一个免费的升级包。<br />
<strong>VQF：无人问津</strong><br />
　　VQF是 雅马哈公司开发的一种格式是，它的核心是减少数据流量但保持音质的方法来达到更高的压缩比，可以说技术上也是很先进的，但是由于宣传不力，这种格式难有用武之地。＊.vqf可以用雅马哈的播放器播放。同时雅马哈也提供从＊.wav文件转换到＊.vqf文件的软件。 此文件缺少特点外加缺乏宣传，现在几乎已经宣布死刑了。<br />
<strong>OGG：新生代音频格式</strong><br />
　　Ogg全称应该是OGG Vobis(ogg Vorbis) 是一种新的音频压缩格式，类似于MP3等现有的音乐格式。但有一点不同的是，它是完全免费、开放和没有专利限制的。OGG Vobis有一个很出众的特点，就是支持多声道，随着它的流行，以后用随身听来听DTS编码的多声道作品将不会是梦想。<br />
　　Vorbis 是这种音频压缩机制的名字，而Ogg则是一个计划的名字，该计划意图设计一个完全开放性的多媒体系统。目前该计划只实现了OggVorbis这一部分。<br />
　　Ogg Vorbis文件的扩展名是.OGG。这种文件的设计格式是非常先进的。现在创建的OGG文件可以在未来的任何播放器上播放，因此，这种文件格式可以不断地进行大小和音质的改良，而不影响旧有的编码器或播放器。<br />
　　ogg格式完全开源，完全免费， 和mp3不相上下的新格式。<br />
<strong>AAC: 前途无量</strong><br />
　　AAC（高级音频编码技术 Advanced Audio Coding)，是杜比实验室为音乐提供的技术，最大能容纳48通道的音轨，采样率达96 KHz。出现于1997年，是基于MPEG-2的音频编码技术。由Fraunhofer IIS、杜比、苹果、AT&amp;T、索尼等公司共同开发，以取代mp3格式。2000年，MPEG-4标准出台，AAC从新整合了其特性，故现又称MPEG-4 AAC，即m4a。<br />
　　AAC作为一种高压缩比的音频压缩算法，AAC通常压缩比为18:1，也有资料说为20:1，远远超过了AC-3、MP3等较老的音频压缩算法。一般认为，AAC格式在96Kbps码率的表现超过了128Kbps的MP3音频。AAC另一个引人注目的地方就是它的多声道特性，它支持1～48个全音域音轨和15个低频音轨。除此之外，AAC最高支持96KHz的采样率，其解析能力足可以和DVD-Audio的PCM编码相提并论，因此，它得到了DVD论坛的支持，成为了下一代DVD的标准音频编码。<br />
<strong>APE 无损压缩格式<br />
</strong>　　新一代的无损音频格式。 APE的本质，其实它是一种无损压缩音频格式。庞大的WAV音频文件可以通过Monkey''s Audio这个软件进行&#8220;瘦身&#8221;压缩为APE。很时候它被用做网络音频文件传输，因为被压缩后的APE文件容量要比WAV源文件小一半多，可以节约传输所用的时间。更重要的是，通过Monkey's Audio解压缩还原以后得到的WAV文件可以做到与压缩前的源文件完全一致。所以APE被誉为&#8220;无损音频压缩格式&#8221;，Monkey''s Audio被誉为&#8220;无损音频压缩软件&#8221;。<br />
<strong>　　FLAC格式<br />
</strong>　　非常成熟的无损压缩格式，名气不在APE之下！FLAC是FreeLosslessAudioCodec的简称，该格式的源码完全开放，而且兼容几乎所有的操作系统平台。它的编码算法相当成熟，已经通过了严格的测试，而且据说在文件点损坏的情况下依然能够正常播放（这一点我不曾试过）。该格式不仅有成熟的Windows制作程序，还得到了众多第三方软件的支持。此外该格式是唯一的已经得到硬件支持的无损格式，Rio公司的硬盘随身听Karma，建伍的车载音响MusicKeg以及PhatBox公司的数码播放机都能支持FLAC格式。<br />
　　Tom's Audio Kompressor（TAK格式）<br />
　　TAK是一种新型的无损音频压缩格式，全称是Tom's Audio Kompressor，产于德国。目前最新版本还停留在1.01（2007年06月02日）。它类似于FLAC和APE，总体来说，压缩率类似APE而且解压缩速度类似FLAC，算是综合了两者的优点。另外，用此格式的编码器压缩的音频是VBR，即可变比特率的。<br />
　　几大特点：<br />
　　-较为优秀的压缩率。使用Extra参数的压缩率类似APE的High参数，而使用TAK最快的压缩参数Turbo得到的结果和FLAC压缩率最大的参数效果有得一比。<br />
　　-较快的压缩速度。作者说在相同压缩率的情况下，据他了解尚未有别的格式能够比TAK的Turbo和Fast的参数压缩得更快。<br />
　　-非常快的解压速度。类似于FLAC的解压速度。<br />
　　-支持很多常用音频格式转换为TAK。<br />
　　-流支持。每隔两秒，包含解码所需全部信息的一桢会被插入到音频中。<br />
　　-容错度。1比特的信息出错，最多影响到250毫秒的音频。由于有上文提到的技术支持，利用本格式压缩的损坏严重的音频也可照样播放，代价是损坏的部分由静音代替。<br />
　　-错误校验。24比特的CRC校验用于每一桢上。<br />
　　-简单快速的查找能力。即在你需要从中间某一点播放的时候，能够很快地找到你想要的地方开始播放，定位也十分准确。<br />
　　-支持音频信息。同时支持利用外挂CUE分割音轨和添加音频信息。类似APE等。<br />
评论<br />
　　作为数字音乐文件格式的标准， WAV 格式容量过大，因而使用起来很不方便。因此，一般情况下我们把它压缩为MP3或 WMA 格式。压缩方法有无损压缩，有损压缩，以及混成压缩。MPEG, JPEG就属于混成压缩，如果把压缩的数据还原回去，数据其实是不一样的。当然，人耳是无法分辨的。因此，如果把 MP3, OGG格式从压缩的状态还原回去的话，就会产生损失。然而， APE 格式即使还原，也能毫无损失地保留原有音质。所以， APE可以无损失高音质地压缩和还原。在完全保持音质的前提下，APE的压缩容量有了适当的减小。拿一个最为常见的38MB WAV文件为例，压缩为 APE 格式后为25MB 左右，比开始足足少了13MB。而且MP3容量越来越大的今天，25M的歌曲已经算不上什么庞然大物了。以1GB的mp3来说可以放入4张CD，那就是40多首歌曲，已经足够了！
<img src ="http://www.blogjava.net/xiaomage234/aggbug/251877.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2009-01-19 13:01 <a href="http://www.blogjava.net/xiaomage234/archive/2009/01/19/251877.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>小谈RMVB格式[转]</title><link>http://www.blogjava.net/xiaomage234/archive/2009/01/19/251865.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Mon, 19 Jan 2009 04:10:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2009/01/19/251865.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/251865.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2009/01/19/251865.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/251865.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/251865.html</trackback:ping><description><![CDATA[<p>MP3，MP4的视频功能从出现到今天，算起来也有三，四年时间了，但是现在的视频播放能力上，除了显示屏越来越大，分辨率，色度越来越高之外，并没有什么太大的转变，视频编码换了不少，但想要在随身播放器上播放视频，绝大多数还是需要转换，而这正是消费者最头疼的事。并且MP4播放器类产品与PSP等还有所不同，各家品牌之间的MP4产品并不能同一编码和格式，因此不能像PSP那样有一个提供大家共享的资源社区，大多数时候消费者还是需要自行转换格式，而一般二次压缩之后的视频文件或多或少的存在显示缺陷，并且浪费了大量的转换时间。因此一种易获得，资源多的视频格式支持便成为了消费者最迫切的需求。而RM/RMVB格式正好满足了这一需要。随着几款低价RM/RMVB格式直接支持的MP4播放器的上市，RMVB在网络盛行之后，又成为了随身播放领域炙手可热的话题。在此，我们不妨就一起来看看什么是RMVB格式，RMVB格式又有那些优势？<br />
<p align="center"><img height="327" alt="" src="http://www.8080.net/pics/20077/7311708410.jpg" width="402" border="1" p="100" h="327" w="402" />
<p align="center">早期的Realplayer Pluse播放器
<p>RMVB源自于Real Network公司的RealMedia(RM)格式，该公司是拥有悠久历史，在网络媒体上具有强大的技术力量。RealMedia普遍的特点是体积小，能够适应非常窄的网络带宽，RMVB是原有的RM格式的改进，从RM9开始支持VBR编码模式，并且改进了编码算法，使其具有更高的要缩率和品质。它的推出在一定程度上弥补了一些原有的缺憾。相对于随身领域而言，RMVB格式最大的优势莫过于<font style="background-color: #ff00ff" color="#ffff00">动态比特率，&#8220;雾化&#8221;技术和无须转换</font>这三点了。<br />
<p align="center"><img height="369" alt="" src="http://www.8080.net/pics/20077/7311624221.jpg" width="402" border="1" p="100" h="369" w="402" />
<p align="center">现在的RealOne Player
<p align="center"><span>
<p align="center">
<p>区别与之前的RM格式，RMVB最大的特色就是加入了<font color="#ffff00"><span style="background-color: #ff0000"><font color="#ffff00">VBR技术</font>，也就是<font color="#ffff00">Variable Bit Rate（可改变之比特率）</font></span></font>的英文缩写。VBR编码是多媒体文件广泛使用的编码方式，例如常见的Mp3、wma、mpeg1、2、4都支持VBR编码模式！以往我们在播放常见的RM格式电影时，可以在某些播放器看到&#8220;xxxKbps&#8221;字样，这就是比特率。影片的静止画面和运动画面对压缩采样率的要求是不同的，如果始终保持固定的比特率，会对比特利用造成浪费。 RMVB打破了原先RM格式那种平均压缩采样的方式，在保证平均压缩比的基础上，编码器会根据画面变化的复杂程度设定动态的不同的位率，最高位率一般为平均平均位率两倍的最大位率。将较高的比特率用于复杂的动态画面（歌舞、飞车、战争等），而在静态画面中则灵活地转为较低的采样率，合理地利用了比特率资源，使得在牺牲少部分影片质量情况下最大限度地压缩了影片的大小，最终拥有了和固定比特率编码的文件相近的视听效果，可谓体积与清晰度&#8220;鱼与熊掌兼得&#8221;。<br />
<p align="center"><span><font size="+0"><img alt="" src="http://www.8080.net/pics/20075/5221529542.jpg" border="1" /></font></span>
<p>除了动态比特率外，RMVB格式与传统视频格式另一个最大的区别就在于：压缩文件时RMVB采用的<font style="background-color: #ff0000" color="#ffff00">特殊的&#8220;雾化&#8221;技术</font>，而不是传统丢帧的方式。从平时的使用中，我们就可以看出来，一般播放RMVB格式的文件，在放大到一定程度或者全屏时，画面会显得模糊，而不是出现&#8220;马赛克&#8221;现象。这就是RMVB格式的优势。在很低的位率下，画面会显得很朦胧，但不会出现色块。而位率超过700kbps之后其画质开始步入DVDRip！因此RMVB可以在非常低的位率实现相当好的效果。<br />
<p align="center"><span><img height="280" alt="" src="http://www.8080.net/pics/20076/62315573310.jpg" width="502" border="1" p="100" h="280" w="502" /></span>
<p>就目前的市场来看，歌美X750，<a href="http://www.8080.net/key_search_new.asp?key=755" target="_blank"><span><font color="#ffcc00"><strong>艾诺</strong></font></span></a>V2000等几款产品，都采用了主频达到500MHz的ADI Blackfin 533处理器，这样一来网络上超过85%的RMVB文件都可以直接在MP4播放器上直接播放了。而我们从网上下载的绝大多数RMVB电影显示都超过了480P，而这个在电脑上播放的分辨率换到屏幕尺寸相对较小的MP4播放器时，清晰度就大大提高了，换句话说，由于没有进行二次的转换压缩，配合RMVB格式本身特殊&#8220;雾化&#8221;技术和动态比特率两个优势，实现了另一种形式的&#8220;高清&#8221;！在随身播放器容量不断增大的今天，我们可以轻松的播放器中拷入多部电影。而无须转换，直接播放，并且比以往任何一种二次压缩的视频格式更加清晰，流畅！这就是直接支持RMVB格式播放器相对于现有视频播放器最大的优势所在！</span></p>
<img src ="http://www.blogjava.net/xiaomage234/aggbug/251865.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2009-01-19 12:10 <a href="http://www.blogjava.net/xiaomage234/archive/2009/01/19/251865.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MP3文件格式解析[摘]</title><link>http://www.blogjava.net/xiaomage234/archive/2008/12/29/248909.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Mon, 29 Dec 2008 07:36:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2008/12/29/248909.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/248909.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2008/12/29/248909.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/248909.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/248909.html</trackback:ping><description><![CDATA[<p><span style="font-size: 9pt"><span>1，<span style="font: 7pt Times New Roman; font-size-adjust: none; font-stretch: normal"> </span></span></span><span style="font-size: 9pt">MP3</span><span style="font-size: 9pt">简介</span> </p>
<p><span style="font-size: 9pt">MP3</span><span style="font-size: 9pt">是今天一种常见的音乐格式，但恐怕除了工作要求之外，有兴趣对此进行研究的人恐怕不多。所以，当我打算做<span>MP3</span>解码方面的工作时，在找资料时也颇费了一番周折，同时也觉得很有趣。所以想在这里分享一下自己的心得，做一个总结性的介绍。这样有兴趣的同志也可以对此有一个大概了解，尽快入门。<br />
<br />
MP3</span><span style="font-size: 9pt">是<span>MPEG-1 Audio Layer 3</span>的简称，是当今比较流行的一种数字音频编码和有损压缩格式（有<span>Layer 3</span>，也必然有<span>Layer1</span>和<span>Layer2</span>，也就是<span>MP1</span>和<span>MP2</span>，但不在本文讨论范围之内）。<span>MP3</span>技术的应该可以用来大幅度的降低音频文件存储所需要的空间。它丢掉脉冲编码调制（<span>PCM</span>）音频数据中对人类听觉不重要得数据，从而达到了较高的压缩比（高达<span>12</span>：<span>1</span>－<span>10</span>：<span>1</span>）。简单地说，<span>MP3</span>在编码时先对音频文件进行频谱分析，然后用过滤器滤掉噪音电平，接着通过量化的方式将剩下的每一位打散排列，最后形成有较高压缩比的<span>MP3</span>文件，并使压缩后的文件在回放时也能够达到比较接近原音源的效果。<br />
<br />
MP3</span><span style="font-size: 9pt">的音频质量取决于它的<span>Bitrate</span>和<span>Sampling frequency</span>，以及编码器质量。<span>MP3</span>的典型速度介于每秒<span>128</span>到<span>320kb</span>之间。采样频率也有<span>44.1</span>，<span>48</span>和<span>32 kHz</span>三种频率，比较常见的是采用<span>CD</span>采样频率——<span>44.1kHz</span>。常用的编码器是<span>LAME</span>，它完全遵循<span>LGPL</span>的<span>MP3</span>编码器，有着良好的速度和音质。</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: 9pt"><span>2，<span style="font: 7pt Times New Roman; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 9pt">MP3</span><span style="font-size: 9pt">文件格式</span> </p>
<p><span style="font-size: 9pt">用一个二进制查看器（比如<span>Ultra-Edit</span>）打开一个<span>MP3</span>文件，就能看到一大堆看似杂乱无序的数据。但只要用心了解就会知道，其实，这一切都是有规律可循的。<br />
<br />
MP3</span><span style="font-size: 9pt">文件是由帧（<span>frame</span>）构成，帧是<span>MP3</span>文件的最小组成单位。每帧都包含帧头，并可以计算帧的长度。根据帧的性质不同，文件主要分为三个部分，<span>ID3v2</span>标签帧，数据帧和<span>ID3v1</span>标签帧。并非每个<span>MP3</span>文件都有<span>ID3v2</span>，但是数据帧和<span>ID3v1</span>帧是必须的。<span>ID3v2</span>在文件头，以字符串&#8220;<span>ID3<span><span>&#8221;</span></span><span>为标志，包含了<span>演唱者<span>，作曲，专辑等信息，长度不固定，扩展了ID3V1</span></span></span></span>的信息量。<span>ID3v1</span>在文件结尾，以字符串&#8220;<span>TAG</span>&#8221;为标记，其长度是固定的<span>128</span>个字节，包含了演唱者、歌名、专辑、年份等信息。<br />
<br />
I, ID3V2</span> </p>
<p style="text-align: left" align="left"><span style="font-size: 9pt">ID3V2</span><span style="font-size: 9pt">到现在一共有四个版本，但流行的播放软件一般只支持第三版，既</span><span style="font-size: 9pt">ID3V2.3</span><span style="font-size: 9pt">。</span><span style="font-size: 9pt">每个<span>ID3V2.3 </span>的标签都一个标签头和若干个标签帧或一个扩展标签头组成。关于曲目的信息如标题、作者等都存放在不同的标签帧中，扩展标签头和标签帧并不是必要的，但每个标签至少要有一个标签帧。标签头和标签帧一起顺序存放在<span>MP3 </span>文件的首部。</span> </p>
<p style="text-align: left" align="left"><span style="font-size: 9pt">标签头</span> </p>
<p><span style="font-size: 9pt">长度为<span>10</span>个字节，位于文件首部，其数据结构如下：</span> </p>
<p style="text-indent: 21pt; text-align: left" align="left"><span style="font-size: 9pt">char Header[3]; /* </span><span style="font-size: 9pt">字符串<span> "ID3" */</span></span> </p>
<p style="text-indent: 21pt; text-align: left" align="left"><span style="font-size: 9pt">char Ver; <span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp;</span>/* </span><span style="font-size: 9pt">版本号<span>ID3V2.3 </span>就记录<span>3 */</span></span> </p>
<p style="text-indent: 21pt; text-align: left" align="left"><span style="font-size: 9pt">char Revision; /* </span><span style="font-size: 9pt">副版本号此版本记录为<span>0 */</span></span> </p>
<p style="text-indent: 21pt; text-align: left" align="left"><span style="font-size: 9pt">char Flag; <span>&nbsp;&nbsp;&nbsp;</span><span> </span>/* </span><span style="font-size: 9pt">存放标志的字节，这个版本只定义了三位，很少用到，可以忽略 <span>*/</span></span> </p>
<p style="text-indent: 21pt; text-align: left" align="left"><span style="font-size: 9pt">char Size[4]; /* </span><span style="font-size: 9pt">标签大小，除了标签头的<span>10 </span>个字节的标签帧的大小 <span>*/</span></span> </p>
<p><span style="font-size: 9pt">标签大小为四个字节，但每个字节只用低<span>7</span>位，最高位不使用，恒为<span>0</span>，其格式如下：<br />
0xxxxxxx 0xxxxxxx 0xxxxxxx 0xxxxxxx</span> </p>
<p><span style="font-size: 9pt">计算公式如下：</span> </p>
<p><span style="font-size: 9pt">ID3V2_frame_size = (int)(Size[0] &amp; 0x7F) &lt;&lt; 21<br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp;</span><span> </span>| (int)(Size[1] &amp; 0x7F) &lt;&lt; 14<br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span> </span><span>&nbsp;&nbsp;&nbsp;</span>| (int)(Size[2] &amp; 0x7F) &lt;&lt; 7<br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span> </span><span>&nbsp;&nbsp;&nbsp;</span>| (int)(Size[3] &amp; 0x7F) + 10;</span> </p>
<p><span style="font-size: 9pt"><br />
标签帧</span> </p>
<p><span style="font-size: 9pt">每个标签帧都有一个<span>10</span>字节的帧头和至少一个字节的不固定长度的内容组成。它们是顺序存放在文件中，由各自特定的标签头来标记帧的开始。其帧的结构如下：</span> </p>
<p style="text-align: left" align="left"><span style="font-size: 9pt">char FrameID[4]; <span>&nbsp;&nbsp;</span>/*</span><span style="font-size: 9pt">用四个字符标识一个帧，说明其内容 <span>*/</span></span> </p>
<p style="text-align: left" align="left"><span style="font-size: 9pt">char Size[4]; <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>/* </span><span style="font-size: 9pt">帧内容的大小，不包括帧头，不得小于<span>1 */</span></span> </p>
<p style="text-align: left" align="left"><span style="font-size: 9pt">char Flags[2];<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>/* </span><span style="font-size: 9pt">存放标志，只定义了<span>6 </span>位，此处不再说明 <span>*/</span></span> </p>
<p><span style="font-size: 9pt">常用帧标识：</span> </p>
<p><span style="font-size: 9pt">TIT2</span><span style="font-size: 9pt">：标题<br />
TPE1</span><span style="font-size: 9pt">：作者<br />
TALB</span><span style="font-size: 9pt">：专辑<br />
TRCK</span><span style="font-size: 9pt">： 音轨，格式：<span>N/M</span>，<span>N</span>表示专辑中第几首，<span>M</span>为专辑中歌曲总数<br />
TYER</span><span style="font-size: 9pt">：年份<br />
TCON</span><span style="font-size: 9pt">：类型<br />
COMM</span><span style="font-size: 9pt">：备注，格式：&#8220;<span>eng\0</span>备注内容&#8221;，其中<span>eng</span>表示所使用的语言<br />
帧大小为四个字节所表示的整数大小。</span> </p>
<p><span style="font-size: 9pt"><br />
II, ID3V1</span> </p>
<p><span style="font-size: 9pt">其数据结构如下：</span> </p>
<p style="text-align: left" align="left"><span style="font-size: 9pt">char Header[3]; <span>&nbsp;&nbsp;&nbsp;</span>/* </span><span style="font-size: 9pt">标签头必须是<span>"TAG"</span>否则认为没有标签 <span>*/</span><br />
char Title[30]; <span>&nbsp;&nbsp;&nbsp;</span>/* </span><span style="font-size: 9pt">标题 <span>*/</span><br />
char Artist[30]; <span>&nbsp;&nbsp;</span>/* </span><span style="font-size: 9pt">作者 <span>*/</span><br />
char Album[30]; <span>&nbsp;&nbsp;&nbsp;</span>/* </span><span style="font-size: 9pt">专集 <span>*/</span><br />
char Year[4]; <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>/* </span><span style="font-size: 9pt">出品年代 <span>*/</span><br />
char Comment[28]; /* </span><span style="font-size: 9pt">备注 <span>*/</span><br />
char reserve; <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>/* </span><span style="font-size: 9pt">保留 <span>*/</span><br />
char track;; <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>/* </span><span style="font-size: 9pt">音轨 <span>*/</span><br />
char Genre; <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>/* </span><span style="font-size: 9pt">类型 <span>*/</span></span> </p>
<p><span style="font-size: 9pt">其实，关于最后<span>31</span>个字节还存在另外一个版本，就是<span>30</span>个字节的<span>Comment</span>和一个字节的<span>Genre.</span></span> </p>
<p><span style="font-size: 9pt">有了上述的这些信息，我们就可以自己写代码，从<span>MP3</span>文件中抓取信息以及修改文件名了。但是，如果真的想写一个播放软件，还是需要读它的数据帧，并进行解码。</span> </p>
<p><span style="font-size: 9pt"><br />
III, </span><span style="font-size: 9pt">数据帧</span> </p>
<p><span style="font-size: 9pt">数据帧往往有多个，至于有多少，由文件大小和帧大小来决定。每个帧都有一个四字节长的帧头，接下来可能有两个字节的<span>CRC</span>校验，其存在由帧头中的具体信息决定。接着就是帧的实体数据，也就是<span>MAIN_DATA</span>了。</span> </p>
<p><span style="font-size: 9pt">A,</span><span style="font-size: 9pt">帧头结构如下：</span> </p>
<p><span style="font-size: 9pt">位置<span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span>长度<span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span>描述<br />
（<span>BIT</span>）<span><span>&nbsp;&nbsp;</span></span>（<span>BITS</span>）<br />
————————————————————————————<br />
31</span><span style="font-size: 9pt">－<span>19<span>&nbsp;&nbsp;&nbsp;</span>12<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Frame sync(0xFFF)</span><br />
18/17<span>&nbsp;&nbsp;&nbsp;&nbsp;</span>2<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Layer, 00 &#8211; reserved, 01 &#8211; Layer III<br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp;</span>10 &#8211; Layer II, 11 </span><span style="font-size: 9pt">－<span> Layer I</span><br />
16<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>1<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>protection_bit, 0 </span><span style="font-size: 9pt">意味着受<span>CRC</span>保护，帧头后面跟<span>16</span>位的<span>CRC</span>。<br />
15-12<span>&nbsp;&nbsp;&nbsp;&nbsp;</span>4<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>bitrate_index, </span><span style="font-size: 9pt">比特率<br />
11-10<span>&nbsp;&nbsp;&nbsp;&nbsp;</span>2<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>sampling_frequency, <span>&nbsp;&nbsp;&nbsp;</span>00 &#8211; 44.1KHz, 01 &#8211; 48KHz<br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span> </span><span>&nbsp;&nbsp;&nbsp;</span>10 &#8211; 32 KHz,<span>&nbsp;&nbsp;</span>11 &#8211; </span><span style="font-size: 9pt">保留<br />
9<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>1<span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span>padding_bit,1 </span><span style="font-size: 9pt">意味着帧里包含<span>padding</span>位，仅当采样频率为<span>44.1KHz</span>时发生。<br />
8<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>1<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>private_bit<br />
7</span><span style="font-size: 9pt">－<span>6<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>2<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>mode,<span>&nbsp;&nbsp;&nbsp;&nbsp;</span>00</span>－<span>stereo,<span>&nbsp;&nbsp;&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp; 01-joint stereo(intensity stereo and/or ms_stereo)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>11- dual_channel, 11 &#8211; single_channel<br />
5-4<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>2 <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>mode_extension,</span><span style="font-size: 9pt">在<span>Layer III</span>中表示使用了哪一种<span>joint stereo</span>编码方式。<br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Intensity_stereo<span>&nbsp;&nbsp;&nbsp;</span>ms_stereo<br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>00<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>off<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>off<br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>01<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>on<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>off<br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>10<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>off<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>on<br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>11<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>on<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>on<br />
3<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>1 <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>copyright,1 </span><span style="font-size: 9pt">表示受版权保护。<br />
2<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>1 <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>original</span><span style="font-size: 9pt">，<span>0</span>表示该<span>bitstream</span>是一个<span>copy</span>，<span>1</span>表示是<span>original.</span><br />
1-0<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>2<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>emphasis</span><span style="font-size: 9pt">，表示会使用哪一种<span>de-emphasis</span>。<br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>00 </span><span style="font-size: 9pt">－<span> no emphasis,<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>01 &#8211; 50/15 microsec. Emphasis<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>10 &#8211; reserved,<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>11 &#8211; CCITT J.17</span> </p>
<p><span style="font-size: 9pt"><span>1)<span style="font: 7pt Times New Roman; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 9pt">无论帧长是多少，每帧的播放时间都是<span>26ms</span></span> </p>
<p><span style="font-size: 9pt"><span>2)<span style="font: 7pt Times New Roman; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 9pt">数据帧大小：</span> </p>
<p><span style="font-size: 9pt">FrameSize = 144 * Bitrate / SamplingRate + PaddingBit<br />
当<span>144 * Bitrate / SamplingRate</span>不能被<span>8</span>整除，则加上相应的<span>paddingBit.</span> <br />
</span></p>
<p><span style="font-size: 9pt">B,MAIN_DATA:</span> </p>
<p><span style="font-size: 9pt">MP3</span><span style="font-size: 9pt">的<span>granule</span>包含<span>18 * 32</span>个<span>subband</span>采样。每个数据帧含有两个<span>granule</span>的数据，其内容结如下：</span><br />
<span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>- main_data_end pointer<br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>- side info for both granules (scfsi)<br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>- side info granule 1<br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>- side info granule 2<br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>- scalefactors and Huffman code data granule 1<br />
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>- scalefactors and Huffman code data granule 2</span> </p>
<p><span style="font-size: 9pt">主要数据里包含了<span>scalefactors, Huffman encoded data</span>和<span>ancillary information</span>。其内容不再详叙，可以参考<span>MP3 SPEC</span>－<span>IS0 11172-3 AUDIO PART</span>。我们一般用的都是立体声，<span>scfsi</span>的长度为<span>32</span>个字节。</span> </p>
<p><span style="font-size: 9pt">这里要解释的一个概念就是位流――<span>bitstream</span>。我们平常接触到的数据都是整数，最小的单位就是<span>byte</span>后者<span>char</span>。虽然我们也会用一个字节里的不同位来表示不同的含义，但总的来说，我们在出来数据的时候还是把它当作一个个字节看待。但对<span>MP3</span>这种数据格式来说，这是行不通的。在解码时，它的数据输入就是一个个比特流。其中一个或几个比特会是你的采样数据或者信息编码。你需要从整个<span>MAIN_DATA</span>里提取你所需要的以<span>BIT</span>为单位的参数和输入信号，从而进行解码。所以我们需要一个子程序，<span>getbit(n)</span>，也就是从缓冲中提取所需要的位，并形成一个新的整数，作为我们的输出。</span> </p>
<p><span style="font-size: 9pt">C,LAME</span><span style="font-size: 9pt">标签帧</span> </p>
<p><span style="font-size: 9pt">可是，当你真的打开一个<span>MP3</span>文件的时候，你会发现，很奇怪，很多时候第一个数据帧的帧头后面的<span>32</span>个字节居然都为<span>0</span>，这是为什么呢，这么奇怪的解码信息该如何解释？找到<span>MP3 INFO TAG REV SPECIFICATION</span>的网站，我才明白，原来第一帧并不是真正的数据帧，而是<span>LAME</span>编码的标志帧。</span> </p>
<p><span style="font-size: 9pt">这里又要牵涉到两个概念：<span>CBR</span>和<span>VBR</span>。<span>CBR</span>表示比特率不变，也就是每帧的长度是一致的，它以字符串&#8220;<span>INFO</span>&#8221;为标记。<span>VBR</span>是<span>Variable BitRate</span>的简称，也就是每帧的比特率和帧的长度是变化的，它以字符串&#8220;<span>Xing</span>&#8221;为标记。同时，它还存放了<span>MP3</span>文件里帧的总个数，和<span>100</span>个字节的播放总时间分段的帧的<span>INDEX</span>，还有其他一些参数，这被称为<span>Zone A</span>，传统<span>Xing VBR</span>标签数据，共<span>120</span>个字节。</span> </p>
<p><span style="font-size: 9pt">在二进制文本编辑器里我们还可看到一个字符串&#8220;<span>LAME</span>&#8221;，并且后面清楚地跟着版本号。这就是<span>20</span>个字节的<span>Zone B</span>初始<span>LAME</span>信息，表示该文件是用<span>LAME</span>编码技术。接下来一直到该帧结束就是<span>Zone C</span>－<span>LAME</span>标签。</span> </p>
<p dragover="true"><span style="font-size: 9pt"><span>3，<span style="font: 7pt Times New Roman; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 9pt">相关资料</span> </p>
<p dragover="true"><span style="font-size: 9pt">&#215; <span><a href="http://gabriel.mp3-tech.org/mp3infotag.html"><font color="#8d171c">Mp3 Info Tag rev 1 specifications - draft 0</font></a></span></span> </p>
<p style="text-align: left" align="left" dragover="true"><span style="font-size: 9pt">&#215; <a href="http://bbs.gliet.edu.cn/bbs/index.php?act=Attach&amp;type=post&amp;id=1813051"><font color="#8d171c"><span>MP3 </span>文件格式</font></a></span> </p>
<span style="font-size: 9pt">&#215;</span><span style="font-size: 9pt"> <a href="http://www.ece.cmu.edu/~ece796/documents/MPEG-1_Audio_CD.doc"><font color="#8d171c">MP3 SPEC</font></a></span><a href="http://www.ece.cmu.edu/~ece796/documents/MPEG-1_Audio_CD.doc"><span style="font-size: 9pt"><font color="#8d171c">－<span>IS0 11172-3 AUDIO PART</span></font></span></a><br />
<br />
<p>Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1688758</p>
<img src ="http://www.blogjava.net/xiaomage234/aggbug/248909.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2008-12-29 15:36 <a href="http://www.blogjava.net/xiaomage234/archive/2008/12/29/248909.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>抛弃FLV，迎接MP4——制作Flash Player支持的H.264视频格式[转]</title><link>http://www.blogjava.net/xiaomage234/archive/2008/12/23/247950.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Tue, 23 Dec 2008 09:44:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2008/12/23/247950.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/247950.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2008/12/23/247950.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/247950.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/247950.html</trackback:ping><description><![CDATA[转自：http://www.zengrong.net/?p=393<br />
<div class="entry-date"><abbr class="published" title="2007-12-07T00:17:18+0000">2007-12-7 &#8211; 12:17 上午</abbr> <span class="meta-sep">|</span> <span class="author vcard">由 <a class="url fn n" title="显示所有 zrong 发布的文章" href="http://www.zengrong.net/?author=1">zrong</a> 发布</span> <span class="meta-sep">|</span> 1,761 次查看 </div>
<div class="entry-content">
<p>Flash Player 9.0.115发布了，这是一个支持<a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a>的正式版本。关于<a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a>，已经说得太多，播放<a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a>的视频也很简单，用NetStream即可（也就是播放<a class="st_tag internal_tag" title="标签 FLV 下的日志" href="http://www.zengrong.net/?tag=flv">FLV</a>的那一套，想了解的可以看<a title="xploring Flash Player support for high-definition H.264 video and AAC audio" href="http://www.adobe.com/devnet/flashplayer/articles/hd_video_flash_player.html" target="_blank">这篇官方提供的教程</a>），但是怎么把现有的视频压缩成Flash Player支持的<a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a>格式呢？</p>
<h3>首先，要了解Flash Player 9.0.115对视频编码到底支持到哪个程度。</h3>
<p>下面是Adobe官方提供的一个Flash Player支持的视频编码列表（<a title="List of codecs supported by Adobe Flash Player" href="http://kb.adobe.com/selfservice/viewContent.do?externalId=kb402866&amp;sliceId=1" target="_blank">原文</a>）：</p>
<table cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr bgcolor="#e6e6fa">
            <td valign="top" width="200"><strong>视频编码</strong></td>
            <td valign="top" width="150"><strong>SWF 文件格式版本(发布的版本)</strong></td>
            <td valign="top" width="150"><strong>支持播放的最小Flash Player版本</strong></td>
        </tr>
        <tr>
            <td valign="top" width="200"><strong>Sorenson Spark</strong></td>
            <td valign="top" width="150">6</td>
            <td valign="top" width="150">6</td>
        </tr>
        <tr>
            <td valign="top" width="200"><strong>On2 VP6</strong></td>
            <td valign="top" width="150">6</td>
            <td valign="top" width="150">8</td>
        </tr>
        <tr>
            <td valign="top" width="200"><strong><a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a> (MPEG-4 Part 10)</strong></td>
            <td valign="top" width="150">9</td>
            <td valign="top" width="150">9.0.115.0*</td>
        </tr>
    </tbody>
</table>
<table cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr bgcolor="#e6e6fa">
            <td valign="top" width="200"><strong>音频编码</strong></td>
            <td valign="top" width="150"><strong>SWF 文件格式版本(发布的版本)</strong></td>
            <td valign="top" width="150"><strong>支持播放的最小Flash Player版本</strong></td>
        </tr>
        <tr>
            <td valign="top" width="200"><strong>ADPCM</strong></td>
            <td valign="top" width="150">6</td>
            <td valign="top" width="150">6</td>
        </tr>
        <tr>
            <td valign="top" width="200"><strong>MP3</strong></td>
            <td valign="top" width="150">6</td>
            <td valign="top" width="150">6</td>
        </tr>
        <tr>
            <td valign="top" width="200"><strong>HE-<a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a> (MPEG-4 Part 3)</strong></td>
            <td valign="top" width="150">9</td>
            <td valign="top" width="150">9.0.115.0*</td>
        </tr>
    </tbody>
</table>
<p>*Flash Player 可以播放视频编码为<a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a>，音频编码为<a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>的标准MPEG-4文件。文件的扩展名可以是：F4V, MP4, M4A, MOV, MP4V, 3GP, 3G2等等。</p>
<p><font color="#ff0000"><strong>注意：如果没有特别说明，下面的Flash Player都指Flash Player 9(v 9.0.115.0)</strong></font></p>
<p></p>
<p>Flash Player 9 (v 9.0.115.0) 支持下面的 MPEG-4 标准的子集：</p>
<table cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr bgcolor="#e6e6fa">
            <td valign="top" width="250"><strong>MPEG-4 标准</strong></td>
            <td valign="top" width="250"><strong>Flash Player Update 3</strong></td>
        </tr>
        <tr>
            <td valign="top" width="250">ISO/IEC 14496-3 (Audio <a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>)</td>
            <td valign="top" width="250"><a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a> Main; <a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a> LC; SBR</td>
        </tr>
        <tr>
            <td valign="top" width="250">ISO/IEC 14496-10 (Video AVC)</td>
            <td valign="top" width="250">Base (BP); Main (MP); High (HiP). All levels are supported.</td>
        </tr>
        <tr>
            <td valign="top" width="250">ISO/IEC 14496-12 (Container)</td>
            <td valign="top" width="250">1 Audio track; 1 Video track</td>
        </tr>
        <tr>
            <td valign="top" width="250">3GPP TS 26.245 (Timed text format)</td>
            <td valign="top" width="250">Full support.</td>
        </tr>
    </tbody>
</table>
<p>那么，什么是<a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a>？&#8220;MPEG4 Part 10&#8221;是什么？它和&#8220;Part 3&#8221;、&#8220;Part 2&#8221; 有什么关系？可以看<a title="MPEG4遭遇尴尬 三款高清晰编码大比拼" href="http://tech.163.com/05/0624/11/1N0Q0HJ800091589.html" target="_blank">这篇文章</a>。</p>
<p>简单的讲，<a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a>、MPEG4 Part 10、MPEG4 AVC和ISO/IEC 14496-10 都是一个东东，就是一种视频编码格式，同时也是高清电影采用的视频编码格式之一（另外两种是MPEG2和VC-1）。</p>
<p>而平常我们熟悉的DivX以及XviD编码，都属于MPEG4标准的范畴，但它们属于MPEG4 Part 2，Flash Player是不支持它们的。</p>
<h3>了解了基础知识之后，我们首先需要找到一个编码工具。</h3>
<p>选择一个优秀的压缩工具至关重要。Flash CS3自带的用于压缩<a class="st_tag internal_tag" title="标签 FLV 下的日志" href="http://www.zengrong.net/?tag=flv">FLV</a>的压缩器自然是无法胜任了。可是网上的视频转换工具多如牛毛，要找一款好用的真的很难。本着<strong><font color="#ff0000">&#8220;免费、易用、专业、通吃&#8221;</font></strong>这四个标准，经过大量测试，终于找到一款优秀的国产编码软件<a title="影音转码宝盒" href="http://mediacoder.sourceforge.net/index_zh.htm" target="_blank">MediaCoder</a>（中文名：影音转码宝盒），以下是来自MediaCoder官方网站的介绍：</p>
<p>MediaCoder是一个免费的通用音频/视频批量转码工具，它将众多来自开源社区的优秀音频视频编解码器和工具整合为一个通用的解决方案，可以将音频、视频文件在各种格式之间进行转换。</p>
<p><strong>功能和特点</strong></p>
<ul>
    <li>基于优秀的众多的开源编解码后台，能够解码和编码的格式多
    <li>极为丰富的可调整的编码参数
    <li>全部编解码器自带，不依赖于系统的编解码器和任何组件
    <li>良好的可扩展的程序架构，快速适应新的需求，不断增加新的格式的支持
    <li>利用脚本语言扩展的界面，有支持众多影音设备（如<a href="http://mediacoder.sourceforge.net/screenshots_zh.htm?sid=ext-psp.png" target="_blank">PSP</a>、<a href="http://mediacoder.sourceforge.net/screenshots_zh.htm?sid=ext-ipod.png" target="_blank">iPod</a>）的专用界面
    <li>高性能，特别在双核处理器上表现优异 </li>
</ul>
<p><strong><br />
典型应用</strong></p>
<ul>
    <li>提高影音文件压缩率，减小其文件尺寸
    <li>转换至可在各种影音设备上播放的影音文件，如MP3播放器、MP4播放器、手机、PDA、VCD/DVD播放机
    <li>提取视频文件中的音轨并转换成MP3、<a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>、WMA等音频文件
    <li>修复和改善一些损坏的、部分下载的或质量不佳的影音文件 </li>
</ul>
<p><strong>支持格式 </strong></p>
<ul>
    <li><a href="http://mediacoder.sourceforge.net/wiki/index.php/MP3">MP3</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Vorbis">Vorbis</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/aac">AAC</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/aacPlus">AAC+</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/aacPlus"><strong>AAC+v2</strong></a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/MusePack">MusePack</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Speex">Speex</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/AMR">AMR</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/WMA">WMA</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/RealAudio">RealAudio</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Mp3PRO">mp3PRO</a>*
    <li><a href="http://mediacoder.sourceforge.net/wiki/index.php/FLAC">FLAC</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/WavPack">WavPack</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Monkey's_Audio">Monkey&#8217;s Audio</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/OptimFrog">OptimFrog</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Audio_Lossless_Coding">AAC Lossless</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Windows_Media_Audio_Lossless">WMA Lossless</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/WAV">WAV/PCM</a>
    <li><a href="http://mediacoder.sourceforge.net/wiki/index.php/H.264"><strong>H.264</strong></a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/XviD">Xvid</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/MPEG">MPEG</a> <a href="http://mediacoder.sourceforge.net/wiki/index.php/MPEG-1">1</a>/<a href="http://mediacoder.sourceforge.net/wiki/index.php/MPEG-2">2</a>/<a href="http://mediacoder.sourceforge.net/wiki/index.php/MPEG-4">4</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Theora"><strong>Theora</strong></a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Flash_Video">Flash Video</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Dirac"><strong>Dirac</strong></a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/3ivx">3ivx</a>*, <a href="http://mediacoder.sourceforge.net/wiki/index.php/RealVideo">RealVideo</a>*, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Windows_Media_Video">Windows Media Video</a>
    <li><a href="http://mediacoder.sourceforge.net/wiki/index.php/AVI">AVI</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/MPEG">MPEG</a>/<a href="http://mediacoder.sourceforge.net/wiki/index.php/VOB">VOB</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/matroska">Matroska</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/MPEG-4">MP4</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/RealMedia">RealMedia</a>*, <a href="http://mediacoder.sourceforge.net/wiki/index.php/ASF">ASF</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/QuickTime">Quicktime</a>*, <a href="http://mediacoder.sourceforge.net/wiki/index.php/OGM">OGM</a>*
    <li><a href="http://mediacoder.sourceforge.net/wiki/index.php/CD">CD</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/VCD">VCD</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/DVD">DVD</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Cue_sheet">CUE Sheet</a>* </li>
</ul>
<p><em>*仅支持输入</em></p>
<h3>编码工具搞定，接着就可以&#8220;制作&#8221;影片了。</h3>
<p>我采用的源片是著名的Backkom Assa Game Contest片段，片源编码如下：</p>
<blockquote>
<p>G:\Movie\Backkom\Assa Game Contest.wmv<br />
General<br />
Complete name : G:\Movie\Backkom\Assa Game Contest.wmv<br />
Format : Windows Media<br />
File size : 1.89 MiB<br />
PlayTime : 33s 991ms<br />
Bit rate : 467 Kbps<br />
Movie name : Assa<br />
Performer : Aaron Lim<br />
Copyright : rg animation studios<br />
Comment : rg animation studios<br />
Video<br />
<a class="st_tag internal_tag" title="标签 CODEC 下的日志" href="http://www.zengrong.net/?tag=codec">Codec</a> : WMV3<br />
<a class="st_tag internal_tag" title="标签 CODEC 下的日志" href="http://www.zengrong.net/?tag=codec">Codec</a>/Info : Windows Media Video 9<br />
Bit rate : 408 Kbps<br />
Width : 320 pixels<br />
Height : 240 pixels<br />
Aspect ratio : 4/3<br />
Audio<br />
<a class="st_tag internal_tag" title="标签 CODEC 下的日志" href="http://www.zengrong.net/?tag=codec">Codec</a> : WMA2<br />
<a class="st_tag internal_tag" title="标签 CODEC 下的日志" href="http://www.zengrong.net/?tag=codec">Codec</a>/Info : Windows Media Audio 2<br />
Bit rate : 48 Kbps<br />
Channel(s) : 2 channels<br />
Sampling rate : 44 KHz</p>
</blockquote>
<p>在压缩前，最重要的就是在MediaCoder中选择视频编码和音频编码。根据上面的表格我们知道，Flash Player 9.0.115支持<a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a>视频编码和HE-<a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>音频编码。下图是我在MediaCoder中的设置。</p>
<p align="center"><img height="184" alt="H.264视频设置" src="http://www.zengrong.net/wp-content/uploads/2007/12/h264video-thumb.png" width="417" /><br />
<strong><a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a>视频设置</strong></p>
<p align="center">&nbsp;</p>
<p align="center"><img height="182" alt="HE-AAC音频编码" src="http://www.zengrong.net/wp-content/uploads/2007/12/h264audio-thumb.png" width="640" /><br />
<strong>HE-<a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>音频设置</strong></p>
<p align="center">&nbsp;</p>
<p align="center"><img height="184" alt="h264video2" src="http://www.zengrong.net/wp-content/uploads/2007/12/h264video2-thumb.png" width="315" /><br />
<strong>视频大小设置</strong></p>
<p>将这三个设置调整好即可。<a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a>的编码优于WMV9，所以在压缩的时候，选择的视频和音频码率都小于源文件的码率。</p>
<p>转换完后的视频扩展名为MP4，详细编码信息如下：</p>
<blockquote>
<p>G:\Movie\Backkom\Assa Game Contest.mp4<br />
General<br />
Complete name : G:\Movie\Backkom\Assa Game Contest.mp4<br />
Format : MPEG-4<br />
Format/Info : ISO 14496-1 Base Media<br />
Format/Family : MPEG-4<br />
File size : 1.40 MiB<br />
PlayTime : 33s 920ms<br />
Bit rate : 347 Kbps<br />
StreamSize : 11.2 KiB<br />
Encoded date : UTC 2007-12-06 15:51:38<br />
Tagged date : UTC 2007-12-06 15:51:38<br />
Video #1<br />
<a class="st_tag internal_tag" title="标签 CODEC 下的日志" href="http://www.zengrong.net/?tag=codec">Codec</a> : <a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a><br />
<a class="st_tag internal_tag" title="标签 CODEC 下的日志" href="http://www.zengrong.net/?tag=codec">Codec</a>/Info : <a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a> (3GPP)<br />
PlayTime : 33s 920ms<br />
Bit rate : 314 Kbps<br />
Width : 320 pixels<br />
Height : 240 pixels<br />
Aspect ratio : 4/3<br />
Frame rate : 25.000 fps<br />
Bits/(Pixel*Frame) : 0.160<br />
StreamSize : 1.27 MiB<br />
Encoded date : UTC 2007-12-06 15:51:38<br />
Tagged date : UTC 2007-12-06 15:51:38<br />
Audio #2<br />
<a class="st_tag internal_tag" title="标签 CODEC 下的日志" href="http://www.zengrong.net/?tag=codec">Codec</a> : <a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a> LC-SBR<br />
<a class="st_tag internal_tag" title="标签 CODEC 下的日志" href="http://www.zengrong.net/?tag=codec">Codec</a>/Info : <a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a> Low Complexity with Spectral Band Replication<br />
PlayTime : 32s 415ms<br />
Bit rate : 32 Kbps<br />
Bit rate mode : VBR<br />
Channel(s) : 2 channels<br />
Sampling rate : 44 KHz<br />
Resolution : 16 bits<br />
StreamSize : 126 KiB<br />
Encoded date : UTC 2007-12-06 15:51:38<br />
Tagged date : UTC 2007-12-06 15:51:38</p>
</blockquote>
<p>此视频在Flash Player 9.0.115中顺利播放，声音也没有问题。</p>
<h3>研究一下视频和音频的组合</h3>
<p>到了这里，就有一些问题了。<a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a>视频是否一定要搭配<a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>音频呢？搭配MP3行么？我压缩了一个采用<a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a>视频编码，Mp3音频编码（采用LAME MP3）的影片，用终极解码播放正常，但是在Flash Player中，只有图像可以显示，却听不到声音。下面是这个文件的编码信息：</p>
<blockquote>
<p>F:\Material\Flash Platform\Flash\Cases\播放<a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a>视频\333.mp4<br />
General<br />
Complete name : F:\Material\Flash Platform\Flash\Cases\播放<a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a>视频\333.mp4<br />
Format : MPEG-4<br />
Format/Info : ISO 14496-1 Base Media<br />
Format/Family : MPEG-4<br />
File size : 2.59 MiB<br />
PlayTime : 33s 920ms<br />
Bit rate : 641 Kbps<br />
StreamSize : 13.9 KiB<br />
Encoded date : UTC 2007-12-05 09:21:21<br />
Tagged date : UTC 2007-12-05 09:21:21<br />
Video #1<br />
<a class="st_tag internal_tag" title="标签 CODEC 下的日志" href="http://www.zengrong.net/?tag=codec">Codec</a> : <a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a><br />
<a class="st_tag internal_tag" title="标签 CODEC 下的日志" href="http://www.zengrong.net/?tag=codec">Codec</a>/Info : <a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a> (3GPP)<br />
PlayTime : 33s 920ms<br />
Bit rate : 516 Kbps<br />
Width : 320 pixels<br />
Height : 240 pixels<br />
Aspect ratio : 4/3<br />
Frame rate : 25.000 fps<br />
Bits/(Pixel*Frame) : 0.260<br />
StreamSize : 2.09 MiB<br />
Encoded date : UTC 2007-12-05 09:21:21<br />
Tagged date : UTC 2007-12-05 09:21:21<br />
Audio #2<br />
<a class="st_tag internal_tag" title="标签 CODEC 下的日志" href="http://www.zengrong.net/?tag=codec">Codec</a> : MPEG-1 Audio<br />
PlayTime : 32s 365ms<br />
Bit rate : 128 Kbps<br />
Bit rate mode : CBR<br />
Channel(s) : 2 channels<br />
Sampling rate : 44 KHz<br />
Resolution : 16 bits<br />
StreamSize : 506 KiB<br />
Encoded date : UTC 2007-12-05 09:21:21<br />
Tagged date : UTC 2007-12-05 09:21:21</p>
</blockquote>
<p>又测试了<a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a>+MP3用AVI封装和3GP封装，在Flash Player中都无法播放声音。看来只有<a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a>+<a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>可以被Flash Player支持。封装可以使用3GP或者MP4，但不支持MKV封装。</p>
<h3>关于封装容器和视频文件后缀</h3>
<p>我们知道，我们不能仅仅从视频文件的扩展名判断文件的编码。因为很多扩展名是支持多种编码的。例如AVI就只是一种封装容器，它里面的视频和音频编码可以有很多种组合。可以是DivX，也可以是XviD，还可以是MPEG-1。下面的表格（<a href="http://www.sxzkw.com/1Qm/MediaCoder_jiaocheng_cn.swf" target="_blank">表格来源</a>，ZRong做部分调整）简单的描述了几种封装容器和视频、音频编码的对应情况：</p>
<table cellspacing="0" cellpadding="2" width="542" border="1">
    <tbody>
        <tr>
            <td valign="top" width="105"><strong>封装容器</strong></td>
            <td valign="top" width="145"><strong>视频流编码格式</strong></td>
            <td valign="top" width="128"><strong>音频流编码格式 </strong></td>
            <td valign="top" width="160"><strong>Flash Player是否支持</strong></td>
        </tr>
        <tr>
            <td valign="top" width="105">AVI</td>
            <td valign="top" width="145">Xvid</td>
            <td valign="top" width="128">MP3</td>
            <td valign="top" width="159">不支持</td>
        </tr>
        <tr>
            <td valign="top" width="105">AVI</td>
            <td valign="top" width="145">Divx</td>
            <td valign="top" width="127">MP3</td>
            <td valign="top" width="159">不支持</td>
        </tr>
        <tr>
            <td valign="top" width="105">MKV</td>
            <td valign="top" width="145">Xvid</td>
            <td valign="top" width="127">MP3</td>
            <td valign="top" width="159">不支持</td>
        </tr>
        <tr>
            <td valign="top" width="105">MKV</td>
            <td valign="top" width="145">Xvid</td>
            <td valign="top" width="127"><a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a></td>
            <td valign="top" width="159">不支持</td>
        </tr>
        <tr>
            <td valign="top" width="105">MKV</td>
            <td valign="top" width="145"><a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a></td>
            <td valign="top" width="127"><a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a></td>
            <td valign="top" width="159">不支持</td>
        </tr>
        <tr>
            <td valign="top" width="105">MP4</td>
            <td valign="top" width="145"><a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a></td>
            <td valign="top" width="127"><a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a></td>
            <td valign="top" width="159">支持</td>
        </tr>
        <tr>
            <td valign="top" width="105">3GP</td>
            <td valign="top" width="145">H.263</td>
            <td valign="top" width="127"><a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a></td>
            <td valign="top" width="159">不支持</td>
        </tr>
        <tr>
            <td valign="top" width="105">3GP</td>
            <td valign="top" width="145"><a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a></td>
            <td valign="top" width="127"><a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a></td>
            <td valign="top" width="159">支持</td>
        </tr>
        <tr>
            <td valign="top" width="105"><a class="st_tag internal_tag" title="标签 FLV 下的日志" href="http://www.zengrong.net/?tag=flv">FLV</a></td>
            <td valign="top" width="145">Sorenson Spark</td>
            <td valign="top" width="127">MP3</td>
            <td valign="top" width="159">支持</td>
        </tr>
        <tr>
            <td valign="top" width="105"><a class="st_tag internal_tag" title="标签 FLV 下的日志" href="http://www.zengrong.net/?tag=flv">FLV</a></td>
            <td valign="top" width="145">On2 VP6</td>
            <td valign="top" width="127">MP3</td>
            <td valign="top" width="159">支持</td>
        </tr>
    </tbody>
</table>
<p>从上表可以看出，要让Flash Player成功播放<a class="st_tag internal_tag" title="标签 H.264 下的日志" href="http://www.zengrong.net/?tag=h264">H.264</a>视频，最好采用3GP或者MP4封装容器。</p>
<h3><a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>编码的混乱情况</h3>
<p>上面的压缩，<a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>编码器使用的都是Nero Encoder，其中&#8220;规格&#8221;有这样几个选项：Auto、LC-<a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>、LE-<a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>和HE-<a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a> v2。经过测试，这几个规格压缩的音频都可以被Flash Player支持。</p>
<p align="center"><img height="184" alt="Nero Encoder的规格" src="http://www.zengrong.net/wp-content/uploads/2007/12/h264neroencoder-thumb.png" width="300" />|<strong><br />
Nero Encoder的选项</strong></p>
<p>如果采用CT <a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>+编码器，选项就变成了下面这样，更加复杂了。经过测试，这几个选项的组合也都可以被Flash Player支持。不论选择MPEG-4 <a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>还是MPEG-2 <a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>，都没有问题。</p>
<p align="center"><img height="184" alt="h264ctaac" src="http://www.zengrong.net/wp-content/uploads/2007/12/h264ctaac-thumb.png" width="300" /><br />
<strong>CT <a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>+的选项</strong></p>
<p>如果采用FAAC编码器，选项就变成了下面这样。经过测试，这几个选项的组合也都可以被Flash Player支持，MPEG版本的选择也没有关系。</p>
<p style="text-align: center"><img height="200" alt="h264faac" src="http://www.zengrong.net/wp-content/uploads/2007/12/h264faac-thumb.png" width="300" /><br />
<strong>FAAC的选项</strong></p>
<p>事实上，NERO Encoder和CT <a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>+中的LC-<a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>，就是FAAC中的Low Complexity（无长时预测的<a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>）；而NERO Encoder中的HE-<a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>，就是CT <a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>+中的aacPlus，它加了SBR(spectral band replication)，HE代表high efficiency。这也是为什么前面压缩WMV视频的时候，选择的是HE-<a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>编码，在编码之后的文件信息里面显示的却是下面这些内容的原因了：</p>
<blockquote>
<p><a class="st_tag internal_tag" title="标签 CODEC 下的日志" href="http://www.zengrong.net/?tag=codec">Codec</a> : <a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a> LC-SBR<br />
<a class="st_tag internal_tag" title="标签 CODEC 下的日志" href="http://www.zengrong.net/?tag=codec">Codec</a>/Info : <a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a> Low Complexity with Spectral Band Replication</p>
</blockquote>
<p>根据Adobe公布的信息，Flash Player支持这些<a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>编码：<a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a> Main; <a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a> LC; SBR ，因此，我一般选择使用NERO Encoder的HE-<a class="st_tag internal_tag" title="标签 AAC 下的日志" href="http://www.zengrong.net/?tag=aac">AAC</a>。</p>
<h3>参考链接</h3>
<ol>
    <li><a title="http://bbs.lmtw.com/dispbbs.asp?boardID=111&amp;ID=141583&amp;page=1" href="http://bbs.lmtw.com/dispbbs.asp?boardID=111&amp;ID=141583&amp;page=1">http://bbs.lmtw.com/dispbbs.asp?boardID=111&amp;ID=141583&amp;page=1</a>
    <li><a title="http://mediacoder.sourceforge.net/index_zh.htm" href="http://mediacoder.sourceforge.net/index_zh.htm">http://mediacoder.sourceforge.net/index_zh.htm</a>
    <li><a title="http://www.sxzkw.com/1Qm/MediaCoder_jiaocheng_cn.swf" href="http://www.sxzkw.com/1Qm/MediaCoder_jiaocheng_cn.swf">http://www.sxzkw.com/1Qm/MediaCoder_jiaocheng_cn.swf</a>
    <li><a title="http://www.adobe.com/devnet/flashplayer/articles/http://www.adobe.com/devnet/flashplayer/articles/hd_video_flash_player.html" href="http://www.adobe.com/devnet/flashplayer/articles/http://www.adobe.com/devnet/flashplayer/articles/hd_video_flash_player.html">http://www.adobe.com/devnet/flashplayer/articles/http://www.adobe.com/devnet/flashplayer/articles/hd_video_flash_player.html</a>
    <li><a title="http://tech.163.com/05/0624/11/1N0Q0HJ800091589.html" href="http://tech.163.com/05/0624/11/1N0Q0HJ800091589.html">http://tech.163.com/05/0624/11/1N0Q0HJ800091589.html</a>
    <li><a title="http://kb.adobe.com/selfservice/viewContent.do?externalId=kb402866&amp;sliceId=1" href="http://kb.adobe.com/selfservice/viewContent.do?externalId=kb402866&amp;sliceId=1">http://kb.adobe.com/selfservice/viewContent.do?externalId=kb402866&amp;sliceId=1</a> </li>
</ol>
</div>
<img src ="http://www.blogjava.net/xiaomage234/aggbug/247950.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2008-12-23 17:44 <a href="http://www.blogjava.net/xiaomage234/archive/2008/12/23/247950.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用 MEncoder 编码 H. 264 流[转]</title><link>http://www.blogjava.net/xiaomage234/archive/2008/12/22/247760.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Mon, 22 Dec 2008 06:55:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2008/12/22/247760.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/247760.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2008/12/22/247760.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/247760.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/247760.html</trackback:ping><description><![CDATA[<p>用 MEncoder 编码 H. 264 流<br />
In Mac, Miscs, Tools on 9 July 2008 tagged h264, mencoder with no comments</p>
<p>MEncoder 是常用的离线编码器，属于 mplayer 项目的一部分，这里介绍了怎样用 MEncoder 编码常见的视频流。</p>
<p>首先，要安装 x264 编码库，mplayer 需要这个库才能加上 H. 264 编码支持:</p>
<p><br />
$ git clone git://git.videolan.org/x264.git<br />
$ cd x264<br />
$ ./configure<br />
$ make &amp;&amp; sudo make install</p>
<p><br />
注意 x264 库需要 yasm 汇编器，MacPorts 下可以用 sudo port install yasm 安装。</p>
<p>然后编译 mplayer (包括 mencoder)。</p>
<p><br />
$ svn co svn://svn.mplayerhq.hu/mplayer/trunk mplayer<br />
$ cd mplayer<br />
$ ./configure # 注意输出中是否有 "Checking for x264 ... yes" 字样<br />
$ make &amp;&amp; sudo make install</p>
<p><br />
然后就可以调用 MEncoder 了:</p>
<p><br />
$ mencoder input.fmt -o output.fmt -ovc x264 -oac copy -x264encopts \<br />
&nbsp;&nbsp;&nbsp; bframes=4:b_pyramid:weight_b:pass=1:psnr:bitrate=1500:turbo=1</p>
<p><br />
其中 input.fmt, output.fmt 分别是输入和输出文件，其调用格式见 MEncoder 的文档，而后面 -x264encopts 的参数制定的是 x264 编码参数，这是影响编码质量和速度的地方，文档中也有专门一节详细说明，这里选取的是一个中等偏上的效果。<br />
</p>
<img src ="http://www.blogjava.net/xiaomage234/aggbug/247760.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2008-12-22 14:55 <a href="http://www.blogjava.net/xiaomage234/archive/2008/12/22/247760.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ffmpeg 安装常见问题的解决</title><link>http://www.blogjava.net/xiaomage234/archive/2008/12/10/245548.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Wed, 10 Dec 2008 10:17:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2008/12/10/245548.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/245548.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2008/12/10/245548.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/245548.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/245548.html</trackback:ping><description><![CDATA[<p>1,lame下低点的版本，比如 lame-3.93.1<br />
2,x264下载列表:ftp://ftp.videolan.org/pub/videolan/x264/snapshots [每天一个版本]<br />
3,make版本要3.81以上:ftp://ftp.gnu.org/gnu/<br />
4,今天在公司编译ffmpeg，结果./configure 正常，但是在make的时候出现了下面的错误，在网上寻找，居然找到了解决办法，特转过来作为自己的总结，方便日后查看</p>
<p># make<br />
gcc -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I. -I"/home/yujingtao/soft/ffmpeg" -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -fasm -std=c99 -fomit-frame-pointer -pthread -g -Wdeclaration-after-statement -Wall -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wcast-qual -Wwrite-strings -O3 -fno-math-errno&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -c -o libavdevice/v4l.o libavdevice/v4l.c<br />
In file included from libavdevice/v4l.c:32:<br />
/usr/include/linux/videodev.h:55: error: syntax error before "ulong"<br />
/usr/include/linux/videodev.h:71: error: syntax error before '}' token<br />
libavdevice/v4l.c: In function `grab_read_header':<br />
libavdevice/v4l.c:77: error: storage size of 'tuner' isn't known<br />
libavdevice/v4l.c:141: error: invalid application of `sizeof' to incomplete type `video_tuner' <br />
libavdevice/v4l.c:148: error: invalid application of `sizeof' to incomplete type `video_tuner' <br />
libavdevice/v4l.c:77: warning: unused variable `tuner'<br />
make: *** [libavdevice/v4l.o] 错误 1</p>
<p><br />
vi /usr/include/linux/videodev.h</p>
<p>查找rangelow, rangehigh;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Tuner range */这一行<br />
把&nbsp; ulong rangelow, rangehigh;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Tuner range */<br />
改为：<br />
&nbsp;&nbsp;&nbsp;&nbsp; unsigned long rangelow, rangehigh;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Tuner range */ <br />
<br />
参考：<br />
http://www.2hei.net/mt/2008/08/ffmpeg-3gp-install.html<br />
</p>
<img src ="http://www.blogjava.net/xiaomage234/aggbug/245548.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2008-12-10 18:17 <a href="http://www.blogjava.net/xiaomage234/archive/2008/12/10/245548.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ffmpeg+mencoder环境搭建和视频处理总结[转]</title><link>http://www.blogjava.net/xiaomage234/archive/2008/12/09/245173.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Tue, 09 Dec 2008 02:48:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2008/12/09/245173.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/245173.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2008/12/09/245173.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/245173.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/245173.html</trackback:ping><description><![CDATA[<span lang="EN-US" style="font-size: 9pt; color: #333333; font-family: Tahoma; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">ffmpeg+mencoder</span><span style="font-size: 9pt; color: #333333; font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: Tahoma; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma">几乎可以完成目前基于</span><span lang="EN-US" style="font-size: 9pt; color: #333333; font-family: Tahoma; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">web</span><span style="font-size: 9pt; color: #333333; font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: Tahoma; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma">的播客平台任何音视频处理的操作</span><span lang="EN-US" style="font-size: 9pt; color: #333333; font-family: Tahoma; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">.</span><span style="font-size: 9pt; color: #333333; font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: Tahoma; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma">如果还需要添加一些什么的话</span><span lang="EN-US" style="font-size: 9pt; color: #333333; font-family: Tahoma; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">,</span><span style="font-size: 9pt; color: #333333; font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: Tahoma; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma">那么就是视频在线录制功能了</span><span lang="EN-US" style="font-size: 9pt; color: #333333; font-family: Tahoma; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">,</span><span style="font-size: 9pt; color: #333333; font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: Tahoma; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma">这个也可以用</span><span lang="EN-US" style="font-size: 9pt; color: #333333; font-family: Tahoma; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">ffmpeg+fms</span><span style="font-size: 9pt; color: #333333; font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: Tahoma; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma">来完成</span><span lang="EN-US" style="font-size: 9pt; color: #333333; font-family: Tahoma; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">,</span><span style="font-size: 9pt; color: #333333; font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: Tahoma; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma">因此一般的类似于</span><span lang="EN-US" style="font-size: 9pt; color: #333333; font-family: Tahoma; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">YouTube</span><span style="font-size: 9pt; color: #333333; font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: Tahoma; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma">的一些可见功能都可以在</span><span lang="EN-US" style="font-size: 9pt; color: #333333; font-family: Tahoma; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">ffmpeg+mencoder+fms</span><span style="font-size: 9pt; color: #333333; font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: Tahoma; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma">来做后台实现</span><span lang="EN-US" style="font-size: 9pt; color: #333333; font-family: Tahoma; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">.</span><span style="font-size: 9pt; color: #333333; font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: Tahoma; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma">由于</span><span lang="EN-US" style="font-size: 9pt; color: #333333; font-family: Tahoma; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">fms</span><span style="font-size: 9pt; color: #333333; font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: Tahoma; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma">没有实践</span><span lang="EN-US" style="font-size: 9pt; color: #333333; font-family: Tahoma; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">,</span><span style="font-size: 9pt; color: #333333; font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: Tahoma; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma">因此这里不描述</span><span lang="EN-US" style="font-size: 9pt; color: #333333; font-family: Tahoma; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">.<br />
&nbsp;</span><span style="font-size: 9pt; color: #333333; font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: Tahoma; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma">本文档有三部分</span><span lang="EN-US" style="font-size: 9pt; color: #333333; font-family: Tahoma; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">:<br />
&nbsp;1)ffmpeg+mencoder</span><span style="font-size: 9pt; color: #333333; font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: Tahoma; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma">环境搭建</span><span lang="EN-US" style="font-size: 9pt; color: #333333; font-family: Tahoma; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体"><br />
&nbsp;2)</span><span style="font-size: 9pt; color: #333333; font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: Tahoma; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma">常见操作说明</span><span lang="EN-US" style="font-size: 9pt; color: #333333; font-family: Tahoma; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体"><br />
&nbsp;3)</span><span style="font-size: 9pt; color: #333333; font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: Tahoma; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma">个人的一些使用心得</span><br />
<br />
另外还包括<a href="http://wf.xplore.cn/read.php/read.php?168">视频截取和队列处理的shell实现</a><br />
<br />
<br />
文档整理下载:<a href="/Files/xiaomage234/video.rar">/Files/xiaomage234/video.rar</a> <br />
<a href="/Files/xiaomage234/videotech-doc.rar">/Files/xiaomage234/videotech-doc.rar</a>
<img src ="http://www.blogjava.net/xiaomage234/aggbug/245173.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2008-12-09 10:48 <a href="http://www.blogjava.net/xiaomage234/archive/2008/12/09/245173.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ffmpeg（2006/10/26-6793版） dll lib x264 vc6sp6编译成功[转]</title><link>http://www.blogjava.net/xiaomage234/archive/2008/12/09/245150.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Tue, 09 Dec 2008 01:53:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2008/12/09/245150.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/245150.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2008/12/09/245150.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/245150.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/245150.html</trackback:ping><description><![CDATA[<h2>ffmpeg（2006/10/26-6793版） dll lib x264 vc6sp6编译成功</h2>
<div class="t_msgfont" id="postmessage_3351">1. 下载最新的ffmpeg源代码<br />
(1) 下载并安装Subversion (<a href="http://subversion.tigris.org/%29" target="_blank">http://subversion.tigris.org/)</a><br />
(2) 运行svn co svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg<br />
<br />
2. 下载安装最新的mingw和msys<br />
(1) mingw通过在<a href="http://prdownloads.sf.net/mingw/MinGW-5.0.3.exe?download" target="_blank">http://prdownloads.sf.net/mingw/MinGW-5.0.3.exe?download</a>下载mingw installer安装,我安装的时候选择了candidate<br />
(2) msys在<a href="http://www.mingw.org/" target="_blank">http://www.mingw.org/</a>下载安装<br />
安装过后要填入mingw的路径,比如d:/mingw<br />
<br />
3. 下载安装最新的bash<br />
(1) 在<a href="http://www.mingw.org/" target="_blank">http://www.mingw.org/</a>下载最新的二进制版本<br />
(2) 解压至msys的安装目录下<br />
<br />
4. 在msys.bat中加入下面语句：<br />
call "C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT"<br />
<br />
5. 在msys中编译ffmpeg<br />
(1) ./configure --enable-shared --disable-static --enable-memalign-hack --prefix=d:/ffmpeg<br />
(2) make<br />
(3) make install<br />
<br />
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
加入x264支持<br />
<br />
0. 安装nasm<br />
<br />
1. 编译x264<br />
./configure --prefix=d:/mingw<br />
make<br />
make install<br />
<br />
2. 编译ffmpeg<br />
./configure --enable-shared --disable-static --enable-memalign-hack --enable-x264 --enable-gpl --prefix=d:/ffmpeg<br />
make <br />
make install<br />
</div>
<img src ="http://www.blogjava.net/xiaomage234/aggbug/245150.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2008-12-09 09:53 <a href="http://www.blogjava.net/xiaomage234/archive/2008/12/09/245150.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>五个最佳媒体格式转换器[转]</title><link>http://www.blogjava.net/xiaomage234/archive/2008/12/09/245149.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Tue, 09 Dec 2008 01:51:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2008/12/09/245149.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/245149.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2008/12/09/245149.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/245149.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/245149.html</trackback:ping><description><![CDATA[我们经常会遇到下载的视频文件格式不对，无法在其他播放设备（如手机、DVD）中使用的问题，现在，我们介绍五个功能强大且易于使用的媒体转换器，用于转换不同类型的视频文件。
<p>　　<strong>Super (Windows)</strong></p>
<p style="text-align: center"><strong><img alt="Super (Windows)" src="http://www.williamlong.info/upload/1590_1.jpg" /></strong></p>
<p>　　<a href="http://www.erightsoft.com/SUPER.html" target="_blank"><u><font color="#006091">Super</font></u></a>是一个免费的媒体转换器，使用图形界面的前端，后端是几个强大的命令行工具，如FFmpeg、MEncoder和MPlayer.这个转化器拥有广泛的应用，且可以根据用户的喜好进行定制选项，几乎可以转换任何类型的文件。缺点是操作控制和使用较为混乱，初次使用会感到设置较为麻烦。</p>
<p>　　<strong>FormatFactory (Windows)</strong></p>
<p style="text-align: center"><strong><img alt="FormatFactory (Windows)" src="http://www.williamlong.info/upload/1590_2.jpg" /></strong></p>
<p>　　<a href="http://www.formatoz.com/" target="_blank"><u><font color="#006091">Format Factory</font></u></a>是一个基于Windows的免费的媒体转换器，可以转换视频，音频，甚至图片格式。Format Factory有美观大方的图标驱动的界面，易于使用，并可以进行批量的媒体转换。</p>
<p>　　<strong>MediaCoder (所有平台)</strong></p>
<p style="text-align: center"><strong><img alt="MediaCoder" src="http://www.williamlong.info/upload/1590_3.jpg" /></strong></p>
<p>　　<a href="http://mediacoder.sourceforge.net/" target="_blank"><u><font color="#006091">MediaCoder</font></u></a>是一个批处理媒体格式转换器，可以转换大多数流行的视频和音频格式。和Super类似，MediaCoder也是前端图形界面，后端为大量命令行工具，MediaCoder目前在所有平台都可使用，但对Windows的支持最好。MediaCoder还为iPhone、iPod touch和PSP提供特殊设备接口。</p>
<p>　　<strong>HandBrake (所有平台)</strong></p>
<p style="text-align: center"><strong><img alt="HandBrake" src="http://www.williamlong.info/upload/1590_4.jpg" /></strong></p>
<p>　　<a href="http://handbrake.fr/" target="_blank"><u><font color="#006091">HandBrake</font></u></a>是一个颇受欢迎的开放源码媒体转换器，可以将DVD视频编码转换为多种流行的输出格式。具有在图形和命令行两种用户界面，HandBrake仅能够转换MPEG视频（包括DVD视频），是一个很好的DVD转换工具。</p>
<p>　　<strong>FFmpeg (所有平台)</strong></p>
<p style="text-align: center"><strong><img alt="FFmpeg" src="http://www.williamlong.info/upload/1590_5.jpg" /></strong></p>
<p>　　<a href="http://ffmpeg.mplayerhq.hu/" target="_blank"><u><font color="#006091">FFmpeg</font></u></a>是免费的、跨平台的命令行编码格式转换工具，上面介绍的不少图形化工具实际上都是后台调用FFmpeg的，虽然FFmpeg的易用性较差，但不可否认FFmpeg是强大而灵活的，FFmpeg使用命令行来进行格式转换。</p>
<p>　　英文原文：<a href="http://lifehacker.com/5058888/five-best-media-converters" target="_blank"><u><font color="#006091">Five Best Media Converters</font></u></a><br />
</p>
<img src ="http://www.blogjava.net/xiaomage234/aggbug/245149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2008-12-09 09:51 <a href="http://www.blogjava.net/xiaomage234/archive/2008/12/09/245149.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FLV视频meta信息注入工具~</title><link>http://www.blogjava.net/xiaomage234/archive/2008/11/20/241584.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Thu, 20 Nov 2008 03:15:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2008/11/20/241584.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/241584.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2008/11/20/241584.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/241584.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/241584.html</trackback:ping><description><![CDATA[<p>有的flv缺少meta信息，导致flash播放器不能播放。<br />
可以用 flvmdi.exe这个工具进行meta信息的注入。<br />
本地下载地址：<br />
<a href="/Files/xiaomage234/flvmeta.rar">/Files/xiaomage234/flvmeta.rar</a></p>
<img src ="http://www.blogjava.net/xiaomage234/aggbug/241584.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2008-11-20 11:15 <a href="http://www.blogjava.net/xiaomage234/archive/2008/11/20/241584.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MediaCoder 影音转码快车</title><link>http://www.blogjava.net/xiaomage234/archive/2008/11/20/241575.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Thu, 20 Nov 2008 02:39:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2008/11/20/241575.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/241575.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2008/11/20/241575.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/241575.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/241575.html</trackback:ping><description><![CDATA[<p>MediaCoder是一个免费的通用音频/视频批量转码工具，它将众多来自开源社区的优秀音频视频编解码器和工具整合为一个通用的解决方案，可以将音频、视频文件在各种格式之间进行转换。MediaCoder具备一个可扩展的架构和丰富的功能，可满足各种场合下的转码需求。目前，MediaCoder已经拥有上百万分布在全世界170多个国家的用户。</p>
<p><strong>功能和特点</strong></p>
<ul>
    <li>基于优秀的众多的开源编解码后台，能够解码和编码的格式多
    <li>良好的多线程设计，为多核处理器和多处理器系统优化(<a href="http://img5.pcpop.com/ArticleImages/500x375/0/867/000867297.jpg" target="_blank">PCPOP评</a>)
    <li>极为丰富的可调整的编码参数
    <li>全部编解码器自带，不依赖于系统的编解码器和任何组件
    <li>良好的可扩展的程序架构，快速适应新的需求，不断增加新的格式的支持
    <li>利用脚本语言扩展的界面，支持众多影音设备 </li>
</ul>
<p><strong><br />
典型应用</strong></p>
<ul>
    <li>提高影音文件压缩率，减小其文件尺寸
    <li>转换至可在各种影音设备上播放的影音文件，如MP3播放器、MP4播放器、手机、PDA、VCD/DVD播放机
    <li>提取视频文件中的音轨并转换成MP3、AAC、WMA等音频文件
    <li>修复和改善一些损坏的、部分下载的或质量不佳的影音文件 </li>
</ul>
<p><br />
<strong>支持格式 </strong></p>
<ul>
    <li><a href="http://mediacoder.sourceforge.net/wiki/index.php/MP3">MP3</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Vorbis">Vorbis</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/aac">AAC</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/aacPlus">AAC+</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/aacPlus">AAC+v2</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/MusePack">MusePack</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Speex">Speex</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/AMR">AMR</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/WMA">WMA</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/RealAudio">RealAudio</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Mp3PRO">mp3PRO</a>*
    <li><a href="http://mediacoder.sourceforge.net/wiki/index.php/FLAC">FLAC</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/WavPack">WavPack</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Monkey's_Audio">Monkey's Audio</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/OptimFrog">OptimFrog</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Audio_Lossless_Coding">AAC Lossless</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/True_Audio">TTA</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/WAV">WAV/PCM</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Waveform">Waveform</a>
    <li><a href="http://mediacoder.sourceforge.net/wiki/index.php/H.264">H.264</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/XviD">XviD</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/DivX">DivX</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/MPEG">MPEG</a> <a href="http://mediacoder.sourceforge.net/wiki/index.php/MPEG-1">1</a>/<a href="http://mediacoder.sourceforge.net/wiki/index.php/MPEG-2">2</a>/<a href="http://mediacoder.sourceforge.net/wiki/index.php/MPEG-4">4</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Theora">Theora</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Flash_Video">Flash Video</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Dirac">Dirac</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/3ivx">3ivx</a>*, <a href="http://mediacoder.sourceforge.net/wiki/index.php/RealVideo">RealVideo</a>*, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Windows_Media_Video">Windows Media Video</a>
    <li><a href="http://mediacoder.sourceforge.net/wiki/index.php/AVI">AVI</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/MPEG">MPEG</a>/<a href="http://mediacoder.sourceforge.net/wiki/index.php/VOB">VOB</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/matroska">Matroska</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/MP4">MP4</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/PMP">PMP</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/RealMedia">RealMedia</a>*, <a href="http://mediacoder.sourceforge.net/wiki/index.php/ASF">ASF</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/QuickTime">Quicktime</a>*, <a href="http://mediacoder.sourceforge.net/wiki/index.php/OGM">OGM</a>*
    <li><a href="http://mediacoder.sourceforge.net/wiki/index.php/CD">CD</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/DVD">DVD</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/VCD">VCD</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/SVCD">SVCD</a>, <a href="http://mediacoder.sourceforge.net/wiki/index.php/Cue_sheet">CUESheet</a>*, HTTP*, FTP*, RTSP*, UDP* </li>
</ul>
<p><em>*仅支持输入/解码<br />
<br />
工具主页：http://www.mediacoderhq.com/index_zh.htm</em></p>
<img src ="http://www.blogjava.net/xiaomage234/aggbug/241575.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2008-11-20 10:39 <a href="http://www.blogjava.net/xiaomage234/archive/2008/11/20/241575.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> DirectShow系列讲座之三——开发自己的Filter[转]</title><link>http://www.blogjava.net/xiaomage234/archive/2008/09/19/229945.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Fri, 19 Sep 2008 07:07:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2008/09/19/229945.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/229945.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2008/09/19/229945.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/229945.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/229945.html</trackback:ping><description><![CDATA[在上两讲中，笔者介绍了DirectShow的应用原理以及开发Filter之前的一些预备知识。这一讲，笔者就要手把手教你如何写自己的Filter啦。<br />
首先，从VC++的项目开始（请确认你已经给VC++配置好了DirectX的开发环境）。写自己的Filter，第一步是使用VC++建立一个Filter的项目。由于DirectX SDK提供了很多Filter的例子项目（位于DXSDK\samples\Multimedia\DirectShow\ Filters目录下），最简单的方法就是拷贝一个，然后再在此基础上修改。但如果你是Filter开发的初学者，笔者并不赞成这么做。<br />
自己新建一个Filter项目也很简单。使用VC++的向导，建立一个空的&#8221;Win32 Dynamic-link Library&#8221;项目。注意，几个文件是必须有的：.def文件，定义四个导出函数；定义Filter类的.cpp文件和.h文件，并在.cpp文件中定义Filter的注册信息以及两个Filter的注册函数：DllRegisterServer和DllUnregisterServer。（注：Filter的注册信息是Filter在注册时写到注册表里的内容，格式可以参考SDK的示例代码，Filter相关的GUID务必使用GuidGen.exe产生。）接下去进行项目的设置（Project-&gt;Settings&#8230;）。此时，你可以打开一个SDK的例子项目进行对比，有些宏定义完全可以照抄，最后注意将输出文件的扩展名改为.ax。<br />
上一讲曾经提到过，在写Filter之前，选择一个合适的Filter基类是至关重要的。为此，你必须对几个Filter的基类有相当的了解。在实际应用中，Filter的基类并不总是选择CBaseFilter的。相反，因为我们绝大部分写的都是中间的传输Filter（Transform Filter），所以基类选择CTransformFilter和CTransInPlaceFilter的居多。如果我们写的是源Filter，我们可以选择CSource作为基类；如果是Renderer Filter，可以选择CBaseRenderer或CBaseVideoRenderer等。<br />
总之，选择好Filter的基类是很重要的。当然，选择Filter的基类也是很灵活的，没有绝对的标准。能够通过CTransformFilter实现的Filter当然也能从CBaseFilter一步一步实现。下面，笔者就从本人的实际经验出发，对Filter基类的选择提出几点建议供大家参考。<br />
首先，你必须明确这个Filter要完成什么样的功能，即要对Filter项目进行需求分析。请尽量保持Filter实现的功能的单一性。如果必要的话，你可以将需求分解，由两个（或者更多的）功能单一的Filter去实现总的功能需求。<br />
其次，你应该明确这个Filter大致在整个Filter Graph的位置，这个Filter的输入是什么数据，输出是什么数据，有几个输入Pin、几个输出Pin等等。你可以画出这个Filter的草图。弄清这一点十分重要，这将直接决定你使用哪种&#8220;模型&#8221;的Filter。比如，如果Filter仅有一个输入Pin和一个输出Pin，而且一进一处的媒体类型相同，则一般采用CTransInPlaceFilter作为Filter的基类；如果媒体类型不一样，则一般选择CTransformFilter作为基类。<br />
再者，考虑一些数据传输、处理的特殊性要求。比如Filter的输入和输出的Sample并不是一一对应的，这就一般要在输入Pin上进行数据的缓存，而在输出Pin上使用专门的线程进行数据处理。这种情况下，Filter的基类选择CSource为宜（虽然这个Filter并不是源Filter）。<br />
当Filter的基类选定了之后，Pin的基类也就相应选定了。接下去，就是Filter和Pin上的代码实现了。有一点需要注意的是，从软件设计的角度上来说，应该将你的逻辑类代码同Filter的代码分开。下面，我们一起来看一下输入Pin的实现。你需要实现基类所有的纯虚函数，比如CheckMediaType等。在CheckMediaType内，你可以对媒体类型进行检验，看是否是你期望的那种。因为大部分Filter采用的是推模式传输数据，所以在输入Pin上一般都实现了Receive方法。有的基类里面已经实现了Receive，而在Filter类上留一个纯虚函数供用户重载进行数据处理。这种情况下一般是无需重载Receive方法的，除非基类的实现不符合你的实际要求。而如果你重载了Receive方法，一般会同时重载以下三个函数EndOfStream、BeginFlush和EndFlush。我们再来看一下输出Pin的实现。一般情况下，你要实现基类所有的纯虚函数，除了CheckMediaType进行媒体类型检查外，一般还有DecideBufferSize以决定Sample使用内存的大小，GetMediaType提供支持的媒体类型。最后，我们看一下Filter类的实现。首先当然也要实现基类的所有纯虚函数。除此之外，Filter还要实现CreateInstance以提供COM的入口，实现NonDelegatingQueryInterface以暴露支持的接口。如果我们创建了自定义的输入、输出Pin，一般我们还要重载GetPinCount和GetPin两个函数。<br />
Filter框架的实现大致就是这样。你或许还想知道怎样在Filter上实现一个自定义的接口，以及怎么实现Filter的属性页等等。限于篇幅，笔者就不展开阐述了。其实，这些问题都能在SDK的示例项目中找到答案。其他的，关于在实际编程中应该注意的一些问题，笔者整理了一下，供大家参考。<br />
1.&nbsp;&nbsp;&nbsp;&nbsp;锁（Lock）问题<br />
DirectShow应用程序至少包含有两条线程：一条主线程和一条数据传输线程。既然是多线程，肯定会碰到线程同步的问题。Filter有两种锁：Filter对象锁和数据流锁。Filter对象锁用于Filter级别的如Filter状态转换、BeginFlush、EndFlush等；数据流锁用于数据处理线程内，比如Receive、EndOfStream等。如果这两种锁没有搞清楚，很容易产生程序的死锁，这一点特别需要提醒。<br />
2.&nbsp;&nbsp;&nbsp;&nbsp;EndOfStream问题<br />
当Filter接收到这个&#8220;消息&#8221;，意味着上一级Filter的数据都已经发送完毕。在这之后，如果Receive再有数据接收，也不应该去理睬它。如果Filter对输入Pin上的数据进行了缓存，在接收到EndOfStream后应确保所有缓存的数据都已经处理过了才能返回。<br />
3.&nbsp;&nbsp;&nbsp;&nbsp;Media Seeking问题<br />
一般情况下，你只需要在Filter的输出Pin上实现NonDelegatingQueryInterface方法，当用户申请得到IID_ImediaPosition接口或IID_IMediaSeeking接口时将请求往上一级Filter的输出Pin上传递。当Filter Graph进行Mediaseeking的时候，一般会调用Filter上的BeginFlush、EndFlush和NewSegment。如果你的Filter对数据进行了缓存，你就要重载它们，并做出相应的处理。如果你的Filter负责给发送出去的Sample打时间戳，那么，在Mediaseeking之后应该重新从零开始打起。<br />
4.&nbsp;&nbsp;&nbsp;&nbsp;关于使用专门的线程<br />
如果你使用了专门的线程进行数据的处理和发送，你需要特别小心，不要让线程进行死循环，并且要让线程处理函数能够去时时检查线程命令。应该确保在Filter结束工作的时候，线程也能正常地结束。有时候，你把GraphEdit程序关掉，但GraphEdit进程仍在内存中，往往就是因为数据线程没有安全关闭这个原因。<br />
5.&nbsp;&nbsp;&nbsp;&nbsp;如何从媒体类型中获取信息<br />
比如，你想在输入Pin连接的媒体类型中，获取视频图像的宽、高等信息，你应该在输入Pin的CompleteConnect方法中实现，而不要在SetMediaType中。
<img src ="http://www.blogjava.net/xiaomage234/aggbug/229945.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2008-09-19 15:07 <a href="http://www.blogjava.net/xiaomage234/archive/2008/09/19/229945.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DirectShow系列讲座之二——Filter原理[转]</title><link>http://www.blogjava.net/xiaomage234/archive/2008/09/19/229943.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Fri, 19 Sep 2008 07:06:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2008/09/19/229943.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/229943.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2008/09/19/229943.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/229943.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/229943.html</trackback:ping><description><![CDATA[<p>在上一讲中，笔者介绍了DirectShow的总体系统框架。从这一讲开始，我们要从程序员的角度，进一步深入探讨一下DirectShow的应用以及Filter的开发。<br />
在这之前，笔者首先要特别提一下微软提供的一个Filter测试工具——GraphEdit，它的路径在DXSDK\bin\DXUtils\GraphEdit.exe。（如果您还没有安装DirectX SDK，请到微软的网站上去下载。）通过这个工具，我们可以很直观地看到Filter Graph的运行及处理流程，方便我们进行程序调试。（如果您手边就有电脑，还等什么，马上体验一下吧：运行GraphEdit，执行File-&gt;Render Media File&#8230;选择一个媒体文件；当Filter Graph构建成功后，按下工具栏的运行按钮；您就能看到刚才选择的媒体文件被回放出来了！看到了吧，写一个媒体播放器也就这么回事！）<br />
接下去，我们开讲Filter的开发。<br />
学习DirectShow Filter的开发，不外乎以下几种方法：看帮助文档、看示例代码和看SDK基类源代码。看帮助文档，应着重于总体概念上的理解；看示例代码应与基类源代码的研究同步进行，因为自己写Filter，关键的第一步是选择一个合适的Filter基类和Pin的基类。对于Filter的把握，一般认为要掌握以下三方面的内容：Filter之间Pin的连接、Filter之间的数据传输以及流媒体的随机访问（或者说流的定位）。下面就开始分别进行阐述。<br />
所谓的Filter Pin之间的连接，实际上是Pin之间Media Type（媒体类型）的一个协商过程。连接总是从输出Pin指向输入Pin的。要想深入了解具体的连接过程，就必须认真研读SDK的基类源代码（位于DXSDK\samples\Multimedia\DirectShow\BaseClasses\amfilter.cpp，类CBasePin的Connect方法）。连接的大致过程为，枚举欲连接的输入Pin上所有的媒体类型，逐一用这些媒体类型与输出Pin进行连接，如果输出Pin也接受这种媒体类型，则Pin之间的连接宣告成功；如果所有输入Pin上枚举的媒体类型输出Pin都不支持，则枚举输出Pin上的所有媒体类型，并逐一用这些媒体类型与输入Pin进行连接。如果输入Pin接受其中的一种媒体类型，则Pin之间的连接到此也宣告成功；如果输出Pin上的所有媒体类型，输入Pin都不支持，则这两个Pin之间的连接过程宣告失败。<br />
有一点需要注意的是，上述的输入Pin与输出Pin一般不属于同一个Filter，典型的是上一级Filter（也叫Upstream Filter）的输出Pin连向下一级Filter（也叫Downstream Filter）的输入Pin。如下图所示：</p>
<p><br />
<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/happydeer/13692/o_DSLetc2_1.jpg" align="baseline" border="0" /></p>
<p><br />
当Filter的Pin之间连接完成，也就是说，连接双方通过协商取得了一种大家都支持的媒体类型之后，即开始为数据传输做准备。这些准备工作中，最重要的是Pin上的内存分配器的协商，一般也是由输出Pin发起。在DirectShow Filter之间，数据是通过一个一个数据包传送的，这个数据包叫做Sample。Sample本身是一个COM对象，拥有一段内存用以装载数据，Sample就由内存分配器（Allocator）来统一管理。已成功连接的一对输出、输入Pin使用同一个内存分配器，所以数据从输出Pin传送到输入Pin上是无需内存拷贝的。而典型的数据拷贝，一般发生在Filter内部，从Filter的输入Pin上读取数据后，进行一定意图的处理，然后在Filter的输出Pin上填充数据，然后继续往下传输。下面，我们就具体阐述一下Filter之间的数据传送。<br />
首先，大家要区分一下Filter的两种主要的数据传输模式：推模式（Push Model）和拉模式(Pull Model)。参考图如下：</p>
<p><img alt="" src="http://blog.csdn.net/images/blog_csdn_net/happydeer/13692/o_DSLetc2_2.jpg" align="baseline" border="0" /></p>
<p><img alt="" src="http://blog.csdn.net/images/blog_csdn_net/happydeer/13692/o_DSLetc2_3.jpg" align="baseline" border="0" /><br />
&nbsp;&nbsp;<br />
所谓推模式，即源Filter（Source Filter）自己能够产生数据，并且一般在它的输出Pin上有独立的子线程负责将数据发送出去，常见的情况如代表WDM模型的采集卡的Live Source Filter；而所谓拉模式，即源Filter不具有把自己的数据送出去的能力，这种情况下，一般源Filter后紧跟着接一个Parser Filter或Splitter Filter，这种Filter一般在输入Pin上有个独立的子线程，负责不断地从源Filter索取数据，然后经过处理后将数据传送下去，常见的情况如文件源。推模式下，源Filter是主动的；拉模式下，源Filter是被动的。而事实上，如果将上图拉模式中的源Filter和Splitter Filter看成另一个虚拟的源Filter，则后面的Filter之间的数据传输也与推模式完全相同。<br />
那么，数据到底是怎么通过连接着的Pin传输的呢？首先来看推模式。在源Filter后面的Filter输入Pin上，一定实现了一个IMemInputPin接口，数据正是通过上一级Filter调用这个接口的Receive方法进行传输的。值得注意的是（上面已经提到过），数据从输出Pin通过Receive方法调用传输到输入Pin上，并没有进行内存拷贝，它只是一个相当于数据到达的&#8220;通知&#8221;。再看一下拉模式。拉模式下的源Filter的输出Pin上，一定实现了一个IAsyncReader接口；其后面的Splitter Filter，就是通过调用这个接口的Request方法或者SyncRead方法来获得数据。Splitter Filter然后像推模式一样，调用下一级Filter输入Pin上的IMemInputPin接口Receive方法实现数据的往下传送。深入了解这部分内容，请认真研读SDK的基类源代码（位于DXSDK\samples\Multimedia\DirectShow\BaseClasses\source.cpp和pullpin.cpp）。<br />
下面，我们来讲一下流的定位（Media Seeking）。在GraphEdit中，当我们成功构建了一个Filter Graph之后，我们就可以播放它。在播放中，我们可以看到进度条也在相应地前进。当然，我们也可以通过拖动进度条，实现随机访问。要做到这一点，在应用程序级别应该可以知道Filter Graph总共要播放多长时间，当前播放到什么位置等等。那么，在Filter级别，这一点是怎么实现的呢？<br />
我们知道，若干个Filter通过Pin的相互连接组成了Filter Graph。而这个Filter Graph是由另一个COM对象Filter Graph Manager来管理的。通过Filter Graph Manager，我们就可以得到一个IMediaSeeking的接口来实现对流媒体的定位。在Filter级别，我们可以看到，Filter Graph Manager首先从最后一个Filter（Renderer Filter）开始，询问上一级Filter的输出Pin是否支持IMediaSeeking接口。如果支持，则返回这个接口；如果不支持，则继续往上一级Filter询问，直到源Filter。一般在源Filter的输出Pin上实现IMediaSeeking接口，它告诉调用者总共有多长时间的媒体内容，当前播放位置等信息。（如果是文件源，一般在Parser Filter或Splitter Filter实现这个接口。）对于Filter开发者来说，如果我们写的是源Filter，我们就要在Filter的输出Pin上实现IMediaSeeking这个接口；如果写的是中间的传输Filter，只需要在输出Pin上将用户的获得接口请求往上传递给上一级Filter的输出Pin；如果写的是Renderer Filter，需要在Filter上将用户的获得接口请求往上传递给上一级Filter的输出Pin。进一步的了解，请认真研读SDK的基类源代码（位于DXSDK\samples\Multimedia\DirectShow\BaseClasses\transfrm.cpp的类方法CTransformOutputPin::NonDelegatingQueryInterface实现和ctlutil.cpp中类CPosPassThru的实现）。<br />
以上我们介绍了一下如何学习DirectShow Filter开发，以及一些开始写自己的Filter之前的预备知识。下一讲，笔者将根据自己开发Filter的经验，手把手教你如何写自己的Filter。<br />
</p>
<img src ="http://www.blogjava.net/xiaomage234/aggbug/229943.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2008-09-19 15:06 <a href="http://www.blogjava.net/xiaomage234/archive/2008/09/19/229943.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> DirectShow系列讲座之一——DirectShow系统概述[转]</title><link>http://www.blogjava.net/xiaomage234/archive/2008/09/19/229942.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Fri, 19 Sep 2008 07:05:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2008/09/19/229942.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/229942.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2008/09/19/229942.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/229942.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/229942.html</trackback:ping><description><![CDATA[来源:http://blog.csdn.net/happydeer/archive/2003/01/04/8769.aspx<br />
<br />
<p>流媒体的处理，以其复杂性和技术性，一向广受工业界的关注。特别伴随着因特网的普及，流媒体在网络上的广泛应用，怎样使流媒体的处理变得简单而富有成效逐渐成为了焦点问题。选择一种合适的应用方案，事半功倍。此时，微软的DirectShow，给了我们一个不错的选择。<br />
DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包，与DirectX开发包一起发布。目前，DirectX最新版本为9.0。<br />
那么，DirectShow能够做些什么呢？且看，DirectShow为多媒体流的捕捉和回放提供了强有力的支持。运用DirectShow，我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据，并且进行相应的后期处理乃至存储到文件中。它广泛地支持各种媒体格式，包括Asf、Mpeg、Avi、Dv、Mp3、Wave等等，使得多媒体数据的回放变得轻而易举。另外，DirectShow还集成了DirectX其它部分（比如DirectDraw、DirectSound）的技术，直接支持DVD的播放，视频的非线性编辑，以及与数字摄像机的数据交换。更值得一提的是，DirectShow提供的是一种开放式的开发环境，我们可以根据自己的需要定制自己的组件。<br />
接下去，我们需要对DirectShow系统有个整体的印象。参见以下DirectShow的系统示意图：</p>
<p><img alt="" src="http://blog.csdn.net/images/blog_csdn_net/happydeer/13692/o_DSLect1.jpg" align="baseline" border="0" /></p>
<p><br />
图中央最大的一块即是DirectShow系统。DirectShow使用一种叫Filter Graph的模型来管理整个数据流的处理过程；参与数据处理的各个功能模块叫做Filter；各个Filter在Filter Graph中按一定的顺序连接成一条&#8220;流水线&#8221;协同工作。大家可以看到，按照功能来分，Filter大致分为三类：Source Filters、Transform Filters和Rendering Filters。Source Filters主要负责取得数据，数据源可以是文件、因特网、或者计算机里的采集卡、数字摄像机等，然后将数据往下传输；Transform Fitlers主要负责数据的格式转换、传输；Rendering Filtes主要负责数据的最终去向，我们可以将数据送给声卡、显卡进行多媒体的演示，也可以输出到文件进行存储。值得注意的是，三个部分并不是都只有一个Filter去完成功能。恰恰相反，每个部分往往是有几个Fitler协同工作的。比如，Transform Filters可能包含了一个Mpeg的解码Filter、以及视频色彩空间的转换Filter、音频采样频率转换Filter等等。除了系统提供的大量Filter外，我们可以定制自己的Filter，以完成我们需要的功能。下图是一条典型的Avi文件回放Filter Graph链路：</p>
<p><br />
<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/happydeer/13692/o_DSLect2.jpg" align="baseline" border="0" /></p>
<p><br />
在DirectShow系统之上，我们看到的，即是我们的应用程序（Application）。应用程序要按照一定的意图建立起相应的Filter Graph，然后通过Filter Graph Manager来控制整个的数据处理过程。DirectShow能在Filter Graph运行的时候接收到各种事件，并通过消息的方式发送到我们的应用程序。这样，就实现了应用程序与DirectShow系统之间的交互。下图给出了DirectShow应用程序开发的一般过程：</p>
<p><br />
<img alt="" src="http://blog.csdn.net/images/blog_csdn_net/happydeer/13692/o_DSLect3.jpg" align="baseline" border="0" /><br />
<br />
以上简单介绍了DirectShow的系统结构，希望大家对这个强劲的应用框架已经有了大概的认识。如果你有兴趣，可以详细研究DirectX的帮助文档。DirectShow是一个强大的开发包；另外，它是基于COM的，因此要求程序员具有COM编程的一些基本知识。关于如何深入学习DirectShow应用结构以及开发自己的Filter，请参阅笔者的后续文章。笔者将从编程的角度，详细讲述来源于实际工作中的经验之谈。<br />
</p>
<img src ="http://www.blogjava.net/xiaomage234/aggbug/229942.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2008-09-19 15:05 <a href="http://www.blogjava.net/xiaomage234/archive/2008/09/19/229942.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]AVI文件格式</title><link>http://www.blogjava.net/xiaomage234/archive/2008/09/19/229941.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Fri, 19 Sep 2008 07:03:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2008/09/19/229941.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/229941.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2008/09/19/229941.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/229941.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/229941.html</trackback:ping><description><![CDATA[<p style="margin: 0in 0in 0pt"><font color="#000000"><strong><span style="font-size: 9pt; color: red; font-family: 宋体">来源:http://blog.csdn.net/happydeer</span></strong></font></p>
<p style="margin: 0in 0in 0pt"><font color="#000000"><strong><span style="font-size: 9pt; color: red; font-family: 宋体">小知识：</span></strong><strong><span style="font-size: 9pt; color: red; font-family: 宋体">AVI文件格式----摘自《DirectShow实务精选》 作者：陆其明</span></strong></font></p>
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"><span style="font-size: 9pt; color: red; font-family: 宋体"><font color="#000000">AVI（Audio Video Interleaved的缩写）是一种RIFF（Resource Interchange File Format的缩写）文件格式，多用于音视频捕捉、编辑、回放等应用程序中。通常情况下，一个AVI文件可以包含多个不同类型的媒体流（典型的情况下有一个音频流和一个视频流），不过含有单一音频流或单一视频流的AVI文件也是合法的。AVI可以算是Windows操作系统上最基本的、也是最常用的一种媒体文件格式。</font></span></p>
<span style="font-size: 9pt; color: red; font-family: 宋体"><font color="#000000">
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"><br />
先来介绍RIFF文件格式。RIFF文件使用四字符码FOURCC（four-character code）来表征数据类型，比如&#8216;RIFF&#8217;、&#8216;AVI &#8217;、&#8216;LIST&#8217;等。注意，Windows操作系统使用的字节顺序是little-endian，因此一个四字符码&#8216;abcd&#8217;实际的DWORD值应为0x64636261。另外，四字符码中像&#8216;AVI &#8217;一样含有空格也是合法的。</p>
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"><br />
RIFF文件首先含有一个如图3.31的文件头结构。</font></span></p>
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"><span style="font-size: 9pt; color: red; font-family: 宋体"><font color="#000000"><img alt="" hspace="0" src="http://blog.csdn.net/images/blog_csdn_net/happydeer/13692/o_AviFileFormat.jpg" align="baseline" border="0" />&nbsp;</font></span></p>
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"><span style="font-size: 9pt; color: red; font-family: 宋体"><font color="#000000">图3.31 RIFF文件结构</font></span></p>
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"><span style="font-size: 9pt; color: red; font-family: 宋体"><font color="#000000">最开始的4个字节是一个四字符码&#8216;RIFF&#8217;，表示这是一个RIFF文件；紧跟着后面用4个字节表示此RIFF文件的大小；然后又是一个四字符码说明文件的具体类型（比如AVI、WAVE等）；最后就是实际的数据。注意文件大小值的计算方法为：实际数据长度 + 4（文件类型域的大小）；也就是说，文件大小的值不包括&#8216;RIFF&#8217;域和&#8220;文件大小&#8221;域本身的大小。</font></span></p>
<span style="font-size: 9pt; color: red; font-family: 宋体"><font color="#000000">
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"><br />
RIFF文件的实际数据中，通常还使用了列表（List）和块（Chunk）的形式来组织。列表可以嵌套子列表和块。其中，列表的结构为：&#8216;LIST&#8217; listSize listType listData ——&#8216;LIST&#8217;是一个四字符码，表示这是一个列表；listSize占用4字节，记录了整个列表的大小；listType也是一个四字符码，表示本列表的具体类型；listData就是实际的列表数据。注意listSize值的计算方法为：实际的列表数据长度 + 4（listType域的大小）；也就是说listSize值不包括&#8216;LIST&#8217;域和listSize域本身的大小。再来看块的结构：ckID ckSize ckData ——ckID是一个表示块类型的四字符码；ckSize占用4字节，记录了整个块的大小；ckData为实际的块数据。注意ckSize值指的是实际的块数据长度，而不包括ckID域和ckSize域本身的大小。（注意：在下面的内容中，将以LIST ( listType ( listData ) )的形式来表示一个列表，以ckID ( ckData )的形式来表示一个块，如[ optional element ]中括号中的元素表示为可选项。）</p>
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"><br />
接下来介绍AVI文件格式。AVI文件类型用一个四字符码&#8216;AVI &#8217;来表示。整个AVI文件的结构为：一个RIFF头 + 两个列表（一个用于描述媒体流格式、一个用于保存媒体流数据） + 一个可选的索引块。AVI文件的展开结构大致如下：</p>
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"></font></span>&nbsp;</p>
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"><span style="font-size: 9pt; color: red; font-family: 宋体"><font color="#000000">RIFF (&#8216;AVI &#8217;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LIST (&#8216;hdrl&#8217;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8216;avih&#8217;(主AVI信息头数据)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LIST (&#8216;strl&#8217;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8216;strh&#8217; (流的头信息数据)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8216;strf&#8217; (流的格式信息数据)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&#8216;strd&#8217; (可选的额外的头信息数据) ]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&#8216;strn&#8217; (可选的流的名字) ]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LIST (&#8216;movi&#8217;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { SubChunk | LIST (&#8216;rec &#8217;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SubChunk1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SubChunk2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [&#8216;idx1&#8217; (可选的AVI索引块数据) ]<br />
&nbsp;&nbsp;&nbsp;&nbsp; )</font></span></p>
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"><span style="font-size: 9pt; color: red; font-family: 宋体"><font color="#000000">首先，RIFF (&#8216;AVI &#8217;&#8230;)表征了AVI文件类型。然后就是AVI文件必需的第一个列表——&#8216;hdrl&#8217;列表，用于描述AVI文件中各个流的格式信息（AVI文件中的每一路媒体数据都称为一个流）。&#8216;hdrl&#8217;列表嵌套了一系列块和子列表——首先是一个&#8216;avih&#8217;块，用于记录AVI文件的全局信息，比如流的数量、视频图像的宽和高等，可以使用一个AVIMAINHEADER数据结构来操作：</font></span></p>
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"><span style="font-size: 9pt; color: red; font-family: 宋体"><font color="#000000">typedef struct _avimainheader {<br />
&nbsp;&nbsp;&nbsp; FOURCC fcc;&nbsp;&nbsp; // 必须为&#8216;avih&#8217;<br />
&nbsp;&nbsp;&nbsp; DWORD&nbsp; cb;&nbsp;&nbsp;&nbsp; // 本数据结构的大小，不包括最初的8个字节（fcc和cb两个域）<br />
&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwMicroSecPerFrame;&nbsp;&nbsp; // 视频帧间隔时间（以毫秒为单位）<br />
&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwMaxBytesPerSec;&nbsp;&nbsp;&nbsp;&nbsp; // 这个AVI文件的最大数据率<br />
&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwPaddingGranularity; // 数据填充的粒度<br />
&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwFlags;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // AVI文件的全局标记，比如是否含有索引块等<br />
&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwTotalFrames;&nbsp;&nbsp; // 总帧数<br />
&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwInitialFrames; // 为交互格式指定初始帧数（非交互格式应该指定为0）<br />
&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwStreams;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 本文件包含的流的个数<br />
&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwSuggestedBufferSize; // 建议读取本文件的缓存大小（应能容纳最大的块）<br />
&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwWidth;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 视频图像的宽（以像素为单位）<br />
&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwHeight;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 视频图像的高（以像素为单位）<br />
&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwReserved[4];&nbsp;&nbsp; // 保留<br />
} AVIMAINHEADER;</font></span></p>
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"><span style="font-size: 9pt; color: red; font-family: 宋体"><font color="#000000">然后，就是一个或多个&#8216;strl&#8217;子列表。（文件中有多少个流，这里就对应有多少个&#8216;strl&#8217;子列表。）每个&#8216;strl&#8217;子列表至少包含一个&#8216;strh&#8217;块和一个&#8216;strf&#8217;块，而&#8216;strd&#8217;块（保存编解码器需要的一些配置信息）和&#8216;strn&#8217;块（保存流的名字）是可选的。首先是&#8216;strh&#8217;块，用于说明这个流的头信息，可以使用一个AVISTREAMHEADER数据结构来操作：</font></span></p>
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"><span style="font-size: 9pt; color: red; font-family: 宋体"><font color="#000000">typedef struct _avistreamheader {<br />
&nbsp;&nbsp;&nbsp;&nbsp; FOURCC fcc;&nbsp; // 必须为&#8216;strh&#8217;<br />
&nbsp;&nbsp;&nbsp;&nbsp; DWORD&nbsp; cb;&nbsp;&nbsp; // 本数据结构的大小，不包括最初的8个字节（fcc和cb两个域）<br />
FOURCC fccType;&nbsp;&nbsp;&nbsp; // 流的类型：&#8216;auds&#8217;（音频流）、&#8216;vids&#8217;（视频流）、<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&#8216;mids&#8217;（MIDI流）、&#8216;txts&#8217;（文字流）<br />
&nbsp;&nbsp;&nbsp;&nbsp; FOURCC fccHandler; // 指定流的处理者，对于音视频来说就是解码器<br />
&nbsp;&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwFlags;&nbsp;&nbsp;&nbsp; // 标记：是否允许这个流输出？调色板是否变化？<br />
&nbsp;&nbsp;&nbsp;&nbsp; WORD&nbsp;&nbsp; wPriority;&nbsp; // 流的优先级（当有多个相同类型的流时优先级最高的为默认流）<br />
&nbsp;&nbsp;&nbsp;&nbsp; WORD&nbsp;&nbsp; wLanguage;<br />
&nbsp;&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwInitialFrames; // 为交互格式指定初始帧数<br />
&nbsp;&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwScale;&nbsp;&nbsp; // 这个流使用的时间尺度<br />
&nbsp;&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwRate;<br />
&nbsp;&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwStart;&nbsp;&nbsp; // 流的开始时间<br />
&nbsp;&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwLength;&nbsp; // 流的长度（单位与dwScale和dwRate的定义有关）<br />
&nbsp;&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwSuggestedBufferSize; // 读取这个流数据建议使用的缓存大小<br />
&nbsp;&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwQuality;&nbsp;&nbsp;&nbsp; // 流数据的质量指标（0 ~ 10,000）<br />
&nbsp;&nbsp;&nbsp;&nbsp; DWORD&nbsp; dwSampleSize; // Sample的大小<br />
&nbsp;&nbsp;&nbsp;&nbsp; struct {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short int left;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short int top;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short int right;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short int bottom;<br />
}&nbsp; rcFrame;&nbsp; // 指定这个流（视频流或文字流）在视频主窗口中的显示位置<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 视频主窗口由AVIMAINHEADER结构中的dwWidth和dwHeight决定<br />
} AVISTREAMHEADER;</font></span></p>
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"><span style="font-size: 9pt; color: red; font-family: 宋体"><font color="#000000">然后是&#8216;strf&#8217;块，用于说明流的具体格式。如果是视频流，则使用一个BITMAPINFO数据结构来描述；如果是音频流，则使用一个WAVEFORMATEX数据结构来描述。</font></span></p>
<span style="font-size: 9pt; color: red; font-family: 宋体"><font color="#000000">
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"><br />
当AVI文件中的所有流都使用一个&#8216;strl&#8217;子列表说明了以后（注意：&#8216;strl&#8217;子列表出现的顺序与媒体流的编号是对应的，比如第一个&#8216;strl&#8217;子列表说明的是第一个流（Stream 0），第二个&#8216;strl&#8217;子列表说明的是第二个流（Stream 1），以此类推），&#8216;hdrl&#8217;列表的任务也就完成了，随后跟着的就是AVI文件必需的第二个列表——&#8216;movi&#8217;列表，用于保存真正的媒体流数据（视频图像帧数据或音频采样数据等）。那么，怎么来组织这些数据呢？可以将数据块直接嵌在&#8216;movi&#8217;列表里面，也可以将几个数据块分组成一个&#8216;rec &#8217;列表后再编排进&#8216;movi&#8217;列表。（注意：在读取AVI文件内容时，建议将一个&#8216;rec &#8217;列表中的所有数据块一次性读出。）但是，当AVI文件中包含有多个流的时候，数据块与数据块之间如何来区别呢？于是数据块使用了一个四字符码来表征它的类型，这个四字符码由2个字节的类型码和2个字节的流编号组成。标准的类型码定义如下：&#8216;db&#8217;（非压缩视频帧）、&#8216;dc&#8217;（压缩视频帧）、&#8216;pc&#8217;（改用新的调色板）、&#8216;wb&#8217;（音缩视频）。比如第一个流（Stream 0）是音频，则表征音频数据块的四字符码为&#8216;00wb&#8217;；第二个流（Stream 1）是视频，则表征视频数据块的四字符码为&#8216;00db&#8217;或&#8216;00dc&#8217;。对于视频数据来说，在AVI数据序列中间还可以定义一个新的调色板，每个改变的调色板数据块用&#8216;xxpc&#8217;来表征，新的调色板使用一个数据结构AVIPALCHANGE来定义。（注意：如果一个流的调色办中途可能改变，则应在这个流格式的描述中，也就是AVISTREAMHEADER结构的dwFlags中包含一个AVISF_VIDEO_PALCHANGES标记。）另外，文字流数据块可以使用随意的类型码表征。</p>
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"><br />
最后，紧跟在&#8216;hdrl&#8217;列表和&#8216;movi&#8217;列表之后的，就是AVI文件可选的索引块。这个索引块为AVI文件中每一个媒体数据块进行索引，并且记录它们在文件中的偏移（可能相对于&#8216;movi&#8217;列表，也可能相对于AVI文件开头）。索引块使用一个四字符码&#8216;idx1&#8217;来表征，索引信息使用一个数据结构来AVIOLDINDEX定义。</p>
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"></font></span>&nbsp;</p>
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"><span style="font-size: 9pt; color: red; font-family: 宋体"><font color="#000000">typedef struct _avioldindex {<br />
&nbsp;&nbsp; FOURCC&nbsp; fcc;&nbsp; // 必须为&#8216;idx1&#8217;<br />
&nbsp;&nbsp; DWORD&nbsp;&nbsp; cb;&nbsp;&nbsp; // 本数据结构的大小，不包括最初的8个字节（fcc和cb两个域）<br />
&nbsp;&nbsp; struct _avioldindex_entry {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWORD&nbsp;&nbsp; dwChunkId;&nbsp;&nbsp; // 表征本数据块的四字符码<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWORD&nbsp;&nbsp; dwFlags;&nbsp;&nbsp;&nbsp;&nbsp; // 说明本数据块是不是关键帧、是不是&#8216;rec &#8217;列表等信息<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWORD&nbsp;&nbsp; dwOffset;&nbsp;&nbsp;&nbsp; // 本数据块在文件中的偏移量<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWORD&nbsp;&nbsp; dwSize;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 本数据块的大小<br />
&nbsp; } aIndex[]; // 这是一个数组！为每个媒体数据块都定义一个索引信息<br />
} AVIOLDINDEX;</font></span></p>
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"><span style="font-size: 9pt; color: red; font-family: 宋体"><font color="#000000">注意：如果一个AVI文件包含有索引块，则应在主AVI信息头的描述中，也就是AVIMAINHEADER结构的dwFlags中包含一个AVIF_HASINDEX标记。</font></span></p>
<span style="font-size: 9pt; color: red; font-family: 宋体"><font color="#000000">
<p style="margin: 0in 0in 0pt; text-indent: 0.25in"><br />
还有一种特殊的数据块，用一个四字符码&#8216;JUNK&#8217;来表征，它用于内部数据的队齐（填充），应用程序应该忽略这些数据块的实际意义。</font></span></p>
<img src ="http://www.blogjava.net/xiaomage234/aggbug/229941.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2008-09-19 15:03 <a href="http://www.blogjava.net/xiaomage234/archive/2008/09/19/229941.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用FFmpeg从视频截取任意一帧图片的解决办法~ zz</title><link>http://www.blogjava.net/xiaomage234/archive/2008/09/19/229940.html</link><dc:creator>小马歌</dc:creator><author>小马歌</author><pubDate>Fri, 19 Sep 2008 07:01:00 GMT</pubDate><guid>http://www.blogjava.net/xiaomage234/archive/2008/09/19/229940.html</guid><wfw:comment>http://www.blogjava.net/xiaomage234/comments/229940.html</wfw:comment><comments>http://www.blogjava.net/xiaomage234/archive/2008/09/19/229940.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaomage234/comments/commentRss/229940.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaomage234/services/trackbacks/229940.html</trackback:ping><description><![CDATA[在我的<a href="http://yao.cnblogs.com/archive/2006/01/17/318769.html">另一篇日志</a>中,说到利用FFmpeg从视频截图的命令,那天在找从视频截取指定帧的图片的办法,这么多天没有进展,原来我从网上找的关于FFmpeg的参数命令列表并不全,少了-ss这么一个参数.于是这个问题也到现在才解决.
<p>&nbsp;&nbsp;&nbsp; 今天利用FFmpeg -h &gt; ffmpeg.txt,把FFmpeg的命令打印出来后,才发现了这一参数:</p>
<p>-ss time_off set the start time offset</p>
<p>使用-ss参数,可以从指定的时间开始处理转换任务.如:</p>
<p>ffmpeg -i test2.asf -y -f image2 -ss 08.010 -t 0.001 -s 352x240 b.jpg</p>
<p>那么从任意一帧截图的问题也就解决了.只要-ss后的时间参数是随机产生,并且在视频的有效时间内,就可以了.</p>
<p>&nbsp;另外,-ss后跟的时间单位为秒。<br />
<span style="color: #000000"><br />
2006</span><span style="color: #000000">-</span><span style="color: #000000">06</span><span style="color: #000000">-</span><span style="color: #000000">27</span><span style="color: #000000">&nbsp;补充：</span><br />
<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000"><br />
另外，通过指定</span><span style="color: #000000">-</span><span style="color: #000000">ss，和</span><span style="color: #000000">-</span><span style="color: #000000">vframes也可以达到同样的效果。<br />
<br />
这时候</span><span style="color: #000000">-</span><span style="color: #000000">ss参数后跟的时间有两种写法,hh:mm:ss&nbsp;或&nbsp;直接写秒数&nbsp;:<br />
<br />
ffmpeg&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">i&nbsp;test.asf&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">y&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">f&nbsp;&nbsp;image2&nbsp;&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">ss&nbsp;</span><span style="color: #000000">00</span><span style="color: #000000">:</span><span style="color: #000000">01</span><span style="color: #000000">:</span><span style="color: #000000">00</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">vframes&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;&nbsp;test1.jpg<br />
or<br />
ffmpeg&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">i&nbsp;test.asf&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">y&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">f&nbsp;&nbsp;image2&nbsp;&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">ss&nbsp;</span><span style="color: #000000">60</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">vframes&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;&nbsp;test1.jpg<br />
<br />
这样输出的图片是相同的。</span></div>
<img src ="http://www.blogjava.net/xiaomage234/aggbug/229940.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaomage234/" target="_blank">小马歌</a> 2008-09-19 15:01 <a href="http://www.blogjava.net/xiaomage234/archive/2008/09/19/229940.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>