Android アプリで YouTube ビデオを再生しようとしていますが、Youtube Api から返された 3gp URL に到達できません。VLCプレーヤーとQuickTimeプレーヤーでも開いてみましたが、応答は常にプレーヤーがデータを受信できないというものです。VLC プレーヤーのログは次のとおりです。
メイン デバッグ:
rtsp://v5.cache2.c.youtube.com/CiILENy73wIaGQmyk7Qe6Z5HyRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp' successfully opened live555 warning: no data received in 10s. Switching to TCP avcodec debug: ffmpeg codec (H263) stopped main debug: removing module "avcodec" main debug: killing decoder fourcc
h263', 0 PES in FIFO avcodec デバッグ: ffmpeg コーデック (AMR 狭帯域) を停止しました メイン デバッグ: モジュール「avcodec」を削除します メイン デバッグ: デコーダー fourcc を強制終了しますsamr', 0 PES in FIFO main debug: Program doesn't contain anymore ES live555 debug: RTP subsession 'video/H263-2000' main debug: looking for decoder module: 32 candidates avcodec debug: libavcodec already initialized avcodec debug: trying to use direct rendering avcodec debug: ffmpeg codec (H263) started main debug: using decoder module "avcodec" main debug: TIMER module_need() : 0.758 ms - Total 0.758 ms / 1 intvls (Avg 0.758 ms) main debug: thread (decoder) created at priority 0 (../../src/input/decoder.c:301) main debug: thread started live555 debug: RTP subsession 'audio/AMR' main debug: looking for decoder module: 32 candidates avcodec debug: libavcodec already initialized avcodec debug: ffmpeg codec (AMR narrow band) started avcodec debug: Using 192000 bytes output buffer main debug: using decoder module "avcodec" main debug: TIMER module_need() : 391.931 ms - Total 391.931 ms / 1 intvls (Avg 391.931 ms) main debug: thread (decoder) created at priority 22 (../../src/input/decoder.c:301) main debug: thread started live555 debug: setup start: 0.000000 stop:28.666000 live555 debug: play start: 0.000000 stop:28.666000 live555 error: no data received in 10s, aborting main debug: EOF reached main debug: finished input avcodec debug: ffmpeg codec (H263) stopped main debug: removing module "avcodec" main debug: killing decoder fourcc
h263', 0 PES in FIFO avcodec デバッグ: ffmpeg コーデック (AMR ナローバンド) 停止 メイン デバッグ: モジュール「avcodec」の削除 メイン デバッグ: デコーダー fourcc `samr', 0 PES in FIFO メイン デバッグ: モジュール「live555」メイン デバッグの削除: プログラムにはもう含まれていません ES メイン デバッグ: スレッドが終了しました メイン デバッグ: デッド入力 メイン デバッグ: 要求なしでアイテムを変更します (現在の 0/1) メイン デバッグ: 再生するものは何もありません macosx デバッグ: 入力が停止し、インターフェイスを更新します メイン デバッグ: 「rtsp://v5.cache2.c.youtube.com/CiILENy73wIaGQmyk7Qe6Z5HyRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp」の TIMER 入力起動: 449.262 ms - 合計 449.262 ms / 1 intvls (平均 449.262 ms)
これは Android のログです。
05-18 14:51:42.008: D/MediaPlayer(2152): クライアント側でファイルを開けませんでした、サーバー側を試しています 05-18 14:51:42.258: D/MediaPlayer(2152): getMetadata 05-18 14: 51:53.823: E/MediaPlayer(2152): エラー (1, -2147483648) 05-18 14:51:53.823: E/MediaPlayer(2152): エラー (1,-2147483648) 05-18 14:51:53.823: D/VideoView(2152): エラー: 1,-2147483648 05-18 14:51:54.060: D/AndroidRuntime(2152): VM をシャットダウンしています 05-18 14:51:54.060: W/dalvikvm(2152): threadid= 1: キャッチされない例外で終了するスレッド (group=0x409c01f8) 05-18 14:51:54.088: E/AndroidRuntime(2152): FATAL EXCEPTION: main 05-18 14:51:54.088: E/AndroidRuntime(2152): android. view.WindowManager$BadTokenException: ウィンドウを追加できません -- トークン android.app.LocalActivityManager$LocalActivityRecord@418c8408 が無効です。あなたの活動は進んでいますか?05-18 14:51:54.088: E/AndroidRuntime(2152):
そして、ビデオを再生する VideoActivity クラス:
public class VideoActivity extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.video);
VideoView videoView = new VideoView(this);
String urlRtsp = "rtsp://v5.cache2.c.youtube.com/CiILENy73wIaGQmyk7Qe6Z5HyRMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp";
videoView.setVideoURI(Uri.parse(urlRtsp));
videoView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
videoView.setMediaController(new MediaController(this));
videoView.requestFocus();
videoView.start();
LinearLayout main = (LinearLayout) findViewById(R.id.video_layout);
main.addView(videoView);
}
}
私が理解しようとしているのは、それが Youtube の問題なのか、コードに問題があるのかということです。私は多くのビデオを試しましたが、コード内のものは私の最後の試みです。Android SDK バージョン 15 を使用しています。