<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>memo.393 &#187; FMS</title>
	<atom:link href="http://memo.393.bz/archives/tag/fms/feed" rel="self" type="application/rss+xml" />
	<link>http://memo.393.bz</link>
	<description>個人的メモです。間違いなどありましたらご指摘ください。。。</description>
	<lastBuildDate>Sun, 27 Nov 2011 15:27:41 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>[AS]FMSにアップしたmp4なファイルをFLVPlaybackで再生するときのファイルパス指定の注意</title>
		<link>http://memo.393.bz/archives/1480</link>
		<comments>http://memo.393.bz/archives/1480#comments</comments>
		<pubDate>Mon, 21 Feb 2011 17:11:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[FMS]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1480</guid>
		<description><![CDATA[結構はまったのでメモ まず、以前のエントリーでFMS経由で動画ファイルを指定する際は拡張子が不要ということを書いたけど、これは正確ではなかった。 正確には、[FMSにflv形式でアップされているファイル]にアクセスすると [...]]]></description>
			<content:encoded><![CDATA[<p>結構はまったのでメモ</p>
<p>まず、<a href="http://memo.393.bz/archives/489">以前のエントリー</a>でFMS経由で動画ファイルを指定する際は拡張子が不要ということを書いたけど、これは正確ではなかった。<br />
正確には、[FMSにflv形式でアップされているファイル]にアクセスするときは、拡張子を書かないが正解。</p>
<p>では、f4v形式や、mp4形式のファイルをアップした際はどうするか？<br />
単純に拡張子をつければいいわけではなかった。<br />
ファイル名の頭に、[mp4:]をつける必要があった。</p>
<pre name="code" class="as">

//独自プレイヤーでの実装例（いろいろ省略）
var nc:NetConnection = new NetConnection();
nc.connect(&quot;rtmp://hoge.moge.ore/dore&quot;);
var ns:NetStream = new NetStream(nc);
ns.play(&quot;mp4:hoge.mp4&quot;);
//ns.play(&quot;mp4:hoge.f4v&quot;);//f4v形式での例
</pre>
<p>以上を踏まえて、FLVPlaybackを利用する際のパス指定も同じにしようと思ったらそうはいかなかった。</p>
<p>悪い例</p>
<pre name="code" class="as">

//誤ったファイルパスの指定
var flvPlayback:FLVPlayback = new FLVPlayback();
flvPlayback.play(&quot;rtmp://hoge.moge.ore/dore/mp4:hoge.mp4&quot;);
</pre>
<p>これだとうまく接続できなかった。<br />
<a href="http://help.adobe.com/ja_JP/FlashMediaServer/3.5_Deving/flashmediaserver_3.5_dev_guide.pdf">FMSのヘルプ</a>を観てると、違った書き方をしてる例があった。<br />
（19ページの上の方）</p>
<p>正しい例</p>
<pre name="code" class="as">

var flvPlayback:FLVPlayback = new FLVPlayback();
flvPlayback.play(&quot;rtmp://hoge.moge.ore/mp4:dore/hoge.mp4&quot;);
</pre>
<p>[mp4:]の記述はファイルの頭ではなく、ひとつ上のフォルダに記述するらしい。<br />
なんでかは詳しくわからんけども、今回はこれでうまく接続できた。<br />
うまくいかない人は試してみるといいかも。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1480/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[AS]FMSからストリーミングした動画の表示拡大するときはVideoオブジェクトを直接拡大しないとだめっぽい。</title>
		<link>http://memo.393.bz/archives/495</link>
		<comments>http://memo.393.bz/archives/495#comments</comments>
		<pubDate>Fri, 10 Apr 2009 03:26:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[FMS]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=495</guid>
		<description><![CDATA[ストリーミングした動画を拡大するときはVideoオブジェクトを直接操作したほうがいいっぽい。 たとえば、MovieClipクラスを拡張して、Videoを再生するクラスがあったとする。 package { import f [...]]]></description>
			<content:encoded><![CDATA[<p>ストリーミングした動画を拡大するときはVideoオブジェクトを直接操作したほうがいいっぽい。</p>
<p>たとえば、MovieClipクラスを拡張して、Videoを再生するクラスがあったとする。</p>
<pre name="code" class="as">

package  {
	import flash.display.MovieClip;
	import flash.media.Video;
	import flash.net.NetConnection;
	import flash.events.NetStatusEvent;
	import flash.net.NetStream;

	public class LoadMovie extends MovieClip {

		private var ncUrl:String
		private var nsUrl:String
		private var nc:NetConnection;
		private var video:Video;

		public function LoadMovie(ncUrl:String, nsUrl:String, w:uint = 320, h:uint = 320 ) {
			trace(&quot;FmsMain&quot;);
			this.ncUrl = ncUrl;
			this.nsUrl = nsUrl;

			video = new Video();
			video.width = w;
			video.height = h;
			initConnect();
		}

		function initConnect():void {

			//ネットコネクションを作る
			nc = new NetConnection();
			nc.client = new Object();
			//ネットコネクションの接続状態を調べるリスナー
			nc.addEventListener(NetStatusEvent.NET_STATUS , onNcStatus);
			//ネットコネクションを接続する。
			nc.connect(ncUrl);
		}
		//ネットコネクションの状態でいろいろ出力される
		private function onNcStatus(e:NetStatusEvent):void {
			trace(&quot;onNcStatus : &quot;+e.info.code);
			switch (e.info.code) {
				//もし無事に接続されたら、
				case &quot;NetConnection.Connect.Success&quot;:
				initStream();
				break;
				case &quot;NetConnection.Connect.Failed&quot;:
				trace(&quot;onNcStatus : &quot;+e.info.code);
				break;
				case &quot;NetStream.Play.StreamNotFound&quot;:
				trace(&quot;not Found&quot;);
				break;
				default :
				break;
			}
		}

		//ネットストリームの初期化処理
		private function initStream():void {
			//ネットコネクションを作る
			var ns:NetStream = new NetStream(nc);
			//ネットコネクションの接続状態を調べるリスナー
			ns.addEventListener(NetStatusEvent.NET_STATUS, onNsStatus);
			//読み込みの時間を設定
			ns.bufferTime = 2;
			//メタデータ取得用のオブジェクトを設定
			ns.client = new Object();
			//videoインスタンスを作成
			video.attachNetStream(ns);
			addChild(video);
			ns.play(nsUrl);
		}

		private function onNsStatus(e:NetStatusEvent):void {
			switch (e.info.code) {
				//もし失敗したら
				case &quot;NetStream.Play.StreamNotFound&quot;:
				trace(&quot;NetStream Not Found&quot;);
				break;

				default :
				trace(&quot;onNsStatus : &quot;+e.info.code);
			}
		}

	}

}
</pre>
<p>このクラスを利用するときはフレームアクションで、<br />
（ローカルにelevator.flvがあるのが前提）</p>
<pre name="code" class="as">

var ncUrl:String = null
var nsUrl:String = &quot;elevator.flv&quot;
var fms2:LoadMovie = new LoadMovie(ncUrl,nsUrl);
addChild(fms2);
</pre>
<p>この動画のサイズを変えたいときに</p>
<pre name="code" class="as">

var ncUrl:String = null
var nsUrl:String = &quot;elevator.flv&quot;
var fms2:LoadMovie = new LoadMovie(ncUrl,nsUrl);
addChild(fms2);
fms2.width = 500;
fms2.height = 500;
</pre>
<p>まあｌこれでも拡大されるのは予想通り。<br />
ただしFMSのflvを読んでる場合は拡大されるずに動画が非表示になる。<br />
（音はなってるから再生はされてるようす）</p>
<pre name="code" class="as">

//これだと動画がなぜか表示されない
var ncUrl:String = &quot;rtmp://hoge.moge&quot;
var nsUrl:String = &quot;doke&quot;
var fms2:LoadMovie = new LoadMovie(ncUrl,nsUrl);
addChild(fms2);
fms2.width = 500;
fms2.height = 500;
</pre>
<p>LoadMovieクラスには、引数w,hでvideoオブジェクトのwidth、heightを操作できるようにしてあるので、</p>
<pre name="code" class="as">

//これなら動画の大きさを操作できる。
var ncUrl:String = &quot;rtmp://hoge.moge&quot;
var nsUrl:String = &quot;doke&quot;
w = 500;
h = 500;
var fms2:LoadMovie = new LoadMovie(ncUrl,nsUrl,w,h);
addChild(fms2);
</pre>
<p>もちろんローカルのflvを再生するときもこのVideoオブジェクトを操作する方法でOK。<br />
なので、つねにこっちの方法を使った方が安全っぽい。</p>
<p>※<br />
上記の例でFMSから読み込んだ場合のLoadMovieオブジェクトのwidthとheightは、w,hをどんな値を設定しても0になるようだ。<br />
（ローカルflvを読み込んだ場合は指定した数値となる)</p>
<pre name="code" class="as">

//FMSの場合
var ncUrl:String = &quot;rtmp://hoge.moge&quot;
var nsUrl:String = &quot;doke&quot;
w = 500;
h = 500;
var fms2:LoadMovie = new LoadMovie(ncUrl,nsUrl,w,h);
addChild(fms2);
trace(fms2.width) //出力：0
trace(fms2.height) //出力：0
</pre>
<p>ローカルflvを読み込んだ場合</p>
<pre name="code" class="as">

//ローカルFLVの場合
var ncUrl:String = null
var nsUrl:String = &quot;elevator.flv&quot;
w = 500;
h = 500;
var fms2:LoadMovie = new LoadMovie(ncUrl,nsUrl,w,h);
addChild(fms2);
trace(fms2.width) //出力：500
trace(fms2.height) //出力：500
</pre>
<p>FMSから読み込んだものは実体がないということなのかな？</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/495/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[AS]FMSを使った動画再生をするときの設定の注意点</title>
		<link>http://memo.393.bz/archives/489</link>
		<comments>http://memo.393.bz/archives/489#comments</comments>
		<pubDate>Thu, 09 Apr 2009 09:21:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[FMS]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=489</guid>
		<description><![CDATA[FMS：Flash Media Server ローカルのflvのprogressive再生のときとFMSでの設定の違いをメモしとく NetConnectionの設定で ローカルflvの時は //ローカルのflvを再生する [...]]]></description>
			<content:encoded><![CDATA[<p>FMS：Flash Media Server<br />
ローカルのflvのprogressive再生のときとFMSでの設定の違いをメモしとく<br />
NetConnectionの設定で<br />
ローカルflvの時は</p>
<pre name="code" class="as">

//ローカルのflvを再生するとき
var nc:NetConnection = new NetConnection();
nc.connect(null);
</pre>
<p>FMSのときは、</p>
<pre name="code" class="as">

//FMSを使うとき
var nc:NetConnection = new NetConnection();
nc.connect(&quot;rtmp://hoge.moge.ore.dore&quot;);
nc.client = new Object();
</pre>
<p>FMSのときはnc.connectにURLを設定（flvファイルの手前のフォルダまで）<br />
※上の例はURLが　rtmp://hoge.moge.dore.flvだった場合<br />
あと、nc.client、ローカルflvでは設定しなくていいけど、FMSのときは設定してあげないとエラーになる。</p>
<p>あとNetStreamの設定<br />
ローカルflvのときは、</p>
<pre name="code" class="as">

var　ns:NetStream = new NetStream(nc);
ns.play(&quot;doke.flv&quot;)
</pre>
<p>FMSのときは</p>
<pre name="code" class="as">

var　ns:NetStream = new NetStream(nc);
ns.play(&quot;doke&quot;)
</pre>
<p>FMSのときは、.flvをつけると宜しくないようす。</p>
<p>情報追記：2011/02/22<br />
<a href="http://memo.393.bz/archives/1480">http://memo.393.bz/archives/1480</a></p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/489/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

