1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>文档 - MPlayer - Linux下的电影播放器</TITLE>
<LINK REL="stylesheet" TYPE="text/css" HREF="../default.css">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gbk">
</HEAD>
<BODY>
<H1 ALIGN="center">MPlayer - Linux下的电影播放器</H1>
<H2 ALIGN="center">© 2000-2003 Arpad Gereoffy (A'rpi/ESP-team)<BR>
<A HREF="http://www.mplayerhq.hu">http://www.mplayerhq.hu</A></H2>
<P ALIGN="center">[汉语]
<A HREF="../documentation.html">[英语] </A>
<A HREF="../Hungarian/documentation.html">[匈牙利语] </A>
<A HREF="../German/documentation.html">[德语] </A>
<A HREF="../French/documentation.html">[法语] </A>
<A HREF="../Polish/documentation.html">[波兰语] </A>
<A HREF="../Italian/documentation.html">[意大利语] </A><P>
<HR>
<H2>目录</H2>
<HR>
<UL>
<LI><A HREF="#reading">0. 如何阅读本文档</A></LI>
<LI><A HREF="#introduction">1. 介绍</A>
<UL>
<LI><A HREF="#history">1.1 历史</A></LI>
<LI><A HREF="#installation">1.2 安装</A></LI>
<LI><A HREF="#gui">1.3 GUI有吗?</A></LI>
<LI><A HREF="#subtitles_osd">1.4 字幕和OSD </A>
<UL>
<LI><A HREF="#mpsub">1.4.1 MPlayer自己的字幕格式(MPsub)</A></LI>
<LI><A HREF="#install_osd">1.4.2 安装OSD和字幕</A></LI>
<LI><A HREF="#menu">1.4.3 OSD菜单</A></LI>
</UL>
</LI>
<LI><A HREF="#rtc">1.5 RTC</A></LI>
</UL>
</LI>
<LI><A HREF="#features">2. 特性</A>
<UL>
<LI><A HREF="formats.html">2.1 支持的格式</A>
<UL>
<LI><A HREF="formats.html#video_formats">2.1.1 视频格式</A>
<UL>
<LI><A HREF="formats.html#mpeg">2.1.1.1 MPEG文件</A></LI>
<LI><A HREF="formats.html#avi">2.1.1.2 AVI文件</A></LI>
<LI><A HREF="formats.html#asf">2.1.1.3 ASF与WMV文件</A></LI>
<LI><A HREF="formats.html#mov">2.1.1.4 QuickTime与MOV文件</A></LI>
<LI><A HREF="formats.html#vivo">2.1.1.5 VIVO文件</A></LI>
<LI><A HREF="formats.html#fli">2.1.1.6 FLI文件</A></LI>
<LI><A HREF="formats.html#real">2.1.1.7 RealMedia(RM)文件</A></LI>
<LI><A HREF="formats.html#nuppelvideo">2.1.1.8 NuppelVideo文件</A></LI>
<LI><A HREF="formats.html#yuv4mpeg">2.1.1.9 yuv4mpeg文件</A></LI>
<LI><A HREF="formats.html#film">2.1.1.10 FILM文件</A></LI>
<LI><A HREF="formats.html#roq">2.1.1.11 RoQ文件</A></LI>
<LI><A HREF="formats.html#ogg">2.1.1.12 OGG/OGM文件</A></LI>
<LI><A HREF="formats.html#sdp">2.1.1.13 SDP文件</A></LI>
<LI><A HREF="formats.html#pva">2.1.1.14 PVA文件</A></LI>
<LI><A HREF="formats.html#gif">2.1.1.15 GIF文件</A></LI>
</UL>
</LI>
<LI><A HREF="formats.html#audio_formats">2.1.2 音频格式</A>
<UL>
<LI><A HREF="formats.html#mp3">2.1.2.1 MP3文件</A></LI>
<LI><A HREF="formats.html#wav">2.1.2.2 WAV文件</A></LI>
<LI><A HREF="formats.html#ogg_vorbis">2.1.2.3 OGG/OGM文件(Vorbis)</A></LI>
<LI><A HREF="formats.html#wma">2.1.2.4 WMA与ASF文件</A></LI>
<LI><A HREF="formats.html#mp4">2.1.2.5 MP4文件</A></LI>
<LI><A HREF="formats.html#cdda">2.1.2.6 CD音频</A></LI>
<LI><A HREF="formats.html#xmms">2.1.2.7 XMMS</A></LI>
</UL>
</LI>
</UL>
</LI>
<LI><A HREF="codecs.html"">2.2 支持的编解码器</A>
<UL>
<LI><A HREF="codecs.html#video_codecs">2.2.1 视频编解码器</A>
<UL>
<LI><A HREF="codecs.html#divx">2.2.1.1 DivX4/DivX5</A></LI>
<LI><A HREF="codecs.html#libavcodec">2.2.1.2 FFmpeg DivX/libavcodec</A></LI>
<LI><A HREF="codecs.html#xanim">2.2.1.3 XAnim编解码器</A></LI>
<LI><A HREF="codecs.html#vivo_video">2.2.1.4 VIVO视频</A></LI>
<LI><A HREF="codecs.html#mpeg">2.2.1.5 MPEG 1/2视频</A></LI>
<LI><A HREF="codecs.html#ms_video1">2.2.1.6 MS Video1</A></LI>
<LI><A HREF="codecs.html#cinepak">2.2.1.7 Cinepak CVID</A></LI>
<LI><A HREF="codecs.html#realvideo">2.2.1.8 RealVideo</A></LI>
<LI><A HREF="codecs.html#xvid">2.2.1.9 XViD </A></LI>
<LI><A HREF="codecs.html#sorenson">2.2.1.10 Sorenson</A></LI>
</UL>
</LI>
<LI><A HREF="codecs.html#audio_codecs">2.2.2 音频编解码器</A>
<UL>
<LI><A HREF="codecs.html#software_ac3">2.2.2.1软件AC3解码</A></LI>
<LI><A HREF="codecs.html#hardware_ac3">2.2.2.2硬件AC3解码</A></LI>
<LI><A HREF="codecs.html#libmad">2.2.2.3 libmad支持</A></LI>
<LI><A HREF="codecs.html#vivo_audio">2.2.2.4 VIVO音频</A></LI>
<LI><A HREF="codecs.html#realaudio">2.2.2.5 RealAudio</A></LI>
<LI><A HREF="codecs.html#qdesign">2.2.2.6 QDesign编解码器</A></LI>
<LI><A HREF="codecs.html#qclp">2.2.2.7 Qualcomm编解码器</A></LI>
</UL>
</LI>
<LI><A HREF="codecs.html#importing">2.2.3 Win32编解码器导入HOWTO</A>
<UL>
<LI><A HREF="codecs.html#importing_vfw">2.2.3.1 VFW编解码器</A></LI>
<LI><A HREF="codecs.html#importing_directshow">2.2.3.2 DirectShow编解码器</A></LI>
</UL>
</LI>
</UL>
</LI>
<LI><A HREF="#output">2.3 输出设备</A>
<UL>
<LI><A HREF="video.html">2.3.1 视频输出设备</A>
<UL>
<LI><A HREF="video.html#mtrr">2.3.1.1 MTRR的设置</A></LI>
<LI><A HREF="video.html#normal">2.3.1.2 传统显卡的视频输出</A>
<UL>
<LI><A HREF="video.html#xv">2.3.1.2.1 Xv</A>
<UL>
<LI><A HREF="video.html#xv_3dfx">2.3.1.2.1.1 3dfx显卡</A></LI>
<LI><A HREF="video.html#xv_s3">2.3.1.2.1.2 S3显卡</A></LI>
<LI><A HREF="video.html#xv_nvidia">2.3.1.2.1.3 nVidia显卡</A></LI>
<LI><A HREF="video.html#xv_ati">2.3.1.2.1.4 ATI显卡</A></LI>
<LI><A HREF="video.html#xv_neomagic">2.3.1.2.1.5 NeoMagic显卡</A></LI>
<LI><A HREF="video.html#xv_trident">2.3.1.2.1.6 Trident显卡</A></LI>
<LI><A HREF="video.html#xv_trident">2.3.1.2.1.7 Kyro/PowerVR显卡</A></LI>
</UL>
</LI>
<LI><A HREF="video.html#dga">2.3.1.2.2 DGA</A></LI>
<LI><A HREF="video.html#sdl">2.3.1.2.3 SDL</A></LI>
<LI><A HREF="video.html#svgalib">2.3.1.2.4 SVGAlib</A></LI>
<LI><A HREF="video.html#fbdev">2.3.1.2.5 Framebuffer输出(FBdev)</A></LI>
<LI><A HREF="video.html#mga_vid">2.3.1.2.6 Matrox framebuffer(mga-vid)</A></LI>
<LI><A HREF="video.html#tdfxfb">2.3.1.2.7 3dfx YUV支持(tdfxfb)</A></LI>
<LI><A HREF="video.html#opengl">2.3.1.2.8 OpenGL输出</A></LI>
<LI><A HREF="video.html#aalib">2.3.1.2.9 AAlib -- 文本方式显示</A></LI>
<LI><A HREF="video.html#vesa">2.3.1.2.10 VESA -- VESA BIOS的输出</A></LI>
<LI><A HREF="video.html#x11">2.3.1.2.11 X11</A></LI>
<LI><A HREF="video.html#vidix">2.3.1.2.12 VIDIX</A>
<UL>
<LI><A HREF="video.html#vidix_ati"> 2.3.1.2.12.1 ATI cards</A></LI>
<LI><A HREF="video.html#vidix_matrox"> 2.3.1.2.12.2 Matrox cards</A></LI>
<LI><A HREF="video.html#vidix_trident"> 2.3.1.2.12.3 Trident cards</A></LI>
<LI><A HREF="video.html#vidix_3dlabs"> 2.3.1.2.12.4 3DLabs cards</A></LI>
</UL>
</LI>
<LI><A HREF="video.html#directfb">2.3.1.2.13 DirectFB</A></LI>
<LI><A HREF="video.html#dfbmga">2.3.1.2.14 DirectFB/Matrox(dfbmga)</A></LI>
</UL>
</LI>
<LI><A HREF="video.html#mpegdec">2.3.1.3 MPEG解码器</A>
<UL>
<LI><A HREF="video.html#dvb">2.3.1.3.1 DVB</A></LI>
<LI><A HREF="video.html#dxr2">2.3.1.3.2 DXR2</A></LI>
<LI><A HREF="video.html#dxr3">2.3.1.3.3 DXR3/Hollywood+</A></LI>
</UL>
</LI>
<LI><A HREF="video.html#other">2.3.1.4 其他可视硬件</A>
<UL>
<LI><A HREF="video.html#zr">2.3.1.4.1 Zoran JPEG解码器</A></LI>
<LI><A HREF="video.html#blinken">2.3.1.4.2 Blinkenlights</A></LI>
</UL>
</LI>
<LI><A HREF="video.html#tv-out">2.3.1.5 TV输出支持</A>
<UL>
<LI><A HREF="video.html#tv-out_matrox">2.3.1.5.1 Matrox G400显卡</A></LI>
<LI><A HREF="video.html#tv-out_matrox_g450">2.3.1.5.2 Matrox G450/G550显卡</A></LI>
<LI><A HREF="video.html#tv-out_ati">2.3.1.5.3 ATI显卡</A></LI>
<LI><A HREF="video.html#tv-out_voodoo">2.3.1.5.4 Voodoo 3</A></LI>
<LI><A HREF="video.html#tv-out_nvidia">2.3.1.5.5 nVidia</A></LI>
</UL>
</LI>
</UL>
<LI><A HREF="sound.html">2.3.2 音频输出设备</A>
<UL>
<LI><A HREF="sound.html#sync">2.3.2.1 音频/视频同步</A></LI>
<LI><A HREF="sound.html#experiences">2.3.2.2 声卡体验,推荐</A></LI>
<LI><A HREF="sound.html#af">2.3.2.3 音频滤镜</A>
<UL>
<LI><A HREF="sound.html#af_resample">2.3.2.3.1 升/降采样率</A></LI>
<LI><A HREF="sound.html#af_channels">2.3.2.3.2 改变声道数</A></LI>
<LI><A HREF="sound.html#af_format">2.3.2.3.3 采样格式转换</A></LI>
<LI><A HREF="sound.html#af_delay">2.3.2.3.4 延迟</A></LI>
<LI><A HREF="sound.html#af_volume">2.3.2.3.5 软件音量控制</A></LI>
<LI><A HREF="sound.html#af_equalizer">2.3.2.3.6 均衡器</A></LI>
<LI><A HREF="sound.html#af_panning">2.3.2.3.7 摇动滤镜</A></LI>
<LI><A HREF="sound.html#af_sub">2.3.2.3.8 副低音</A></LI>
<LI><A HREF="sound.html#af_surround">2.3.2.3.9 环绕音效解码</A></LI>
</UL>
</LI>
<LI><A HREF="sound.html#plugins">2.3.2.4 音频插件(已过时)</A>
<UL>
<LI><A HREF="sound.html#resample">2.3.2.4.1 升/降采样率</A></LI>
<LI><A HREF="sound.html#surround_decoding">2.3.2.4.2 环绕音效解码</A></LI>
<LI><A HREF="sound.html#format">2.3.2.4.3 采样格式转换</A></LI>
<LI><A HREF="sound.html#delay">2.3.2.4.4 延迟</A></LI>
<LI><A HREF="sound.html#volume">2.3.2.4.5 软件音量控制</A></LI>
<LI><A HREF="sound.html#extrastereo">2.3.2.4.6 立体声加强</A></LI>
<LI><A HREF="sound.html#normalizer">2.3.2.4.7 音量正规化</A></LI>
</UL>
</LI>
</UL>
</LI>
</UL>
</LI>
<LI><A HREF="#tv">2.4 电视输入</A>
<UL>
<LI><A HREF="#tv_compilation">2.4.1 编译</A></LI>
<LI><A HREF="#tv_tips">2.4.2 使用技巧</A></LI>
<LI><A HREF="#tv_examples">2.4.3 示例</A></LI>
</UL>
</LI>
<LI><A HREF="#edl">2.5 编辑决定列表(EDL)</A>
<UL>
<LI><A HREF="#edl_using">2.5.1 使用一个EDL文件</A></LI>
<LI><A HREF="#edl_making">2.5.2 制作一个EDL文件</A></LI>
</UL>
</LI>
</UL>
</LI>
<LI><A HREF="#usage">3. 用法</A>
<UL>
<LI><A HREF="#command_line">3.1 命令行</A></LI>
<LI><A HREF="#control">3.2 控制</A>
<UL>
<LI><A HREF="#controls_configuration">3.2.1 控制配置</A>
<UL>
<LI><A HREF="#key_names">3.2.1.1 键名</A></LI>
<LI><A HREF="#commands">3.2.1.2 命令</A></LI>
</UL>
</LI>
<LI><A HREF="#lirc">3.2.3 LIRC控制</A></LI>
<LI><A HREF="#slave">3.2.4 Slave模式</A></LI>
</UL>
</LI>
<LI><A HREF="#streaming">3.3 网络或管道的流媒体</A></LI>
</UL>
</LI>
<LI><A HREF="cd-dvd.html">4. CD/DVD部分</A>
<UL>
<LI><A HREF="cd-dvd.html#drives">4.1 CD/DVD驱动器</A></LI>
<LI><A HREF="cd-dvd.html#dvd">4.2 DVD播放</A></LI>
<LI><A HREF="cd-dvd.html#vcd">4.3 VCD播放</A></LI>
</UL>
</LI>
<LI><A HREF="faq.html">5. FAQ部分</A>
<UL>
<LI><A HREF="faq.html#compilation">5.1 编译</A></LI>
<LI><A HREF="faq.html#general">5.2 一般问题</A></LI>
<LI><A HREF="faq.html#playback">5.3 播放问题</A></LI>
<LI><A HREF="faq.html#driver">5.4 视频/音频驱动问题(vo/ao)</A></LI>
<LI><A HREF="faq.html#dvd">5.5 DVD播放</A></LI>
<LI><A HREF="faq.html#features">5.6 特性要求</A></LI>
<LI><A HREF="faq.html#encoding">5.7 编码</A></LI>
</UL>
</LI>
<LI><A HREF="#ports">6. 移植</A>
<UL>
<LI><A HREF="#linux">6.1 Linux</A>
<UL>
<LI><A HREF="#debian">6.1.1 Debian安装包的制作</A></LI>
<LI><A HREF="#rpm">6.1.2 RPM安装包的制作</A></LI>
<LI><A HREF="#arm">6.1.3 ARM</A></LI>
</UL>
</LI>
<LI><A HREF="#bsd">6.2 *BSD</A>
<UL>
<LI><A HREF="#freebsd">6.2.1 FreeBSD</A></LI>
<LI><A HREF="#openbsd">6.2.2 OpenBSD</A></LI>
</UL>
</LI>
<LI><A HREF="#solaris">6.3 Solaris</A></LI>
<LI><A HREF="#sgi">6.4 Silicon Graphics/Irix</A></LI>
<LI><A HREF="#qnx">6.5 QNX</A></LI>
<LI><A HREF="#cygwin">6.6 Cygwin</A></LI>
</UL>
</LI>
<LI><A HREF="encoding.html">7. 用MEncoder编码</A>
<UL>
<LI><A HREF="encoding.html#2pass">7.1 2或3-pass的MPEG-4("DIVX")编码</A></LI>
<LI><A HREF="encoding.html#mpeg">7.2 编码为MPEG格式</A></LI>
<LI><A HREF="encoding.html#rescaling">7.3 电影再缩放</A></LI>
<LI><A HREF="encoding.html#copying">7.4 流复制</A></LI>
<LI><A HREF="encoding.html#fixing">7.5 修复索引损坏的AVI文件</A></LI>
<UL>
<LI><A HREF="encoding.html#appending">7.5.1 合并多个AVI文件</A></LI>
</UL>
<LI><A HREF="encoding.html#libavcodec">7.6 用libavcodec编解码器族进行编码</A></LI>
<LI><A HREF="encoding.html#image_files">7.7 用输入的多幅图像文件(JPEGs或者PNGs)进行编码</A></LI>
<LI><A HREF="encoding.html#vobsub">7.8 将DVD字幕提取为Vobsub文件</A></LI>
<LI><A HREF="encoding.html#aspect">7.9 保持屏幕高宽比</A></LI>
</UL>
</LI>
<LI><A HREF="#mailing_lists">附录A -- 邮件列表</A></LI>
<LI><A HREF="bugreports.html">附录B -- 如何报告bugs</A></LI>
<LI><A HREF="#known_bugs">附录C -- 已知bug</A></LI>
<LI><A HREF="skin.html">附录D - MPlayer skin的格式</A>
<UL>
<LI><A HREF="skin.html#overview">D.1 综述</A>
<UL>
<LI><A HREF="skin.html#directories">D.1.1 目录</A></LI>
<LI><A HREF="skin.html#images">D.1.2 图像</A></LI>
<LI><A HREF="skin.html#components">D.1.3 Skin组件</A></LI>
<LI><A HREF="skin.html#files">D.1.4 文件</A></LI>
</UL>
</LI>
<LI><A HREF="skin.html#skinfile">D.2 Skin的文件</A>
<UL>
<LI><A HREF="skin.html#mainwindow">D.2.1 主窗口和播放条</A></LI>
<LI><A HREF="skin.html#subwindow">D.2.2 副窗口</A></LI>
<LI><A HREF="skin.html#skinmenu">D.2.3 Skin菜单</A></LI>
</UL>
</LI>
<LI><A HREF="skin.html#fonts">D.3 字体</A>
<UL>
<LI><A HREF="skin.html#symbols">D.3.1 符号</A></LI>
</UL>
</LI>
<LI><A HREF="skin.html#guimessages">D.4 GUI消息</A></LI>
</UL>
</LI>
<LI><A HREF="users_against_developers.html">附录E -- 开发者的眼泪</A>
<UL>
<LI><A HREF="users_against_developers.html#gcc">GCC 2.96</A></LI>
<LI><A HREF="users_against_developers.html#binary">二进制发行版</A></LI>
<LI><A HREF="users_against_developers.html#nvidia">nVidia</A></LI>
<LI><A HREF="users_against_developers.html#barr">Joe Barr</A></LI>
</UL>
</LI>
</UL>
<HR>
<H1><A NAME="reading">0. 如何阅读本文档</A></H1>
<P>如果你是首次安装:请一定要阅读从这里到安装部分结束的所有内容,并且追踪你所遇到的链接。
如果你有任何其它问题,返回到目录并搜索主题,读取<A HREF="faq.html">FAQ</A>,或者尝试用grep搜索整个文件。</P>
<P>这个文件的主要原则:如果一个功能没有被编入文档,那么它<U>不存在</U>。如果我没有说你能
用电视选台器音频编码,你就不能。不过健康程度的综合能力还是受欢迎的。祝你好运。你将需要它的:),
让我引用<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">mplayer-users</A>邮件列表中
Chris Phillips的话作为另一个好的建议:</P>
<BLOCKQUOTE>
“我以前说过新手和白痴之间的区别在于:无论,你实际上对一个系统(Linux,汽车,女孩:D)
了解多少,你应该总能够退一步想想并且保持客观,否则,恕我直言你是公认的白痴。跟我住在一起的女孩认定吸
尘器坏了因为它不吸进东西,而从不想更换袋子,因为她以前从来没有做过...那就是愚蠢,而不仅仅是不
知道做什么...仅仅因为不是那么熟悉你的环境不是你的a)懒惰和b)忽视的借口。如此多人们似乎看到“error”
就停止...只有极少数真正读取了冒号另一边的东西”。
</BLOCKQUOTE>
<H1><A NAME="introduction">1. 介绍</A></H1>
<P>MPlayer是Linux 上的电影播放器(也能跑在许多其它Unices上,甚至<B>非x86</B>CPU上,
参见<A HREF="#ports">移植部分</A>)。它能使用众多的本地的,XAnim,RealPlayer,和Win32 DLL编解码器,
播放大多数MPEG,VOB,AVI,OGG,VIVO,ASF/WMV,QT/MOV,FLI,RM,NuppelVideo,yuv4mpeg,FILM,RoQ文件。
你还能观看<B>VideoCD</B>,<B>SVCD</B>,<B>DVD</B>,<B>3ivx</B>,<B>RealMedia</B>,和<B>DivX</B>格式
的电影(你根本不需要avifile库)。mplayer的另一个大的特色是广泛的输出设备支持。它可以在X11,Xv,DGA,
OpenGL,SVGAlib,fbdev,AAlib,DirectFB下工作,而且你也能使用GGI和SDL(由此可以使用他们支持的各种驱动模式)
和一些低级的硬件相关的驱动模式(比如Matrox,3Dfx和Radeon,Mach64,Permedia3)!他们大多数支持软件或者硬件缩放,
因此你能在全屏下观赏电影。MPlayer还支持通过硬件MPEG解码卡显示,诸如<B><A HREF="video.html#dvb">DVB</A></B>
和<B><A HREF="video.html#dxr3">DXR3与Hollywood+</A></B>。可以使用European/ISO 8859-1,2(匈牙利语,英语,捷克语等等),
西里尔语,韩语的字体的清晰放大并且反锯齿的字幕(<B>支持10种格式</B>),和on screen display(OSD)你又觉得如何?</P>
<P>这个播放器能够稳如泰山的播放被破坏的MPEG文件(对一些VCD有用),而它能播放著名的windows media player
都打不开的的坏的AVI文件。甚至,没有索引部分的AVI文件可播放,你能暂时由重建他们的索引<CODE>-idx</CODE>选择,
或者用MEncoder永久重建,使你能够在影片中搜索!如你所见,稳定和质量是最重要的事情,而且他的速度是也惊人的。</P>
<P>MEncoder(MPlayer's Movie Encoder)是一个简单的电影编码器,设计用来把MPlayer可以播放的电影
(<B>AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET/PVA</B>)编码成别的MPlayer可以播放的格式(具体列表见下面)。
它可以使用各种编解码器进行编码,例如
<B>DivX4</B>(1或2 passes),libavcodec,
<B>PCM</B>/<B>MP3</B>/<B>VBR MP3</B>音频。同时也有强大的插件系统用于控制视频。</P>
<H4>MEncoder的特性</H4>
<UL>
<LI>从MPlayer支持的广泛的文件格式和解码器的输入进行编码</LI>
<LI>编码到ffmpeg的<A HREF="codecs.html#libavcodec">libavcodec</A>的所有编解码器</LI>
<LI>从<B>V4L兼容的电视选台器</B>输入编码</LI>
<LI>编码/多路传输成具有适当索引的交错的AVI文件</LI>
<LI>从外部音频流创建文件</LI>
<LI>1, 2或3 pass编码</LI>
<LI><B>VBR</B>的MP3音频 - <B>重要提示:</B> VBR MP3音频不总是能被Windows的播放器正常的播放!</LI>
<LI>PCM音频</LI>
<LI>流复制</LI>
<LI>输入的自动A/V同步(基于PTS,使用-mc 0选项来禁用)</LI>
<LI>使用<CODE>-ofps</CODE>选项进行FPS修正(当把29.97fps的VOB编码成24fps的AVI的时候有用)</LI>
<LI>使用我们强大的插件系统(crop, expand, flip, postprocess,
rotate, scale, rgb/yuv conversion)</LI>
<LI>可以把DVD/VOB字幕<B>和</B>文本字幕编码到输出文件中</LI>
<LI>可以把DVD字幕提取为Vobsub格式</LI>
</UL>
<H4>计划中的特性</H4>
<UL>
<LI>更加广泛的编/解码格式/编解码器 (用DivX4/Indeo5/VIVO流创建VOB文件:)</LI>
</UL>
<P>MPlayer和MEncoder按照GNU General Public License Version 2发布。</P>
<H2><A NAME="history">1.1 历史</A></H2>
<P>这一年以前开始的...
我(A'rpi)已尝试Linux下的许多播放器(mtv,xmps,dvdview,livid/oms,videolan,xine,xanim,avifile,xmmp),
但是他们全都有一些问题。多半与特殊的文件或音频与视频的同步有关。他们中大多数不能同时播放MPEG1,MPEG2和AVI(DivX)文件。
许多播放器也有图象质量或者速度的问题。因此,我已决定自己写/修改一个...</P>
<UL>
<LI><B>mpg12play v0.1-v0.3:</B>2000年9月22-25日<BR>
第一次尝试,总共只用了半小时来hack!到版本0.3我都使用www.heroinewarrior.com的libmpeg3,但是它有图象质量和速度的问题。</LI>
<LI><B>mpg12play v0.5-v0.87:</B>2000年9月28日-10月20日<BR>
用Dirk Farin的DVDview替换了原来的Mpeg codec,它是一个很不错的东东,但是它很慢并且使用写成C++(我讨厌C++!!!)</LI>
<LI><B>mpg12play v0.9-v0.95pre5:</B>2000年10月21日-11月2日<BR>
Mpeg codec改用Aaron Holtzman与的Michel Lespinasse的libmpeg2(mpeg2dec)。它十分出色,优化过的十分快速的C代码和完美的图象质量以及100%的MPEG标准的一致性。</LI>
<LI><B>MPlayer v0.01:</B> 2000年11月11日<BR>
第一个MPlayer。</LI>
<LI><B>MPlayer v0.3-v0.9:</B>2000年11月18日-12月4日<BR>
它包含两个程序: mpg12play v0.95pre6和我的新的简单的基于avifile的Win32 DLL Loader的AVI播放器'avip'。</LI>
<LI><B>MPlayer v0.10:</B>2001年1月1日<BR>
MPEG和AVI播放器做成了一个二进制文件!</LI>
<LI><B>MPlayer v0.11pre系列:</B><BR>
一些新的开发者加入了,从0.11开始mplayer项目成为一个team-work!增加了.ASF文件支持,和OpenDivX(见www.projectmayo.com)编/解码支持。</LI>
<LI><B>MPlayer v0.17a“IdegCounter”</B>2001年4月27日<BR>
在艰苦发展了4个月的0.11pre之后的正式版本!试试看,然后等着被震撼!成千上万的新的特性添加...当然同时旧的代码也被改进,移去了一些bug</LI>
<LI><B>MPlayer 0.18“BugCounter”</B>2001年7月9日<BR>
0.17发布2个月后的新的正式版。完全的ASF支持,更多字幕格式,引入libao(类似于libvo但是针对音频),比以往任何时候更加稳定,如此等等。这肯定是个必需品!</LI>
<LI><B>MPlayer 0.50“Faszom(C)ounter”</B>2001年10月8日<BR>
Hmm。又一次新版本。众多新的特性,Beta版的GUI,bug修正,新的vo和ao驱动模式,许多系统的移植,包括opensource DivX codecs和更多得多的改进。尝试一下!</LI>
<LI><B>MPlayer 0.60“RTFMCounter”</B>2002年1月3日<BR>
支持MOV/VIVO/RM/FLI/NUV文件格式,本地的CRAM,Cinepak,ADPCM 编解码器,支持XAnim的二进制的编解码器;DVD字幕支持,首此发布MEncoder,电视截取,缓存,liba52,无数的修正。</LI>
<LI><B>MPlayer 0.90pre10 "The BirthdayCounter"</B> 2002年11月11日<BR>
尽管这不是一个正式发行版,但我决定提到它因为它诞生在MPlayer v0.01发布的两年之后。生日快乐,MPlayer!</LI>
<LI><B>MPlayer 0.90rc1 "The CodecCounter"</B> Dec 7, 2002<BR>
同样不是一个正式发行版,但在添加了Sorenson 3(QuickTime)和Windows
Media 9的支持之后, MPlayer成为世界上第一个支持所有已知视频格式的电影播放器!</LI>
<LI><B>MPlayer 0.90“?”</B>日期未知</LI>
</UL>
<H2><A NAME="installation">1.2 安装</A></H2>
<P>在这章中我将试图指引你通过编译和配置MPlayer的过程,它不大容易的,不过也见得一定很难的。
如果你遇到不同于我所解释的现象,请的通过搜索这篇文件来查找你的回答。如果你遇到链接,请跟踪他们并且细心读取他们包含的内容。
它将花费一些时间,但是它确实是值得的。</P>
<P>你需要一个相当新的系统。在Linux上,推荐2.4.x的内核。</P>
<H4>软件要求:</H4>
<UL>
<LI><B>binutils</B> -- 建议版本<B>2.11.x</B>。这个程序负责生成MMX/3DNow!/etc指令,因此十分重要。</LI>
<LI><B>gcc</B> -- 建议版本是:<B>2.95.3</B>(或者<B>2.95.4</B>)和<B>3.2+</B>。<B>永远不要</B>使用2.96或者3.0.x!
他们产生错误的MPlayer的代码。如果你决定更换2.96的gcc,那么不要只是因为新而决定采用3.0.x!3.0.x的早期版本甚至比2.96更buggy。
因此不如降级到2.95.x(也把libstdc++降级,其它程序可能需要它)或者根本不升/降级(但这种情况下请对运行时的问题作好准备)。
如果你一定要使用3.x.x请使用最新的版本,早先的发行版本有各种各样的错误,确信你使用的至少是3.1,它通过测试且工作正常。
关于gcc 2.96的bug(仍然没有修正,他们在MPlayer中被绕过!)的详细信息能在<A
HREF="users_against_developers.html">这里</A>和<A HREF="faq.html">FAQ</A>中找到。</LI>
<LI><B>XFree86</B> -- 建议<B>总使用最新版本(4.2.1)</B>。正常来说,每个人会这样做,因为XFree86从4.0.2开始,
它包含了用来使其能够在它支持的卡片上使用硬件YUV加速(快速的图象显示)的<A HREF="video.html#xv">XVideo</A>扩展(在某些地方被称作<B>Xv</B>)。<BR>
确保也安装了<B>开发包</B>,否则它将不工作。<BR>
对于一些视频卡你不需要XFree86。参见下面的列表。</LI>
<LI><B>make</B> -- 建议<B>总使用最新版本</B>(至少3.79.x)。这通常不太重要。</LI>
<LI><B>SDL</B> -- 它不是必须的,但是在某些情况下(损坏的音频,在xv驱动模式下奇怪地延迟的显卡)能帮助。总使用最新(1.2.x或以上)的。</LI>
<LI><B>libjpeg</B> -- 可选的JPEG解码器,用于-mf参数和一些QT MOV文件。如果你计划做jpeg文件的工作那么MPlayer和MEncoder都需要它。</LI>
<LI><B>libpng</B> -- 推荐也是默认的( M)PNG译码器。GUI需要它。对MPlayer和MEncoder也有用。</LI>
<LI><B>lame</B> -- 推荐,MEncoder需要用它把音频做MP3编码,建议<B>总使用最新版本</B>(3.90或以上)。</LI>
<LI><B>libogg</B> -- 可选,用于播放OGG文件格式。</LI>
<LI><B>libvorbis</B> -- 可选,用于播放OGG Vorbis音频。</LI>
<LI><B><A HREF="http://www.live.com/mplayer/">LIVE.COM Streaming Media</A></B>
-- 可选,用于播放RTSP/RTP流。</LI>
<LI><B>directfb</B> -- 可选,从<A HREF="http://www.directfb.org">http://www.directfb.org</A>获得</LI>
<LI><B>cdparanoia</B> -- 可选,用于CDDA支持</LI>
<LI><B>libfreetype</B> -- 可选,用于TTF字体支持。至少需要2.0.9以上版本。</LI>
<LI><B>libxmms</B> -- 可选, 用于XMMS输入插件的支持。要求至少1.2.7以上版本。</LI>
</UL>
<H4>编解码器:</H4>
<UL>
<LI><B>libavcodec</B>:这个编解码器包可以在多重平台上对H263/MJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1编码格式的视频流和
WMA(Windows Media Audio)v1/v2的音频流进行解码,它同时也是已知完成这些任务最快的解码器。详细情况请看<A HREF="codecs.html#libavcodec">libavcodec</A>部分。特性<BR>:
<UL>
<LI>在非x86机器上的对上述的各种编码格式解码。</LI>
<LI>以上述大多数编码格式编码。</LI>
<LI>这是<B>可用的最快的</B>DivX/3/4/5和其它MPEG4类型的解码器,高度推荐。</LI>
</UL>
</LI>
<LI><B>Win32编解码器</B>:如果你计划在x86构架的机器上使用MPlayer,你将有可能需要他们。在开始MPlayer的编译<B>之前</B>下载
并用unzip解压缩w32codecs.zip到/usr/lib/win32,否则将不会编译Win32支持代码!<BR>
<B>注意</B>: avifile项目有类似的codecs包,但是它不同于我们的,如此如果你想使用所有支持的编解码器,安装我们的包(别担心,
avifile使用它不会有任何问题).特性:<BR>
<UL>
<LI>如果你想要播放或者编码例如以各种各样的硬件压缩器记录的电影,像选台器卡,数码相机(例如:DV,ATI VCR,MJPEG),你将需要它</LI>
<LI>如果你想要播放<B>WMV8,WMV9/WMA9格式的电影</B>那就需要它。播放老的以MP41或者MP42视频的ASF(尽管这些文件的音频常常是VoxWare -- 它是通过Win32编解码器解码的),或者WMV7是不需要它的。</LI>
</UL>
</LI>
<LI><B>QuickTime编解码器</B>:在x86平台上这些编解码器可以用来解码Sorenson v1/v3, RPZA, 和其他QuickTime视频,和QDesign音频流。
安装方法可以在<A HREF="codecs.html#sorenson">Sorenson视频编解码器</A>部分找到。</LI>
<LI><B>DivX4与DivX5:</B>关于这编码格式的信息可从<A HREF="codecs.html#divx">DivX4与DivX5</A>节得到。如果你不想用它来编码,
你有可能不会想要这个解码器,因为<B>libavcodec</B>(见上面)比它快得多。<BR>
特性:
<UL>
<LI>用<A HREF="encoding.html">MEncoder</A>进行1 pass或2 pass编码。</LI>
<LI>播放老的<B>DivX3</B>格式的电影比Win32 DLL快得多但是比<B>libavcodec</B>慢!</LI>
<LI>它封闭源码的,而且仅仅有一个x86平台的版本。</LI>
</UL>
</LI>
<LI><B>XviD:</B>开源的Divx4Linux的编码替代品<BR>
特色:
<UL>
<LI>用<A HREF="encoding.html">MEncoder</A>进行1 pass或2 pass编码。</LI>
<LI>这是开源的,所以是多平台的。</LI>
<LI>它的编码速度比divx4快2倍 -- 在几乎相同的质量的情况下</LI>
</UL>
</LI>
<LI><A HREF="codecs.html#xanim">XAnim codecs</A>对解码<B>3ivx</B>和Indeo 3/4/5格式,和一些旧的格式的电影效果是最好(全
屏幕,硬件YUV缩放)。同时,他们是多平台的,因此这是在非x86平台上播放Indeo的唯一的方法(当然,除了直接使用XAnim之外:)。
但是例如Cinepak电影MPlayer自己的Cinepak解码器播放才有最好的效果!</LI>
<LI>对于<B>Ogg Vorbis</B>音频解码你需要正确地安装<CODE>libvorbis</CODE>。如果可能的话尽量使用deb/rpm包装,
或者用<A HREF="http://ogg.org/ogg/vorbis/download/vorbis_nightly_cvs.tgz">源代码</A>编译(这是Vorbis CVS的每天最新的tarball)。</LI>
<LI>MPlayer能使用RealPlayer 8或RealONE的库来播放包括<B>RealVideo 2.0 - 4.0</B>格式的视频和Sipro/Cook格式的音频的文件。
安装方法以及关于它的更多信息参见<A HREF="formats.html#real">RealMedia文件格式</A>部分!</LI>
</UL>
<H4>显卡</H4>
<P>一般地显卡可分为两种。一种(较新的显卡)支持<B>硬件缩放和YUV加速</B>,另一种卡没有。</P>
<H4>YUV显卡</H4>
<P>他们能在他们显存可以的范围中用任何分辨率显示和缩放(zoom)图像,只<B>占用很少的CPU</B>(即使在放大的时候),所以你能得到清晰而且飞快的全屏播放。</P>
<UL>
<LI><B>Matrox G200与G400与G450与G550显卡</B>:虽然提供了一个<A HREF="video.html#vidix">Vidix驱动</A>,
但还是推荐使用旧的mga_vid内核模块,因为它工作起来好得多。关于其安装和使用参见<A HREF="video.html#mga_vid">mga-vid</A>部分。
在编译MPlayer<I>之前</I>进行这些步骤这一点很重要,否则不会编译mga_vid的支持代码。同时也请查看<A HREF="video.html#tv-out_matrox">Matrox的电视输出</A>部分。
<U><B>如果你是非Linux用户</B></U>,你的唯一的选择是VIDIX驱动:请看<A HREF="video.html#vidix">VIDIX</A>部分!</LI>
<LI><B>3Dfx Voodoo3与Banshee显卡</B>:请参见<A HREF="video.html#tdfxfb">tdfxfb</A>部分以了解如何获得大幅的速度提升。
在编译MPlayer<B>之前</B>进行这些步骤这一点很重要,否则不会编译3Dfx的支持代码。也请参考<A HREF="video.html#tv-out_voodoo">3dfx电视输出</A>部分。
如果你使用X,至少使用4.2.0版本,因为4.1.0和更早发行版本的3dfx的Xv驱动是坏的!</LI>
<LI><B>ATI显卡</B>:下列的显卡提供了<A HREF="video.html#vidix">Vidix驱动</A>:<B>Radeon</B>,<B>Rage128</B>,
<B>Mach64</B>(Rage XL/Mobility,Xpert98)。也请参考电视输出文档中的<A HREF="video.html#tv-out_ati">ATI电视输出</A>部分,
看看Linux与MPlayer是否支持你的显卡的电视输出。</LI>
<LI><B>S3显卡</B>:Savage和Virge/DX芯片有硬件加速功能。尽可能使用最新的XFree86版本,老的的驱动很buggy。
Savage的芯片的YV12显示有问题,具体细节请看<A HREF="video.html#xv_s3">S3 Xv</A>部分。更老的,Trio显卡没有,或只有很慢的硬件加速功能。</LI>
<LI><B>nVidia显卡</B>:可能是也可能不是视频播放的好的选择。如果你没有一个GeForce2(或更新的)显卡,你不太可能在运行中不遇到bugs。
<B>XFree86中内建的nVidia驱动不支持所有nVidia显卡(GeForce2以下)的硬件YUV加速。</B>你必须从nVidia.com下载nVidia的封闭源码的驱动。细节参见<A HREF="video.html#xv_nvidia">nVidia Xv驱动</A>部分。同时也查看<A HREF="video.html#tv-out_nvidia">nVidia电视输出部分</A>如果你希望使用一个电视。</LI>
<LI><B>3DLabs GLINT R3和Permedia3</B>:提供VIDIX驱动(pm3-vid)。细节参见<A HREF="video.html#vidix">VIDIX</A>部分。</LI>
<LI><B>其它卡片:</B>不是上述的任何一个?
<UL>
<LI>试试XFree86的驱动(和你的显卡)是否支持硬件加速。细节参见<A HREF="video.html#xv">Xv部分</A>。</LI>
<LI>如果不是,那么你的操作系统不支持你显卡的视频特性:(<BR>
如果它在Windows下能够使用硬件缩放,那并不不意味着在Linux或者其它OS下做同样的事情,它依赖于驱动!
大多数制造厂不做Linux驱动也不公布芯片标准 -- 所以,使用他们的显卡你很不走运。看‘非YUV显卡’:
</LI>
</UL>
</LI>
</UL>
<H4>非YUV卡片</H4>
<P>可以通过使用<B>软件缩放</B>(使用<CODE>-zoom</CODE>或者<CODE>-vop scale</CODE>参数,但是我先警告你:
这会比较慢),或者通过切换成较小的的分辨率来实现全屏播放,例如352x288。如果你没有YUV加速,我们推荐使用后一种方法。视频模式切换通过<CODE>-vm</CODE>选项打开,它能用于下列驱动:</P>
<UL>
<LI><B>使用</B>XFree86:细节参见<A HREF="video.html#x11"">X11驱动</A>和<A HREF="video.html#dga">DGA驱动</A>部分。推荐使用DGA!
也可以尝试通过SDL使用DGA,有时这种办法更好。</LI>
<LI><B>不使用</B>XFree86:按下列顺序尝试驱动模式:<A HREF="video.html#vesa">vesa</A>,<A HREF="video.html#fbdev">fbdev</A>,
<A HREF="video.html#svgalib">svgalib</A>,<A HREF="video.html#aalib">aalib</A>。</LI>
</UL>
<H4>某些显卡:</H4>
<UL>
<LI><B>Cirrus Logic显卡</B>:
<UL>
<LI>GD 7548: 板载显卡并用Compaq Armada 41xx系列的笔记本测试。
<UL>
<LI>XFree86 3:能使用8/16bpp模式。然而,这个驱动在800x600@16bpp下狂慢而且buggy<B>推荐: 640x480@16bpp</B></LI>
<LI>XFree86 4: 如果不仅用加速Xserver会在启动后不久失去响应,但这样之后就比XFree86 3慢了。没有XVideo</LI>
<LI>FBdev: 这个显卡只兼容VBE 1.2,所以VESA帧缓冲用不了,当尝试用UniVBE来绕过时, 帧缓冲显示的全是碎片根本用不了。</LI>
<LI>VESA: 这个显卡只兼容VBE 1.2,所以VESA输出用不了。无法通过使用UniVBE解决</LI>
<LI>SVGAlib: 检测成更老的Cirrus芯片. 用<CODE>-bpp 8</CODE>可以使用但很慢</LI>
</UL>
</LI>
</UL>
</LI>
</UL>
<H4>声卡</H4>
<UL>
<LI><B>Soundblaster Live!</B>:通过这种声卡你能使用4或者6(<B>5.1</B>)声道AC3解码而不只是2声道。请看<A
HREF="codecs.html#software_ac3">软件AC3解码</A>一节。对于硬件AC3输出你必须使用ALSA 0.9的oss仿真!</LI>
<LI><B>C-Media的SP/DIF输出</B>:这些声卡可以使用硬件AC3输出,参见<A HREF="codecs.html#hardware_ac3">硬件AC3解码</A>一节。</LI>
<LI><B>其它声卡</B>的特性MPlayer是不支持的。
<U>强烈建议阅读<A HREF="sound.html">声卡</A>部分!</U>
</UL>
<H4>特性</H4>
<UL>
<LI>考虑一下你是否需要GUI。如果需要,在进行编译之前,请看<A HREF="#gui">GUI</A>部分。</LI>
<LI>如果你想要安装MEncoder(我们的强大的全功能编码器),请看<A HREF="encoding.html">MEncoder部分</A>。</LI>
<LI>如果你有一张V4L兼容的<B>电视选台器</B>的卡,并且希望用MPlayer观看/截取并且录制电影,请看<A HREF="#tv">电视输入</A>一节。</LI>
<LI>有一个精致的<B>OSD菜单</B>可供使用。查看<A HREF="#menu">OSD菜单</A>部分。</LI>
</UL>
<P>接着编译MPlayer:</P>
<PRE>
./configure
make
make install
</PRE>
<P>到此为止,MPlayer就可以使用了。<CODE>$PREFIX/share/mplayer</CODE>目录下包含了<CODE>codecs.conf</CODE>文件,
程序通过它来了解所有的编解码器和他们的能兼容的格式。该文件应该与主程序一起更新!<BR>
检查在你的home目录(~/.mplayer/codecs.conf)中是否有旧的MPlayer版本留下的codecs.conf,如果有就删掉它!</P>
<P><B>Debian的用户</B>能自己制作<CODE>.deb</CODE>安装包,这十分简单。直接在MPlayer的根目录下执行<CODE>fakeroot debian/rules binary</CODE>。
详尽的步骤请看<A HREF="documentation.html#debian">Debian安装包的制作</A>。</P>
<P><CODE>./configure</CODE><B>的输出请务必一定阅读</B>,还有<CODE>configure.log</CODE>文件,其中的信息会告诉你将什么将被编译,什么将不编译。
你也可能需要查看<CODE>config.h</CODE>和<CODE>config.mak</CODE>文件。<BR>
如果你已经安装一些库文件,却没有被<CODE>./configure</CODE>发现,那么检查你是否也安装了正确的头文件(通常在-dev包中)以及他们的版本符合要求。
<CODE>configure.log</CODE>通常会告诉你缺什么。</P>
<P>尽管并非必需,你确实应该安装字体以使用OSD和字幕功能。推荐的方法是安装一个TTF字体文件并让MPlayer使用它。
阅读<A HREF="#subtitles_osd">字幕和OSD</A>一节来了解其细节。</P>
<H2><A NAME="gui">1.3 GUI有吗?</A></H2>
<P>GUI需要GTK 1.2.x(它不是GTK的,但是面板是的)。skin被保存为PNG格式,因此你需要安装gtk,libpng(和他们的devel包,一般是gtk-dev和libpng-dev)。
你必须在运行<CODE>./configure</CODE>时使用<CODE>--enable-gui</CODE>来编译它的代码。然后,你可以用下列方法之一打开GUI方式</P>
<UL>
<LI>在你的config文件中添加<CODE>gui=yes</CODE></LI>
<LI><CODE>ln -s $PREFIX/bin/mplayer $PREFIX/bin/gmplayer</CODE>,然后运行<CODE>gmplayer</CODE>。
</UL>
<P>目前由于技术原因,目前你不能在命令行下使用<CODE>-gui</CODE>选项。</P>
<P>因为MPlayer不自带skin,所以如果你想要使用GUI,你必须自己下载它们。参见<A HREF="http://www.mplayerhq.hu/homepage/dload.html">下载页</A>。
他们应该被解压到系统通用的目录(<CODE>$PREFIX/share/mplayer/Skin</CODE>),或者解压到<CODE>$HOME/.mplayer/Skin</CODE>。
MPlayer在默认情况下会在这些的目录里寻找一个叫<I>default</I>的目录,
但是你能使用<CODE>-skin newskin</CODE>选项或在config文件中添加<CODE>skin=newskin</CODE>来强制使用<CODE>*/Skin/newskin</CODE>目录下的skin。</P>
<H2><A NAME="subtitles_osd">1.4 字幕和OSD</A></H2>
<P>
MPlayer能在播放电影的同时显示字幕。目前支持下列格式:</P>
<UL>
<LI>VobSub</LI>
<LI>OGM</LI>
<LI>CC (closed caption)</LI>
<LI>Microdvd</LI>
<LI>SubRip</LI>
<LI>SubViewer</LI>
<LI>Sami</LI>
<LI>VPlayer</LI>
<LI>RT</LI>
<LI>SSA</LI>
<LI>MPsub</LI>
<LI>AQTitle</LI>
<LI>JACOsub</LI>
</UL>
<P>MPlaye可以把上面列出的字幕格式(除了前三个)转换成下列的格式,使用下列选项:</P>
<UL>
<LI>MPsub: <CODE>-dumpmpsub</CODE></LI>
<LI>SubRip: <CODE>-dumpsrtsub</CODE></LI>
<LI>Microdvd: <CODE>-dumpmicrodvdsub</CODE></LI>
<LI>JACOsub: <CODE>-dumpjacosub</CODE></LI>
<LI>Sami: <CODE>-dumpsami</CODE></LI>
</UL>
<P>使用不同格式的命令行选项稍有不同:</P>
<H4>VobSub字幕</H4>
<P>VobSub字幕包括一个大的(几兆).sub文件,和可选的.idx和/或者.ifo文件。<BR>
用法: 如果你有类似<CODE>sample.sub</CODE>,<CODE>sample.ifo</CODE>,<CODE>sample.idx</CODE>之类的文件
-- 你必需使用<CODE>-vobsub sample -vobsubid <id></CODE>的参数(当然必要时加上路径)。
<CODE>-vobsubid </CODE>选择类似于播放DVD时的<CODE>-sid</CODE>,用它你可以选择不同的字幕轨道(语言)。当省略<CODE>-vobsubid</CODE>选项时,
MPlayer将尝试使用<CODE>-slang</CODE>中指定的语言,如果没有找到将使用.idx文件中的<CODE>langidx</CODE>项指定的语言,如果这些尝试都失败了,
那就将没有字幕显示。</P>
<H4>其它字幕</H4>
<P>其它格式由一个单一的包含时间,位置和正文信息的文本文件组成。<BR>
用法: 如果你有类似<CODE>sample.txt</CODE>之类的文件,你必须使用<CODE>-sub sample.txt</CODE>
(可以加上完整路径)。</P>
<H4>调整字幕的时间和位置</H4>
<DL>
<DT><CODE>-subdelay<sec></CODE></DT>
<DD>延迟字幕< sec >秒。可以是负数。</DD>
<DT><CODE>-subfps<rate></CODE></DT>
<DD>规定字幕文件按每秒多少帧速度显示(浮点数)</DD>
<DT><CODE>-subpos<0-100></CODE></DT>
<DD>规定字幕显示的位置。</DD>
</DL>
<P>如果你使用MicroDVD字幕文件时遇到电影和字幕之间的延迟不断增加的问题,很有可能你的电影文件和字幕文件的帧速度不同。<BR>
请注意,MicroDVD字幕格式用绝对帧数来计时,因此<CODE>-subfps</CODE>选项不能用于这种格式。因为MPlayer没法猜测
字幕文件的帧速度,你必须手工修改它。在MPlayer的FTP站点的<CODE>contrib</CODE>目录中有一个小的perl脚本可以替你做这种转化。</P>
<P>当你播放一个电影时MPlayer将尝试猜测你想要使用的字幕文件,在大多数情况下,字幕文件和电影文件在同一个目录下,并且有相同的名字,
你不需要设置有关字幕的选项,只要正常播放电影就可以了,MPlayer会自动播放字幕。
<P>关于DVD字幕,请看<A HREF="cd-dvd.html#dvd">DVD</A>一节。</P>
<H3><A NAME="mpsub">1.4.1 MPlayer自己的字幕格式(MPsub)</A></H3>
<P>MPlayer引入一种称为<B>MPsub</B>的新的字幕格式。它由Gabucino设计。基本上,其主要的特性是基于<I>动态</I>时间
(虽然它有基于帧的模式)。例如(引自<A HREF="http://www.mplayerhq.hu/DOCS/tech/mpsub.sub">DOCS/tech/mpsub.sub</A>):</P>
<P><CODE><I># first number : wait this much after previous subtitle disappeared<BR>
# second number : display the current subtitle for this many seconds<BR>
<BR>
15 3<BR>
A long long, time ago...<BR>
<BR>
0 3<BR>
in a galaxy far away...<BR>
<BR>
0 3<BR>
Naboo was under an attack.<BR>
</I></CODE></P>
<P>因此如你所见,主要的目标是<B>使字幕的编辑/计时/合并/分割变得容易</B>。同时,如果你 -- 比方说 -- 有一个SSA字幕但是它
与你的电影却有严重的时间/延迟问题,你只要简单运行<CODE>mplayer dummy.avi -sub source.ssa -dumpmpsub</CODE>。
在当前目录中将生成一个<CODE>dump.mpsub</CODE>文件,它包含源字幕的正文,但是使用<B>MPsub</B>格式。
然后,你就能字幕中自由地添加或减去任意秒。</P>
<P>字幕的显示使用一种称为<B>'OSD', On Screen Display</B>的技术。OSD被用来显示当前的时间,音量条,进度条等等。</P>
<H3><A NAME="install_osd">1.4.2 安装OSD和字幕</A></H3>
<P>你需要一个MPlayer字体包来使用OSD和字幕功能。有许多方法获得它:</P>
<UL>
<LI>从MPlayer站点下载准备好的字体包。
注意:当前可用的字体限仅限于iso 8859-1/2的支持,但在FTP占的contrib/font部分有其它一些(包括朝鲜语,俄语,8859-8等等)用户制作的字体。<BR>
字体应该有正确的font.desc文件用来把unicode中字符位置映射到字幕文件实际使用的编码页。另一种解决方法是把字幕用utf8格式编码
然后使用-utf8选项或者将字幕文件命名为<video_name>.utf放在与视频文件相同的目录中。将不同的编码页转换到utf8编码可以通过使用
konwert(Debian)或者iconv(Red Hat)程序完成。<BR>
一些URL:
<UL>
<LI><A HREF="ftp://ftp.mplayerhq.hu/MPlayer/releases/">ftp://ftp.mplayerhq.hu/MPlayer/releases/</A> -- ISO字体</LI>
<LI><A HREF="ftp://ftp.mplayerhq.hu/MPlayer/contrib/fonts/">ftp://ftp.mplayerhq.hu/MPlayer/contrib/fonts/</A> -- 用户制作的各种各样的字体</LI>
<LI><A HREF="http://realtime.ssu.ac.kr/~lethean/mplayer">http://realtime.ssu.ac.kr/~lethean/mplayer/</A> -- 朝鲜字体 & RAW的插件</LI>
</UL>
</LI>
<LI>使用TOOLS/subfont-c下的字体制作工具,它是一个能将TTF/Type1等字体转换成mplayer字体包的一个完整的工具。
(详细情况请看TOOLS/subfont-c/README)</LI>
<LI>使用TOOLS/subfont-GIMP下的GIMP字体生成插件(注:你同时也必须有HSI RAW插件,见下面的URL)</LI>
<LI>使用TrueType(TTF)字体,通过<B>freetype</B>库。必须使用2.0.9或更高的版本!然后你有两种方法:
<UL>
<LI>使用<CODE>-font /path/to/arial.ttf</CODE>选项来在每次播放时指定一个TrueType字体文件/LI>
<LI>创建一个符号链接:<CODE>ln -s /path/to/arial.ttf ~/.mplayer/subfont.ttf</CODE></LI>
</UL>
</LI>
</UL>
<P>如果你使用非TTF字体,把你下载的文件UNZIP到<CODE>~/.mplayer</CODE>或者<CODE>$PREFIX/share/mplayer</CODE>。
然后将其中之一改名或者符合链接为<CODE>font</CODE>(例如:<CODE>ln -s ~/.mplayer/arial-24 ~/.mplayer/font</CODE>)。
你现在应该在电影的左上角看见一个计时器(用"o"键可以关上它)。</P>
<P>OSD有4种状态:(用'o'键切换)</P>
<UL>
<LI>音量条+进度条(默认)
<LI>音量条+进度条+计时器+搜索中显示文件位置百分比</LI>
<LI>音量条+进度条+计时器+媒体总时间</LI>
<LI>只有字幕</LI>
</UL>
<P>你能通过在config文件中设置<CODE>osdlevel=</CODE>变量,或者用命令行选项<CODE>-osdlevel</CODE>来改变默认行为。</P>
<H3><A NAME="menu">1.4.3 OSD菜单</A></H3>
<P>MPlayer有一个完全用户自定义的OSD菜单接口。</P>
<P><B>注意:</B>Preferences菜单目前不能使用!</P>
<H4>安装</H4>
<OL>
<LI>编译MPlayer时在<CODE>./configure</CODE>时加上<CODE>--enable-menu</CODE>参数</LI>
<LI>确保你安装了OSD字体</LI>
<LI>把<CODE>etc/menu.conf</CODE>复制到你的<CODE>.mplayer</CODE>目录</LI>
<LI>把<CODE>etc/input.conf</CODE>复制到你的<CODE>.mplayer</CODE>目录,或者系统通用的MPlayer配置目录(默认为:<CODE>/usr/local/etc/mplayer</CODE>)</LI>
<LI>检查并编辑<CODE>input.conf</CODE>来启用菜单控制键(在那里有描述).</LI>
<LI>像下面的例子这样启动MPlayer:<BR>
<CODE>$ mplayer -menu file.avi</CODE></LI>
<LI>按你所定义的菜单键</LI>
</OL>
<H2><A NAME="rtc">1.5 RTC</A></H2>
在MPlayer中有三种计时方法。
<UL>
<LI><B>使用老方法</B>,你不必做任何事情。它使用<CODE>usleep()</CODE>调整A/V同步,达到+/-10ms的准确性。
但有些情况下同步应该调整的更精确。</LI>
<LI><B>新的定时器</B>代码使用PC的RTC(Real Time Clock)完成这个任务,因为它有精确到1ms的计时器。当它可用时会自动使用它,
但需要root权限,或一个<I>setuid root</I>的二进制的MPlayer或者一个适当配置的内核。
<BR>
如果你使用2.4.19pre8或以上的内核你能通过<CODE>/proc</CODE>文件系统来调整普通用户的最大RTC频率。使用下列命令来允许普通用户使用RTC:
<P>
<CODE>echo 1024 > /proc/sys/dev/rtc/max-user-freq</CODE>
</P>
如果你没有这么新的内核,你也可以修改<CODE>drivers/char/rtc.c</CODE>中的一行并且重新编译你的内核。找到下面这一段
<PRE>
* We don't really want Joe User enabling more
* than 64Hz of interrupts on a multi-user machine.
*/
if ((rtc_freq > 64) && (!capable(CAP_SYS_RESOURCE)))
</PRE>
把64改成1024。当然你应该确实明白你做了什么。
<BR>
你能在状态行上看到新的计时器的效果。
<BR>
一些使用speedstep功能CPU的笔记本的BIOS的电源管理不能很好的与RTC协同工作。音频和视频可能会不同步。在给你的笔记本加电之前将外部电源接上似乎会有帮助。
你总能用<CODE>-nortc</CODE>选项关闭RTC支持。一些硬件连接器(在ALi1541主板上使用非DMA的DVD光驱上)RTC定时器的使用会造成跳跃的播放。
在这些情况下,推荐使用下面的方法。</LI>
<LI><B>第三个定时器代码</B>可以用<CODE>-softsleep</CODE>选项打开。它有RTC的效果,但是它不使用RTC。另一方面,它要使用更多的CPU。</LI>
</UL>
</LI>
</UL>
<B>注意:</B><B>永远不要将setuid root的MPlayer安装在多用户系统上!</B>这显然会让任何人得到root权限。
<H1><A NAME="features">2. 特性</A></H1>
<H2><A NAME="formats">2.1</A> <A HREF="formats.html">支持格式</A></H2>
<H2><A NAME="codecs">2.2</A> <A HREF="codecs.html">支持的编解码器</A></H2>
<H2><A NAME="output">2.3</A > <A HREF="video.html">视频</A> & <A HREF="sound.html">音频</A>输出模式</H2>
<H2><A NAME="tv"><B>2.4 电视输入</B></A></H2>
<P>这段将要如何能够<B>使用V4L兼容的电视选台器观看与截取</B>。电视相关的选项和键盘控制的描述请看man page。</P>
<H3><A NAME="tv_compilation">2.4.1 编译</A></H3>
<OL>
<LI>首先,你必须重新编译。<CODE>./configure</CODE>将自动检测v4l的内核头文件和<CODE>/dev/video*</CODE>
输入的存在。如果他们存在,电视支持将被编译(检查<CODE>./configure</CODE>的输出)。</LI>
<LI>确保你的选台器能被别的Linux中的电视软件使用,例如xawtv。</LI>
</OL>
<H3><A NAME="tv_tips">2.4.2 使用技巧</A></H3>
可用选项的完整列表在manual page中。这里只是一些使用技巧:
<UL>
<LI>使用<CODE>channels</CODE>选项。例如:<BR>
<CODE>-tv on:channels=26-MTV1,23-TV2</CODE><BR>
解释:使用这个选项,只有26和23频道可以使用,当频道切换时会有一个显示频道名的精致的OSD文字。频道名中的空格必须用"_"代替。</LI>
<LI>选择完整的图像分辨率。输出图像的分辨率必须能够被16整除。</LI>
<LI>如果你截取视频的垂直分辨率比完整分辨率的一半还高(PAL制是288,NTSC是240),确保你打开非交错选项,否则你得到的电影将在
高速运动的场景中发生扭曲,而且由于交错模式产生大量的细节消耗很多带宽,比特率控制器很可能无法获得指定的比特率。你能使用<CODE>-vop pp=DEINT_TYPE</CODE>打开非交错选项。一般来说<CODE>pp=lb</CODE>工作的不错,但这可能取决于个人的设定。查看manual中的别的
非交错算法,都尝试一下。</LI>
<LI>切割到无用的空间。当你截取视频时,边界区域通常时黑的或者包含一些噪音。这同样不必要的消耗了很多带宽。更精确的说不是那些黑的
区域本身而是在黑的和更亮的视频图像之间的形状变换消耗带宽,但现在这并不重要。在你开始截取之前,调整<CODE>crop</CODE>选项的参数
使所有边缘的废物都被切割掉。同时,别忘了保持完整的输出图像的分辨率。</LI>
<LI>注意CPU的工作量。它在大多数时间不应该超过90%的界限。如果你有一个大的截取的缓冲区,MEncoder可以忍受几秒钟的过载但不能再多了
最好把3D的OpenGL屏保和类似的东西关掉。</LI>
<LI>不要搞乱系统时钟。MEncoder使用系统时钟进行A/V同步。如果你调试系统时钟(特别是把时间往后调),MEncoder会产生混乱而你将会丢失帧。
这将是一个重要的问题如果你挂在一个网络上并且运行着某种时间同步软件比如NTP,如果你希望可靠的截取,那么在你截取的过程中你必须把NTP关掉。</LI>
<LI>不要改变<CODE>outfmt</CODE>除非你知道你在干什么或者你的芯片/驱动确实不支持默认值(YV12色彩空间)。在老版本的MPlayer/MEncoder
中必须指定输出格式。这个问题在现在的发行版中应该被修正而不再需要指定<CODE>outfmt</CODE>,默认值适合大多数应用目的。例如,你用libavcodec把
截取的内容编码成DivX并指定<CODE>outfmt=RGB24</CODE>希望提高截取图像的质量, 所截取的图像在其后的过程中将重新转换回YV12,所以你获得的唯一
效果就是消耗了大量的CPU。
</LI>
<LI>要指定I420色彩空间(<CODE>outfmt=i420</CODE>),由于与Intel Indeo video编解码器的fourcc冲突,你必须增加一个选项<CODE>-vc rawi420</CODE></LI>
<LI>有很多方法可以截取音频。你可以通过用外部电缆线将显卡和声卡的line-in连接起来,用声卡截取音频,或者使用bt878芯片内建的ADC。在后一种情况下,
你需要装载<B>btaudio</B>驱动。阅读<CODE>linux/Documentation/sound/btaudio</CODE>文件(在内核的源码树中,不是MPlayer的)来了解使用
这个驱动的方法。</LI>
<LI>如果MEncoder无法打开音频设备,确保它们真的可用。可能是声音服务器比如arts(KDE)或者esd(GNOME)的问题。如果你有一块全双工的声卡(现在几乎
任何像样的声卡都支持它),而你又在使用KDE,检查声音服务器设置菜单中的"全双工"选项。</LI>
</UL>
<H3><A NAME="tv_examples"><B>2.4.3 示例</B></A></H3>
<P>伪输出,到AAlib:)<BR>
<CODE> mplayer -tv on:driver=dummy:width=640:height=480 -vo aa</CODE><BR>
<BR>
从标准的V4L输入<BR>
<CODE> mplayer -tv on:driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo xv</CODE><BR>
<BR>
一个更复杂的例子。它使用MEncoder截取完整的PAL图像,切掉边缘的空白,输出非交错图像使用线性混合算法。音频使用LAME编解码器按固定比特率
64kbps压缩。这个设置适合用来截取电影。<BR>
<CODE>
mencoder -tv on:driver=v4l:width=768:height=576 \<BR>
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900 \<BR>
-oac mp3lame -lameopts cbr:br=64 \<BR>
-vop pp=lb,crop=720:544:24:16 -o output.avi
</CODE><BR>
<BR>
这个加上了重新缩放图像到384x288并把视频用高质量模式压缩到350kbps的比特率。vqmax选项放宽量化器从而允许视频压缩器在牺牲质量的前提下达到
如此低的比特率。这可以用来截取长的电视连续剧,在那种用途下视频质量并不非常重要。<BR>
<CODE>
mencoder -tv on:driver=v4l:width=768:height=576 \<BR>
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350:vhq:vqmax=31:keyint=300 \<BR>
-oac mp3lame -lameopts cbr:br=48 \<BR>
-vop scale=384:288,pp=tn/lb,crop=720:540:24:18 -sws 1 -o output.avi
</CODE><BR>
也可以在<CODE>-tv</CODE>选项中设置一个较小的分辨率而忽略软件缩放选项但是上面的方法使用最大的可用信息而且对噪音更有抵抗力。bt8x8芯片
由于硬件的限制只能在水平方向上作点平均。</P>
<H2><A NAME="edl">2.5 编辑决定列表(EDL)</A></H2>
<P>编辑决定列表(EDL)系统允许你在播放的时候自动在视频的一部分跳过或者静音,基于一个电影相关的EDL配置文件。</P>
<P>这对那些想用"家庭友好"模式观赏电影的人有用。你可以根据你个人的设定从一部电影里切掉任何暴力,亵渎,Jar-Jar Binks ..的内容。
除了这之外,它还有别的用途,比如自动跳过你正在观看的视频文件中的广告。</P>
<P>EDL文件的格式相当简陋。当EDL达到一定的成熟度的时候,可能会使用一个基于XML的文件格式(保持对原来的EDL格式的向下兼容)。</P>
<P>在目前的EDL实现中最大的EDL输入限制为1000。如果你碰巧需要更多,修改<CODE>edl.h</CODE>文件中的<CODE>#define MAX_EDL_ENTRIES</CODE>。</P>
<H3><A NAME="edl_using">2.5.1 使用EDL文件</A></H3>
<P>在你运行MPlayer的时候加上<CODE>-edl <filename></CODE>参数,filename是你希望应用在视频上的EDL文件的文件名。</P>
<H3><A NAME="edl_making">2.5.2 制作EDL文件</A></H3>
<P>目前EDL文件的格式为:</P>
<CODE>[begin second] [end second] [action]</CODE>
<P>seconds是浮点数而action可以是<CODE>0</CODE>代表跳过或者<CODE>1</CODE>代表静音。例如:</P>
<PRE>
5.3 7.1 0
15 16.7 1
420 422 0
</PRE>
<P>这将跳过视频的5.3秒到7.1秒的部分,然后在15秒时静音,在16.7秒处取消静音跳过视频的从420秒到422秒的部分。这些动作将在播放计时器达到
文件中指定的时间时被执行。</P>
<P>要创建一个用来工作的EDL文件,使用<CODE>-edlout <filename></CODE>选项,在播放过程中,当你想标记将前两秒跳过时,按<CODE>i</CODE>。
一个相应的输入将写入文件。你可以回头调整生成的EDL文件。</P>
<P><B><A NAME="usage">3. 用法</A></B></P>
<P><B><A NAME="command_line">3.1 命令行</A></B></P>
<P>MPlayer使用一个复杂playtree格式。它包括写在最前面作为全局设置的选项(例如<CODE>mplayer -vfm 5</CODE>),和写在文件名之后,
仅仅作用于给定的文件名或者URL或者随便什么的选项(例如<CODE>mplayer -vfm 5 movie1.avi movie2.avi -vfm 4</CODE>)。<BR>
你能使用{和}给文件名与URL分组。它对-loop选项很有用:<CODE>mplayer { 1.avi -loop 2 2.avi } -loop 3</CODE>命令将按以下顺序播放文件:
1 1 2 1 1 2 1 1 2<BR>
</P>
<TABLE BORDER=0>
<TR><TD> </TD><TD>单一文件</TD><TD> </TD><TD><CODE>mplayer [options] [path/]filename</CODE></TD></TR>
<TR><TD></TD><TD>多个文件</TD><TD></TD><TD><CODE>mplayer [default options] [path/]filename1 [options for filename1] filename2 [options for filename2] ...</CODE></TD></TR>
<TR><TD></TD><TD>VCD</TD><TD></TD><TD><CODE>mplayer [options] -vcd trackno [-cdrom-device /dev/cdrom]</CODE></TD></TR>
<TR><TD></TD><TD>DVD</TD><TD></TD><TD><CODE>mplayer [options] -dvd titleno [-dvd-device /dev/dvd]</CODE></TD></TR>
<TR><TD></TD><TD>WWW</TD><TD></TD><TD><CODE>mplayer [options] http://site.com/file.asf(也可以使用playlist)</CODE></TD></TR>
<TR><TD></TD><TD>RTSP</TD><TD></TD><TD><CODE>mplayer [options] rtsp://server.example.com/streamName</CODE></TD></TR>
</TABLE>
<P>
最新版本的MPlayer也可以象Xine一样接受URL风格的VCD和DVD轨道: <CODE>mplayer dvd://1</CODE>或者<CODE>mplayer vcd://1</CODE></P>
<PRE>
mplayer -vo x11 /mnt/Films/Contact/contact2.mpg
mplayer -vcd 2
mplayer -afm 3 /mnt/DVDtrailers/alien4.vob
mplayer -dvd 1 -dvd-device /dev/hdc
mplayer -abs 65536 -delay -0.4 -nobps ~/movies/test.avi
</PRE>
<H2><A NAME="control">3.2 控制</A></H2>
<P>MPlayer有一个完全可配置的,命令驱动的控制层使你可以键盘,鼠标,游戏杆或遥控器(使用LIRC)控制MPlayer。完整的键盘控制列表参见man page。</P>
<H3><A NAME="controls_configuration">3.2.1 控制键的配置方法</A></H3>
<P>MPlayer允许你使用一个简单的config文件把任何键或按钮绑定为任何一个MPlayer控制命令。
句法是键名后加命令。缺省config文件是<CODE>$HOME/.mplayer/input.conf</CODE>但是<CODE>-input</CODE> conf
选项可以重新指定(相对路径是相对于<CODE>$HOME/.mplayer</CODE>的)。
<P>例子:</P>
<PRE>
##
## MPlayer input control file
##
RIGHT seek +10
LEFT seek -10
- audio_delay 0.100
+ audio_delay -0.100
q quit
> pt_step 1
< pt_step -1
ENTER pt_step 1 1
</PRE>
<H4><A NAME="key_names">3.2.2.1 键名</A></H4>
<P>运行<CODE>mplayer -input keylist</CODE>你将得到一个完整的列表</P>
<H4>键盘:</H4>
<UL>
<LI>Any printable character</LI>
<LI>SPACE</LI>
<LI>ENTER</LI>
<LI>TAB</LI>
<LI>CTRL</LI>
<LI>BS</LI>
<LI>DEL</LI>
<LI>INS</LI>
<LI>HOME</LI>
<LI>END</LI>
<LI>PGUP</LI>
<LI>PGDWN</LI>
<LI>ESC</LI>
<LI>RIGHT</LI>
<LI>LEFT</LI>
<LI>UP</LI>
<LI>DOWN</LI>
</UL>
<H4>鼠标(只在X下支持):</H4>
<UL>
<LI>MOUSE_BTN0 (左键)</LI>
<LI>MOUSE_BTN1 (右键)</LI>
<LI>MOUSE_BTN2 (中键)</LI>
<LI>MOUSE_BTN3 (滚轮)</LI>
<LI>MOUSE_BTN4 (滚轮)</LI>
<LI>...</LI>
<LI>MOUSE_BTN9</LI>
</UL>
<H4>游戏杆(编译时必须打开对游戏杆的支持)</H4>
<UL>
<LI>JOY_RIGHT or JOY_AXIS0_PLUS</LI>
<LI>JOY_LEFT or JOY_AXIS0_MINUS</LI>
<LI>JOY_UP or JOY_AXIS1_MINUS</LI>
<LI>JOY_DOWN or JOY_AXIS1_PLUS</LI>
<LI>JOY_AXIS2_PLUS</LI>
<LI>JOY_AXIS2_MINUS</LI>
<LI>....</LI>
<LI>JOY_AXIS9_PLUS</LI>
<LI>JOY_AXIS9_MINUS</LI>
</UL>
<H4><A NAME="commands">3.2.2.2 控制命令</A></H4>
<P>通过运行"mplayer -input cmdlist"你可以得到一个完整的已知命令的列表</P>
<UL>
<LI><B>seek</B> (int) val [(int) type=0]
<P>搜索电影中的某处<BR>
Type 0 是以+/-val秒搜索。<BR>
Type 1 是以电影的val%搜索</P></LI>
<LI><B>audio_delay</B> (float) val
<P>音频延迟val秒</P></LI>
<LI><B>quit</B>
<P>退出MPlayer</P></LI>
<LI><B>pause</B>
<P>暂停/继续playback</P></LI>
<LI><B>grap_frames</B>
<P>有人知道?</P></LI>
<LI><B>pt_step</B> (int) val [(int) force=0]
<P>选择playtree中的下一个/上一个输入。Val的符号决定方向.<BR>
如果在要求的方向上没有其他可用entry,除非force非0,否则不会做任何动作。</P></LI>
<LI><B>pt_up_step</B> (int) val [(int) force=0]
<P>类似pt_step但它跳转到上一级列表的下一个/上一个。用来跳出playtree的内部循环。</P></LI>
<LI><B>alt_src_step</B> (int) val
<P>当一种以上的source可用时选择下一个/上一个(只有asx播放列表支持).</P></LI>
<LI><B>sub_delay</B> (float) val [(int) abs=0]
<P>字幕延迟+/-val秒或当abs非0时跳到val秒。</P></LI>
<LI><B>osd</B> [(int) level=-1]
<P>切换osd模式或当level>0时把它设为level。</P></LI>
<LI><B>volume</B> (int) dir
<P>增加/减少音量</P></LI>
<LI><B>contrast</B> (int) val [(int) abs=0]</LI>
<LI><B>brightness</B> (int) val [(int) abs=0]</LI>
<LI><B>hue</B> (int) val [(int) abs=0]</LI>
<LI><B>saturation</B> (int) val [(int) abs=0]
<P>设置/调整视频参数。Val范围从-100到100。</P></LI>
<LI><B>frame_drop</B> [(int) type=-1]
<P>切换/设置frame dropping模式。</P></LI>
<LI><B>sub_visibility</B>
<P>切换字幕是否可见。</P></LI>
<LI><B>sub_pos</B> (int) val
<P>调整字幕位置。</P></LI>
<LI><B>vobsub_lang</B>
<P>改变VobSub字幕的语言。</P></LI>
<LI><B>vo_fullscreen</B>
<P>切换到全屏</P></LI>
<LI><B>tv_step_channel</B> (int) dir
<P>选择下一个/上一个tv频道。</P></LI>
<LI><B>tv_step_norm</B>
<P>切换TV制式。</P></LI>
<LI><B>tv_step_chanlist</B>
<P>切换频道列表。</P></LI>
<LI><B>gui_loadfile</B></LI>
<LI><B>gui_loadsubtitle</B></LI>
<LI><B>gui_about</B></LI>
<LI><B>gui_play</B></LI>
<LI><B>gui_stop</B></LI>
<LI><B>gui_playlist</B></LI>
<LI><B>gui_preferences</B></LI>
<LI><B>gui_skinbrowser</B>
<P>GUI的行为</P></LI>
</UL>
<H3><A NAME="lirc">3.2.3 用LIRC控制</A></H3>
<P>Linux红外遥控 -- 使用一个容易制作的home-brewn红外线接收器,(几乎)任意一个的遥控器然后就可以用它来控制你的Linux box了!
更多内容见<A HREF="http://www.lirc.org">www.lirc.org</A>。</P>
<P>如果你已安装了lirc-package,configure将自动检测到它。如果一切顺利,MPlayer在启动时将显示
"Setting up lirc support..."之类的信息。如果发生错误它将会显示。如果它不显示关于LIRC的任何信息则对LIRC的支持没有编译。就是这样:-)</P>
<P>MPlayer的程序名是 -- 嗯,让我想想看 -- 'mplayer'。你能使用任何mplayer命令甚至传递超过一种命令只要用\n分开他们。
不要忘记当有意义的时候(搜索,音量等等),在.lircrc中开启repeat标记。这是我的.lircrc的摘录:</P>
<PRE>
begin
button = VOLUME_PLUS
prog = mplayer
config = volume 1
repeat = 1
end
begin
button = VOLUME_MINUS
prog = mplayer
config = volume -1
repeat = 1
end
begin
button = CD_PLAY
prog = mplayer
config = pause
end
begin
button = CD_STOP
prog = mplayer
config = seek 0 1\npause
end
</PRE>
<P>如果你不喜欢lirc-config文件的标准位置(~/.lircrc)使用-lircconf <filename>选项指定别的文件。</P>
<H3><A NAME="slave">3.2.4 Slave方式</A></H3>
<P>Slave方式把允许你为MPlayer建立简单的frontend。当它开启(用<CODE>-slave</CODE>选项)时MPlayer
将从stdin读取用new line(\n)分开的命令。</P>
<H3><A NAME="streaming">3.3 网络或管道的流媒体</A></H3>
<P>MPlayer支持通过HTTP, MMS或者RTSP/RTP协议播放网络上的文件。</P>
<P>只要直接把URL地址加到命令行中就可以进行播放。MPlayer也支持http_proxy环境变量,
并且在可能的情况下使用代理。也可以强行指定使用代理:</P>
<P><CODE>mplayer http_proxy://proxy.micorsops.com:3128/http://micorsops.com:80/stream.asf</CODE></P>
<P>MPlayer能从stdin(不称为管道)输入。例如这样能从FTP上播放:</P>
<P><CODE> wget ftp://micorsops.com/something.avi -O - | mplayer -</CODE></P>
<P>注意:当使用网络播放功能时推荐打开cache功能:</P>
<P><CODE> wget ftp://micorsops.com/something.avi -O - | mplayer -cache 8192 -</CODE></P>
<H1><A NAME="faq"></A>4. <A HREF="faq.html">FAQ部分</A></H1>
<H1><A NAME="cd/dvd"></A>5. <A HREF="cd-dvd.html">CD与DVD部分</A></H1>
<H1><A NAME="ports">6. 移植</A></H1>
<H2><A NAME="linux">6.1 Linux</A></H2>
<P>主要的开发平台时x86上的Linux,尽管MPlayer可以移植到很多别的Linux上。</P>
<H3><A NAME="debian">6.1.1 Debian安装包的制作</A></H3>
<P>为了制作Debian安装包,在MPlayer的代码的目录下面运行下列命令:</P>
<PRE>
fakeroot debian/rules binary
</PRE>
<P>成为root后你可以像正常情况下一样安装<CODE>.deb</CODE>包:</P>
<PRE>
dpkg -i ../mplayer_0.90-1_i386.deb as root.
</PRE>
<P>Christian Marillat一直在制作非官方的Debian MPlayer, MEncoder和字体的安装包,你可以从他的<A
HREF="http://marillat.free.fr/">主页</A>(apt-get)获得。这些包是相当非官方的,然而,因为Christian是在MPlayer还没有完全GPL化之前<A HREF="users_against_developers.html#binary">二进制发行版</A>还不允许的时候制作并发布了这些安装包。Christian没有理睬要求他停止发布
他的安装包的要求,这导致了MPlayer开发者的憎恨。二进制发布现在已经不再是问题了,但我们<B>不支持</B>这些安装包!</P>
<H3><A NAME="rpm">6.1.2 RPM安装包的制作</A></H3>
<P>Dominik Mierzejewski制作并维护MPlayer的官方的Red Hat RPM安装包。它们可以从他的<A
HREF="http://www.piorunek.pl/~dominik/linux/pkgs/mplayer/">主页</A>获得。请阅读那里的安装方法并把问题报告给他,而不是我们。</P>
<P>也有别的MPlayer的RPM版本(SuSE现在在他们的官方发行版中包括了MPlayer,Mandrake的安装包可以在<A HREF="http://plf.zarb.org/">P.L.F</A>获得)
但他们都没有官方支持。</P>
<H3><A NAME="arm">6.1.3 ARM</A></H3>
<P>MPlayer可以工作在使用ARM CPU的PDAs例如Sharp Zaurus, Compaq Ipaq上。最简单的获得MPlayer的方法从<A
HREF="http://www.openzaurus.org">Openzaurus</A>的安装包服务器下载。如果你像自己编译它,你应该查看OpenZaurus发行版的buildroot下的<A
HREF="http://openzaurus.bkbits.net:8080/buildroot/src/packages/mplayer?nav=index.html|src/.|src/packages">mplayer</A>
目录和<A
HREF="http://openzaurus.bkbits.net:8080/buildroot/src/packages/libavcodec?nav=index.html|src/.|src/packages">libavcodec</A>。
那里总有最新的用来编译一个代libavcodec的CVS的MPlayer的Makfile和补丁。
<BR>如果你需要一个GUI前端,你可以使用xmms-embedded。</P>
<H2><A NAME="bsd">6.2 *BSD</A></H2>
<P>MPlayer可以运行在FreeBSD, OpenBSD, NetBSD, BSD/OS和Darwin上。有ports/pkgsrc/fink等版本的MPlayer可供使用,比直接使用我们的
源代码要容易。</P>
<P>编译MPlayer你需要GNU make(gmake - 本地的BSD的make不能正常工作)和一个比较新的binutils。</P>
<P>如果MPlayer报告找不到<CODE>/dev/cdrom</CODE>或者<CODE>/dev/dvd</CODE>,创建一个适当的符号链接:<BR>
<CODE>ln -s /dev/(your_cdrom_device) /dev/cdrom</CODE>.</P>
<P>要在MPlayer中使用Win32 DLLs你需要使用"<CODE>option USER_LDT</CODE>"重新编译内核(除非你用的是FreeBSD -CURRENT,其中这一项是默认的)。</P>
<H3><A NAME="freebsd">6.2.1 FreeBSD </A></H3>
如果你的CPU有SSE,使用"options CPU_ENABLE_SSE"选项重新编译内核来使用它(需要FreeBSD-STABLE,或者使用内核补丁)。</P>
<H3><A NAME="openbsd">6.2.2 OpenBSD</A></H3>
<P>因为gas的版本不同(relocation vs mmx)的限制,你需要分两步编译: 首先确保non-native的汇编程序当前在PATH中并运行<CODE>gmake -k</CODE>,
然后在确保使用native版本情况下运行<CODE>gmake</CODE>。</P>
<H2><A NAME="solaris">6.3 Solaris</A></H2>
<P>MPlayer在Solaris 2.6或者更新的系统上应该能够正常运行。</P>
<P>在<B>UltraSPARC</B>上,MPlayer利用他们的<B>VIS</B>扩展(相当于MMX)的优势,目前只应用于<I>libmpeg2</I>,
<I>libvo</I>以及<I>libavcodec </I>,但mp3lib没有。你能在400MHz CPU上观看VOB文件。你需要安装<A
HREF="http://www.sun.com/sparc/vis/mediaLib.html">mLib</A>。</P>
<P>为编译它你需要GNU make(gmake,/opt/sfw/gmake),native的Solaris make不能正常工作。你用Solaris的make代替GNU make时的典型的错误信息为:</P>
<PRE>
% /usr/ccs/bin/make
make: Fatal error in reader: Makefile, line 25: Unexpected end of line seen
</PRE>
<P>在Solaris SPARC上,你需要GNU C/C++编译器;GNU C/C++编译器是否设置使用GNU汇编程序没有什么关系。</P>
<P>在Solaris x86上,你需要GNU汇编程序和GNU C/C++编译器,设置使用GNU的汇编程序!在x86平台上的mplayer代码大量使用MMX,SSE和3DNOW!
指令集,使用Sun的汇编程序<CODE>/usr/ccs/bin/as</CODE>不能编译通过。</P>
<P>configure脚本将试图查找你的"gcc"命令使用的汇编程序(如果自动检测失败,使用"--as=/whereever/you/have/installed/gnu-as"
选项告诉configure脚本你的系统中GNU的"as"在哪里)。</P>
<P>在Solaris x86系统上使用没有GNU汇编程序的GCC时configure的出错信息为:</P>
<PRE>
% configure
...
Checking assembler (/usr/ccs/bin/as) ... , failed
Please upgrade(downgrade) binutils to 2.10.1...
</PRE>
<P>(解决方法:安装并且使用配置了"--with-as=gas"的gcc)</P>
<P>当不使用GNU as的GNU C编译程序时的典型出错信息是:</P>
<PRE>
% gmake
...
gcc -c -Iloader -Ilibvo -O4 -march=i686 -mcpu=i686 -pipe -ffast-math
-fomit-frame-pointer -I/usr/local/include -o mplayer.o mplayer.c
Assembler: mplayer.c
"(stdin)", line 3567 : Illegal mnemonic
"(stdin)", line 3567 : Syntax error
... more "Illegal mnemonic" and "Syntax error" errors ...
</PRE>
<P>因为Solaris8 x86的两个bug,不能可靠地播放容量>4GB的DVD:</P>
<UL>
<LI>The sd(7D) driver on Solaris 8 x86 driver has bug when accessing a
disk block >4GB on a device using a logical blocksize != DEV_BSIZE
(i.e. CD-ROM and DVD media). Due to a 32bit int overflow, a disk
address modulo 4GB is accessed.
(<A HREF="http://groups.yahoo.com/group/solarisonintel/message/22516">http://groups.yahoo.com/group/solarisonintel/message/22516</A>)
</LI>
<LI>The similar bug is present in the hsfs(7FS) filesystem code (aka
ISO9660), hsfs currently does not support partitions/disks >4GB,
all data is accessed modulo 4GB
(<A HREF="http://groups.yahoo.com/group/solarisonintel/message/22592">http://groups.yahoo.com/group/solarisonintel/message/22592</A>)
<P>
The hsfs problem can be fixed by installing patch 109764-04 (sparc) /
109765-04 (x86).
</P>
</LI>
</UL>
<P>在使用UltraSPARC CPU的Solaris上,对有些耗时的操作使用CPU的VIS指令能获得额外的速度提升。
在MPlayer中通过Sun的<A HREF="http://www.sun.com/sparc/vis/mediaLib.html">mediaLib</A>中的函数使用VIS加速功能。</P>
<P>mediaLib的VIS加速功能用于mpeg2视频解码和视频输出驱动的颜色转换。</P>
<H2><A NAME="sgi">6.4 Silicon Graphics / IRIX</A></H2>
<P>你可以安装GNU的install程序,并且(如果你没有把它放在你的系统路径中)指定它的位置:</P>
<PRE>
./configure --install-path=PATH
</PRE>
<P>或者你可以使用默认的IRIX 6.5提供的install,那你就必须手动修改Makefile文件,把下面两行:</P>
<PRE>
$(INSTALL) -c -m 644 DOCS/mplayer.1 $(MANDIR)/man1/mplayer.1
$(INSTALL) -c -m 644 etc/codecs.conf $(CONFDIR)/codecs.conf
</PRE>
<P>改成:</P>
<PRE>
$(INSTALL) -m 644 mplayer.1 $(MANDIR)/man1/
$(INSTALL) -m 644 codecs.conf $(CONFDIR)/
</PRE>
<P>然后运行(在MPlayer的源代码目录中):</P>
<PRE>
cp DOCS/mplayer.1 . ; cp etc/codecs.conf .
</PRE>
<P>然后继续编译和安装。</P>
<H2><A NAME="qnx">6.5 QNX</A></H2>
<P>能工作。你需要下载SDL for QNX并安装它。然后使用<CODE>-vo sdl:photon</CODE>和<CODE>-ao sdl:nto</CODE>
选项运行MPlayer,速度应该很快。</P>
<P><CODE>-vo x11</CODE>输出将比Linux更加缓慢,因为QNX只有一个十分缓慢的的X<I>仿真</I>。使用SDL。</P>
<H2><A NAME="cygwin"></A>6.6 Cygwin</H2>
<P>Cygwin的移植仍然很不成熟。目前还不支持Win32 DLLs和OpenGL。SDL据说会扭曲声音和图像或者在某些系统上导致崩溃。<A
HREF="tech/patches.txt">补丁</A>总是欢迎的。最好的效果是使用本地的DirectX视频输出驱动(<CODE>-vo directx</CODE>)
和本地的Windows waveout音频驱动(<CODE>-ao win32</CODE>)。你应该查阅<A
HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-cygwin/">mplayer-cygwin</A>邮件列表来获得帮助和最新信息。</P>
<P>你必须到MPlayer的目录下,拷贝或者symlink<CODE>etc/cygwin-inttypes.h</CODE>到<CODE>/usr/include/inttypes.h</CODE>来使MPlayer顺利编译。</P>
<P>为了获得本地的DirectX视频,下载<A
HREF="http://www.videolan.org/vlc/dx7headers.tgz">DirectX 7头文件</A>,把它们解压到<CODE>/usr/include/</CODE>
或者<CODE>/usr/local/include/</CODE>下然后重新编译。如果图像发生扭曲,用<CODE>-vo directx:noaccel</CODE>
把硬件加速关掉试试。</P>
<P>让SDL在Cygwin下工作的方法和文件可以在<A HREF="http://www.libsdl.org/extras/win32/cygwin/">libsdl的站点</A>找到。</P>
<P>你可以通过播放Windows显示的VCD上的<CODE>.DAT</CODE>或者<CODE>.MPG</CODE>文件来播放VCD,这样使他工作(改成你
的CD-ROM驱动器的盘符):</P>
<P><CODE>mplayer d:/mpegav/avseq01.dat</CODE></P>
<P><CODE>mplayer /cydrive/d/MPEG2/AVSEQ01.MPG</CODE></P>
<P>DVD同样可以,用下面的命令DVD设备设置成你的CD-ROM驱动器:</P>
<P><CODE>mplayer -dvd <title> -dvd-device '\\.\d:'</CODE></P>
<P>QuickTime DLL据说也能工作。用<CODE>--enable-qtx-codecs</CODE>编译并把编解码器放到默认的Windows DLL位
置,<CODE>C:\WINNT\system32</CODE>或者<CODE>C:\Windows\system</CODE>取决于你的Windows的版本。</P>
<H1><A NAME="encoding">7.</A> <A HREF="encoding.html">用MEncoder编码</A></H1>
<H1><A NAME="mailing_lists">附录A -- 邮件列表</A></H1>
<P>MPlayer有一些公开的邮件列表。除非特别说明否则这些列表的语言是<B>英语</B>。请不要用别的语言或者HTML邮件格式发送
消息!一条消息的大小限制是80k。如果你有更大的东西把它放在可以下载的地方。点击链接就可以订阅。在邮件列表上使用与
与usenet上相同的书写和引用规则。请遵守他们,它使阅读你的邮件的人的生活轻松的多。如果你不知道请阅读<A
HREF="http://learn.to/edit_messages">编辑消息HOWTO</A>或者(如果你很着急)<A
HREF="http://www.xs4all.nl/~hanb/documents/quotingguide.html">引用HOWTO</A>。</P>
<UL>
<LI>MPlayer通告列表:<A
HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-announce">http://mplayerhq.hu/mailman/listinfo/mplayer-announce</A><BR>
MPlayer发布通告的邮件列表。如果你想获得新特性的通告在此订阅。</LI>
<LI>MPlayer开发者列表:<A
HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-dev-eng">http://mplayerhq.hu/mailman/listinfo/mplayer-dev-eng</A><BR>
<P>这个列表是关于mplayer开发的! 谈论接口与API的变化,新的库,代码优化,configure修改,另外补丁也应发送到这里。不要在这里发送bug报告,
用户问题,特性要求,吵架!这张列表应该保持低流量。</P></LI>
<LI>MPlayer用户列表:<A
HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-users">http://mplayerhq.hu/mailman/listinfo/mplayer-users</A><BR>
<UL>
<LI>在这里发送bug报告,(在阅读了<A HREF="#known_bugs">已知Bugs</A>一节和<A HREF="bugreports.html">报告bug部分</A>之后)</LI>
<LI>在这里发送特性要求(在阅读整个文件之后)</LI>
<LI>在这里发送用户问题(在阅读整个文件之后)</LI>
</UL>
</LI>
<LI>MPlayer匈牙利用户列表:<A
HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-felhasznalok">http://mplayerhq.hu/mailman/listinfo/mplayer-felhasznalok</A><BR>
<UL>
<LI>匈牙利语的列表</LI>
<LI>主题?让我们看看...迄今为止主要是吵架和RTFM问题:(</LI>
</UL>
</LI>
<LI>MPlayer & Matrox G200/G400/G450/G550用户:<A
HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-matrox">http://mplayerhq.hu/mailman/listinfo/mplayer-matrox</A><BR>
在这里发送Matrox相关的问题
<UL>
<LI>关于mga_vid的事情</LI>
<LI>Matrox的官方的beta版驱动(对于X 4.x.x )</LI>
<LI>还有关于matroxfb电视输出的东东。</LI>
</UL>
</LI>
<LI>MPlayer & DVB卡用户:<A
HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-dvb">http://mplayerhq.hu/mailman/listinfo/mplayer-dvb</A><BR>
与被称为DVB的硬件译码器卡有关的事情。(不是DXR3!)</P>
</LI>
<LI>MPlayer CVS-log:<A
HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-cvslog">http://mplayerhq.hu/mailman/listinfo/mplayer-cvslog</A><BR>
<P>在这里只能询问CVS的变化。(如果你不理解为什么要做这样的改动或者你有更好的修正或者你注意到在已经提交的补丁中可能存在的bug或问题)确定你要找的开发者阅读这张列表!</P>
</LI>
<LI>MPlayer Cygwin移植邮件列表:<A
HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-cygwin">http://mplayerhq.hu/mailman/listinfo/mplayer-cygwin</A><BR>
讨论MPlayer的Cygwin移植的邮件列表。
</LI>
<LI>MPlayer OS/2移植邮件列表:<A
HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-os2">http://mplayerhq.hu/mailman/listinfo/mplayer-os2</A><BR>
讨论MPlayer的OS/2移植的邮件列表。
</LI>
<LI>MPlayer Weekly News的编辑和翻译的列表:<A
HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-mwn">http://mplayerhq.hu/mailman/listinfo/mplayer-mwn</A><BR>
讨论Weekly News发布的邮件列表。.
</LI>
</UL>
<P><B>注意:</B><A HREF="http://www.mplayerhq.hu/cgi-bin/htsearch">http://www.mplayerhq.hu/cgi-bin/htsearch</A>有可供检索的邮件列表文档。
<H1><A NAME="bug_reports">附录B</A> -- <A HREF="bugreports.html">如何报告bug</A></H1>
<H1><A NAME="known_bugs">附录C -- 已知Bugs</A></H1>
<P>特殊的系统或CPU相关的bug或问题:</P>
<UL>
<LI>P3上使用2.2.x内核出现SIGILL(signal 4):<BR>
问题:2.2.x内核没有适当的(能正常工作的)SSE支持<BR>
解决:把内核升级到2.4.x<BR>
绕过方法:<CODE>./configure --disable-sse</CODE></LI>
<LI>一般的SIGILL(signal 4):<BR>
问题:你在不同的机器中编译和运行mplayer(例如在P3上编译在Celeron上跑)<BR>
解决:在你将使用的的机器上编译MPlayer!<BR>
绕过方法:<CODE>./configure --disable-sse</CODE>等等选项</LI>
<LI>运行MEncoder时出现"Internal buffer inconsistency":<BR>
问题:当用gcc 2.96或者3.x编译lame < 3.90时的已知问题。<BR>
解决:使用lame > =3.90。<BR>
绕过方法:以gcc 2.95.x编译lame并且卸载任何已经安装的lame包,他们可能是用gcc 2.96编译的。</LI>
<LI>在PPC上MP2/MP3的声音混乱:<BR>
问题:PPC平台上的已知的GCC误编译的bug,目前没有修正。<BR>
绕过方法:使用FFmpeg的(较慢的)MP1/MP2/MP3译码器(<CODE>-ac ffmpeg</CODE>)</LI>
<LI>当缩放+编码时,libmpeg2的sig11:<BR>
问题: 已知的GCC 2.95.2的MMXbug,升级到2.95.3。</LI>
</UL>
<P>各种各样A-V同步和其它音频问题:</P>
一般的音频延迟或者急跳声音(对所有或者大部分文件存在):
<UL>
<LI>最普遍的: buggy的音频驱动! -- 试试使用不同的驱动,用-ao oss试试ALSA 0.9的OSS仿真,也试试-ao sdl,有时它有帮助。
如果你的文件用-nosound播放正常,你就能确定这是声卡(驱动)的问题。</LI>
<LI>音频缓冲的问题(缓冲大小检测错误)<BR>
绕过方法:mplayer -abs选项</LI>
<LI>采样率的问题-- 也许你的声卡不支持你的文件使用的采样率 -- 试试 resampling插件(- aop)</LI>
<LI>机器太慢(CPU或VGA)<BR>
用-vo null试试看,如果它播放正常,那么你的VGA显卡/驱动太慢了<BR>
绕过方法:买一块更快的显卡或阅读这篇文档关于如何加速的内容<BR>
也试试-framedrop</LI>
</UL>
特定的某一个或一些文件的音频延迟/不同步:
<UL>
<LI>损坏的文件<BR>
绕过方法:
<UL>
<LI>-ni或-nobps选项(对于非交错的或坏的文件)<BR>
以及/或者</LI>
<LI>-mc 0(对带有糟糕的交错的VBR音频的文件是需要的)<BR>
以及/或者</LI>
<LI>-delay选项或者+/-键在播放时调整延迟时间</LI>
</UL>
如果没有一个方法有效,请upload这些文件,我们将检查(和修正)。
</LI>
<LI>你的声卡不支持48kHz playback<BR>
绕过方法:买个更好的声卡...或者尝试减少10%的fps(对30fps的电影使用-fps 27)或者使用resampler插件</LI>
<LI>机器太慢<BR>
(如果A-V不是在0附近,状态行的最后一个数字不断增加)<BR>
绕过方法:-framedrop</LI>
</UL>
完全没有声音:
<UL>
<LI>你的文件使用不支持的音频codec<BR>
绕过方法:读取文档并帮助我们添加对它的支持</LI>
</UL>
完全没有图画(全灰/全绿窗口):
<UL>
<LI>你的文件使用不支持的视频codec<BR>
绕过方法:读取文档并帮助我们添加对它的支持</LI>
<LI>自动选择的codec不能解码文件,试试用-vc或-vfm选项使用其他译码器</LI>
<LI>你试图用OpenDivX或XviD(-vc odivx)译码器播放DivX 3.x格式的文件 -- 安装Divx4Linux并且重新编译播放器</LI>
</UL>
<P>视频输出问题:</P>
<P>首先注意: -fs -vm和-zoom选项只是推荐,(目前)不是所有驱动器都支持。因此,如果它不起作用那不是bug。
只有少数驱动支持缩放,对x11或dga不要指望这个。</P>
<P>OSD与字幕闪烁:<BR>
-- x11驱动器: 抱歉,它现在不能被修正<BR>
-- xv驱动器: 使用-double选项</P>
<P>使用mga_vid时的绿色图象(-vo mga/-vo xmga):<BR>
-- mga-vid没有正确检测你的显卡的显存大小,使用mga_ram_size选项重新载入</P>
<H1><A NAME="skin">附录D</A> - <A HREF="skin.html">MPlayer skin的格式</A></H1>
<H1><A NAME="flame_wars">附录E</A> - <A HREF="users_against_developers.html">开发者的眼泪</A></H1>
<H1><A NAME="patches">附录F</A> - <A HREF="tech/patches.txt">如何发送补丁</A></H1>
</BODY>
</HTML>
|