<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Copyright 2006 The Apache Software Foundation Licensed under the Apache 
	License, Version 2.0 (the "License"); you may not use this file except in 
	compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 
	Unless required by applicable law or agreed to in writing, software distributed 
	under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 
	OR CONDITIONS OF ANY KIND, either express or implied. See the License for 
	the specific language governing permissions and limitations under the License. -->
<document>

	<properties>
		<title>Howto switch between different versions of FFMPEG </title>
		<author email="sebawagner@apache.org">
			OpenMeetings Team
		</author>
	</properties>

	<body>

		<section name="Default Configuration">

			<p>FFMPEG has a change in its API (possibly since GIT revision
				88bfe4518)
			</p>
			<p>Since Version 1.9.x of OpenMeetings: By default OpenMeetings
				expects you to have a new version of FFMPEG on your OpenMeetings
				server installed and it will use the new API style to communicate
				with FFMPEG.
			</p>

		</section>

		<section name="Switching to old FFMPEG API">
		
			<p>
				If you want to switch to the old style you can change that using the
				config key:
				<tt>use.old.style.ffmpeg.map.option</tt>
			</p>
			<p>
				Set this value to
				<tt>1</tt>
				to have the old params in the API call to FFMPEG.
			</p>
			<p>References:  </p>
			<ul>
				<li>
					<a
						href="http://ffmpeg-users.933282.n4.nabble.com/Invalid-stream-specifier-0-Stream-map-0-0-matches-no-streams-Changes-in-FFMPEG-map-option-td4091165.html"
						rel="nofollow">http://ffmpeg-users.933282.n4.nabble.com/Invalid-stream-specifier-0-Stream-map-0-0-matches-no-streams-Changes-in-FFMPEG-map-option-td4091165.html
					</a>
				</li>
			</ul>

		</section>

	</body>

</document>