at_takuya.sasaki
2016年6月5日 18時33分
Armadillo-840のAVコーデックミドルウェアを利用して、H.264/AAC形式のファイルを再生しようとしても、動画再生が行われない場合の対処方法です。
上記マニュアルを参考にしてArmadillo-840のLCDとオーディオ出力を利用してビデオとオーディオを再生した場合に、以下のような表示のまま再生が行われない場合がありました。
[root@armadillo840-0 (ttySC2) ~] gst-launch-1.0 filesrc location=./test.mp4 ! qtdemux name=demux0 demux0.audio_0 ! \ queue ! acmaacdec ! audioresample ! audio/x-raw,rate=48000,channels=2 \ ! alsasink device=hw:1 demux0.video_0 ! queue ! acmh264dec ! \ video/x-raw,width=800,height=480 ! acmfbdevsink device=/dev/fb1
同様な症状にぶつかった場合、再生したmp4ファイルのフレームレートを調べてみてください。 (PC上でmp4ファイルのプロパティを見ることで確認することができます。)
もしmp4ファイルのフレームレートが16FPS以下の場合、パイプラインに「max-size-time=0 」を追加することで解消される可能性があります。
[root@armadillo840-0 (ttySC2) ~] gst-launch-1.0 filesrc location=./test.mp4 ! qtdemux name=demux0 demux0.audio_0 ! \ queue max-size-time=0 ! acmaacdec ! audioresample ! audio/x-raw,rate=48000,channels=2 \ ! alsasink device=hw:1 demux0.video_0 ! queue ! acmh264dec ! \ video/x-raw,width=800,height=480 ! acmfbdevsink device=/dev/fb1
本現象は、acmh264dec, acmaacdec の間で、Buffer を下流に流し始めるまでに必要な上流から受ける Buffer 数に差があり、この差による影響から、 qtdemux が下流に Buffer を 流さなくなるため発生します。ビデオ再生だけの場合には発生しません。
以上