Tôi có thể lấy chìa khóa cho Diablo 3 ở đâu. Làm cách nào tôi có thể lấy chìa khóa cho Diablo III Beta

Về cách sử dụng thiết bị địa ngục và kích hoạt ở đâu bạn có thể nhận ra nó từ hình ảnh bằng cách nhấp vào nó.

Để lắp ráp thiết bị địa ngục, bạn sẽ cần phải loại bỏ bản phác thảo của nó và ba chìa khóa: hủy diệt, hận thù và kinh dị. Và để tất cả những điều này có thể rơi vào bạn PHẢI có 5 điểm Nephalem Valor, và cơ hội sẽ bằng 5%.

Bạn có thể tăng khả năng rơi chìa khóa bằng cách sử dụng: SM1-10%, SM2-20%... SM10-100%. Như vậy, với CM10, khi bạn tiêu diệt được hộ vệ thì khả năng nhận được chìa khóa là 100%.

Xin lưu ý rằng sau khi sử dụng, thiết bị địa ngục sẽ bị phá hủy và để tạo ra một vòng lửa địa ngục, bạn sẽ cần từ 3 (CM10) đến 30 mảnh (CM1), và thực tế không phải là nó sẽ tốt.

Trước khi kích hoạt, thiết bị vô sinh sẽ hợp tác tốt hơn với hai hoặc thậm chí bốn người chơi khác. Bằng cách này, bạn có thể lấy thuốc thử cho vòng lửa địa ngục nhanh hơn nhiều, vì thực tế là mỗi người trong số các bạn có một thiết bị và mọi người đều sử dụng nó.

Khi xếp chồng để diệt trùm, đừng quên tiêu diệt người giữ chìa khóa ở màn đầu tiên.

Trong một trò chơi được tạo, 3 thiết bị địa ngục có thể được kích hoạt và mỗi cổng mở sẽ dẫn đến một nhóm trùm khác nhau, trong đó có tổng cộng ba con trùm. Mỗi người trong số họ có thể đánh rơi thuốc thử để tạo vòng lửa địa ngục, nhưng đó là một câu chuyện khác... được mô tả trong hướng dẫn tạo vòng lửa địa ngục của chúng tôi.)

Trong video YouTube Điều này tốt Gần đây, key của Diablo III Beta đã bắt đầu xuất hiện. Trong video dài 7 phút, chìa khóa được hiển thị trong một giây; ai kích hoạt nó trước sẽ thắng. Đây là hình ảnh của phím trên khung hình tĩnh:

Bạn có đang nghĩ điều tương tự như tôi đang nghĩ không?


Tổng cộng có 10 phím.

Phím 1
Tôi không biết về chiếc chìa khóa đầu tiên và có lẽ không ai biết cả. Một số người may mắn.

Phím 2
Đối với video thứ hai, bot đơn giản nhất đã sẵn sàng, cập nhật trang có video được thêm cứ sau 10 giây và nếu một video mới xuất hiện, một cửa sổ chế độ ở dạng cảnh báo sẽ báo cáo điều này. Hóa ra là sau 4 giờ, YouTube phát hiện ra bot và yêu cầu anh ta nhập recaptcha, và sau đó cứ mỗi giờ anh ta lại yêu cầu anh ta nhập vào đó. Điều đó rất bất tiện, nhưng tôi thực sự không muốn lãng phí thời gian và viết theo cách thông thường, vì tôi mong đợi rằng phím thứ hai sẽ xuất hiện theo cách nào đó khác, chẳng hạn, ít nhất là bằng chữ màu xanh lá cây. Tôi đã bỏ lỡ phím thứ hai, nhưng khi nhìn thấy những con số và chữ cái màu xám giống nhau, cùng phông chữ, cùng kích thước, trên cùng nền trắng và thậm chí cả kích thước của ba dòng giống nhau, tôi quyết định làm một con bot bình thường.

Phím 3
Đối với video thứ ba, bot đã sử dụng api youtube, hạn ngạch cho số lượng yêu cầu cho phép quét 5 giây một lần trong 12 giờ.

Thuật toán rất đơn giản:

Vì vậy, một cảnh báo hiện lên thông báo cho tôi về việc phát hành một video mới, tôi đăng nhập vào battle.net, sau 10 giây video được tải xuống, sau 10 giây nữa, một ảnh chụp màn hình có số sê-ri xuất hiện:


Tôi đã nhập nó và... hóa ra nó đã được sử dụng rồi. Phân tích lỗi cho thấy dữ liệu qua api youtube được cập nhật với độ trễ lên tới 5 phút! Khi bot phát hiện ra video mới thì đã quá muộn. Một số bot hoặc người dùng khác nhấn F5 là may mắn.

Phím 4
Đến video thứ tư, bot đã được cải thiện: hiện tại nó sử dụng khoảng 100 máy chủ proxy (1 luồng cho mỗi máy chủ proxy), quét gdata cứ sau 5 giây. Các thử nghiệm đã chỉ ra rằng khoảng 20 proxy chỉ cần báo cáo ngay lập tức việc phát hành video mới, số còn lại sẽ cập nhật trong vòng một phút, điều đó thật tuyệt. Không giống như gdata, các liên kết trực tiếp xuất hiện ngay lập tức cho bất kỳ IP nào, vì vậy ở đây, không cần proxy, bot chỉ tải xuống video ở 20 luồng (nó hoạt động ngay cả trong 1000 luồng, YouTube cho phép điều đó). Tốc độ tải xuống đã tăng lên. Thuật toán quét đã được cải tiến: bot đầu tiên quét phần thứ hai của video theo 4 luồng (trong tất cả các video trước, khóa nối tiếp xuất hiện ở cuối video), sau đó là phần đầu tiên trong 4 luồng. Để đảm bảo độ tin cậy, bước quét đã giảm xuống còn 500 ms và các thông số khác cũng bị suy yếu đôi chút.

Vì vậy, một cảnh báo xuất hiện thông báo về việc phát hành một video mới. Trước khi tôi có thời gian đăng nhập vào battle.net, video đã được tải xuống (10 giây) và ảnh chụp màn hình có số sê-ri xuất hiện:

Tôi rất vui vì đã tính đến khả năng anh ấy xuất hiện trong hai dòng. Với đôi tay run rẩy, bằng cách nào đó tôi đã viết nó và kích hoạt nó! Tất cả chỉ mất khoảng 20 giây. Tôi rất may mắn khi quét; thuật toán gần như ngay lập tức hiển thị số sê-ri, mặc dù thực tế là quá trình quét toàn bộ kéo dài 30 giây. Trong video này hóa ra có 2 phím xuất hiện tuần tự, mình nhập phím thứ 2. Xin chúc mừng người đã kích hoạt đầu tiên!

Còn 5 chìa khóa nữa
Bạn có thể tinh chỉnh thuật toán: chạy quét khi bắt đầu tải xuống, thuật toán sẽ trở nên phức tạp hơn nhưng thời gian đạt được sẽ là 10 giây. Bạn cũng có thể nhận dạng số sê-ri và tự động nhập số đó vào battle.net. Sau đó, khóa có thể được nhập ngay cả trong 5 giây.

Mọi thứ đều được viết bằng Java bằng cách sử dụng HttpComponents (giao thức http) và VLCj (xử lý video)

tái bút Diablo III hay quá

CẬP NHẬT
Thật thú vị khi tự viết bot, vì vậy tôi coi 20 giờ dành cho việc giải trí chứ không phải là 20 giờ mà người ta có thể kiếm được nhiều tiền hơn chi phí của chính chiếc chìa khóa. Khi rảnh rỗi, tôi thư giãn hoặc học điều gì đó mới thay vì làm việc, nhưng đây là điều thú vị và hữu ích. Vẫn chưa kết thúc trò chơi.

Thuật toán
Tôi cố tình không chỉ ra ngay thuật toán xác định số sê-ri vì hai lý do. Sau khi học được thuật toán chính xác tuyệt đối, các tác giả của ThisIsHorosho sẽ nhanh chóng làm cho khóa không thể nhận dạng được và tôi sẽ gây bất lợi cho những người cũng viết bot. Dù thừa nhận là không có những người như vậy nhưng xét theo bình luận thì họ nhập số serial trong 3 phút, có thật là họ đang chờ đợi ấn F5 không...

Chà, vì có rất nhiều câu hỏi về thuật toán... Điều chính là thuật toán phải rất nhanh. Ý tưởng chính có thể nhìn thấy ngay từ ảnh chụp màn hình có số sê-ri.

  1. Chúng tôi chụp ảnh từ khung và lưu với kích thước 640x320, VLCj cho phép bạn lưu ảnh với bất kỳ độ phân giải nào, ngay cả khi video có độ phân giải khác. Tất cả các điểm gần với màu văn bản đều có màu đen, mọi thứ khác đều có màu trắng. Kết quả là chúng ta có được những bức ảnh đen trắng. Một vài hình ảnh như vậy được bao gồm trong bài viết này.
  2. Đối với mỗi ảnh chụp màn hình, chúng tôi tính toán số liệu thống kê về các chấm trắng và đen. Chúng tôi tuyên bố làm nền cho những nơi có số lượng chấm trắng lớn hơn 92%; trong các thử nghiệm, 94% là đủ, nhưng điều này là có lề. Trong các khung có nền, chúng tôi tìm số sê-ri.
  3. Chúng tôi rút lui 30 pixel khỏi các cạnh của khung, vì chuỗi xuất hiện gần trung tâm hơn nhưng không bao giờ xuất hiện từ rìa. Chúng tôi chia trường còn lại thành các ô vuông 20x20, trong mỗi ô chúng tôi đếm số chấm đen
  4. Chúng tôi khai báo các hình vuông có số chấm đen từ 10% đến 60% là hình vuông có các chữ cái - điều này có tính đến thực tế là một chữ cái chỉ có thể nằm gọn một nửa hình vuông và có một chút lề.
  5. Các khung có trình tự liên tục ít nhất 6 ô vuông có chữ cái theo chiều ngang và 3 ô vuông theo chiều dọc là các khung được khai báo có số sê-ri. Chúng tôi lưu chúng trong một thư mục.

Kết quả là chỉ những hình ảnh có dòng chữ giống với số sê-ri mới xuất hiện:

Trong thực tế, không có nhiều trong số đó, vì vậy việc tìm ra thứ bạn cần không khó.

Làm việc với VLCj
Làm việc với VLCj rất đơn giản. Đầu tiên, tôi đọc tài liệu www.capricasoftware.co.uk/vlcj/tutorial1.php, sau đó tôi chơi một chút với lớp MediaPlayer, nhưng nó có lỗi, nói chung tôi quyết định gọi các hàm trực tiếp từ thư viện LibVlc - nó vừa nhanh hơn vừa ít lỗi hơn.

Đầu tiên chúng ta tạo thư viện
LibVlc libvlc = LibVlcFactory.factory().create();

Sau đó, chúng tôi tạo một mảng gồm 8 Phân tíchThreads (thuộc loại Runnable) (mỗi 1/8 thời lượng video), chúng tôi chuyển đến Executors.newFixedThreadPool(4) theo thứ tự sau: 4, 5, 6, 7, 0, 1, 2, 3. Cái đó. Phần thứ hai của video sẽ được quét trước, sau đó là phần đầu tiên. Mỗi Phân tíchThread chứa mã sau:

System.out.println("Chạy phần " + num); libvlc_media_player_t p_mi = null; libvlc_media_t media = null; thử ( // chuẩn bị //libvlc_instance_t instance = libvlc.libvlc_new(0, new String); libvlc_instance_t instance = libvlc.libvlc_new(2, new String("--vout", "dummy")); p_mi = libvlc.libvlc_media_player_new( dụ); libvlc.libvlc_audio_toggle_mute(p_mi); libvlc.libvlc_media_new_path(instance, fileName); .libvlc_media_player_pause(p_mi) ;<= msTo; msTime += msInBlock, block++) { String path = snapshotPath + File.separator + "snap-" + String.format("%03d.png", block); libvlc.libvlc_media_player_set_time(p_mi, msTime); int r = libvlc.libvlc_video_take_snapshot(p_mi, 0, path, picWidth, picHeight); if (r != 0) System.out.println("SNAPSHOT FAILED: block=" + block + ", returnCode=" + r); else analyzeImage(path); } } finally { if (p_mi != null) libvlc.libvlc_media_player_stop(p_mi); if (media != null) libvlc.libvlc_media_release(media); if (p_mi != null) libvlc.libvlc_media_player_release(p_mi); System.out.println("Close section " + num); }

Hàm analyzeImage xác định xem khóa có trong ảnh chụp màn hình hay không; nếu có, nó sẽ lưu khóa đó vào một thư mục đặc biệt.

Thông tin trong bài viết đã lỗi thời do phát hành bản vá 2.3.0. Người giữ chìa khóa bây giờ sẽ ngay lập tức thả Thiết bị Vô sinh.

Thả từ người giữ chìa khóa

Chìa khóa xương

Chúng ta chuyển sang Màn I và dịch chuyển đến Cánh đồng Chết. Ở vị trí này, những sinh vật có sừng khó chịu hoặc những người dân thường ở Khazra sinh sống. Tại đây bạn sẽ cần tìm tên trùm đầu tiên cần thiết - Odig. Sẽ không khó để nhận ra anh ta, vì anh ta sử dụng những phép thuật khá khó chịu để đẩy người chơi đi một quãng xa, sau đó giảm tốc độ và làm anh ta bất động, ném quả cầu lửa và giáo. Nó sẽ gây ra mối nguy hiểm đặc biệt lớn cho các lớp cận chiến.

Ham ăn

Chúng ta chuyển sang Màn II tiếp theo và dịch chuyển đến Ốc đảo Dalgur. Người giữ chìa khóa thứ hai, Sokar, sẽ đợi bạn ở đây. Bạn có thể tìm thấy nó theo một cách khác, vì nó được tạo ra bởi hào quang của chính nó, giúp làm chậm đường đạn. Hãy nhìn kỹ vào các cạnh của màn hình để nhận thấy hào quang của nó, khi đó bạn chắc chắn sẽ không sai.

chiến tranh

Bây giờ chúng ta chuyển sang màn 3. Trên lãnh thổ của Pháo đài Đá, bạn sẽ gặp một người giữ chìa khóa khác - Za'Rit. Anh ta sử dụng các kỹ năng băng khó chịu có thể lấy đi khá nhiều máu của bạn trong khi làm bạn chậm đi rất nhiều. Cũng dịch chuyển tức thời trong trận chiến. Tuy nhiên, việc tìm kiếm “người giữ chìa khóa” này dễ dàng hơn nhiều so với những lần trước vì khu vực này được làm theo kiểu hành lang và bạn sẽ không phải tìm kiếm anh ta lâu.

Độc ác

Người giữ chìa khóa cuối cùng nằm ở Màn 4, cụ thể là ở cấp độ đầu tiên của lãnh thổ Silver Spire. Cha mẹ anh đặt biệt danh cho anh là Nekarat. Anh ta có thể ném anh ta một khoảng cách xa, nhốt anh ta vào lồng và hạ gục anh ta để giảm khả năng hồi máu mà anh ta nhận được. Loka, giống như cái trước, cũng nhỏ và việc tìm kiếm sẽ không mất nhiều thời gian.

Nói chung, tất cả những người nắm giữ chìa khóa đều bị giết một cách tự tin, đặc biệt là trong thực tế hiện tại, nơi tất cả các lớp và kỹ năng của họ đã được tăng cường đáng kể.

Ngày 29 tháng 3 năm 2012 lúc 01:17

Làm thế nào tôi có được chìa khóa của Diablo III Beta

  • Phát triển trang web,
  • Lập trình

Trong video YouTube Điều này tốt Gần đây, key của Diablo III Beta đã bắt đầu xuất hiện. Trong video dài 7 phút, chìa khóa được hiển thị trong một giây; ai kích hoạt nó trước sẽ thắng. Đây là hình ảnh của phím trên khung hình tĩnh:

Bạn có đang nghĩ điều tương tự như tôi đang nghĩ không?


Tổng cộng có 10 phím.

Phím 1
Tôi không biết về chiếc chìa khóa đầu tiên và có lẽ không ai biết cả. Một số người may mắn.

Phím 2
Đối với video thứ hai, bot đơn giản nhất đã sẵn sàng, cập nhật trang có video được thêm cứ sau 10 giây và nếu một video mới xuất hiện, một cửa sổ chế độ ở dạng cảnh báo sẽ báo cáo điều này. Hóa ra là sau 4 giờ, YouTube phát hiện ra bot và yêu cầu anh ta nhập recaptcha, và sau đó cứ mỗi giờ anh ta lại yêu cầu anh ta nhập vào đó. Điều đó rất bất tiện, nhưng tôi thực sự không muốn lãng phí thời gian và viết theo cách thông thường, vì tôi mong đợi rằng phím thứ hai sẽ xuất hiện theo cách nào đó khác, chẳng hạn, ít nhất là bằng chữ màu xanh lá cây. Tôi đã bỏ lỡ phím thứ hai, nhưng khi nhìn thấy những con số và chữ cái màu xám giống nhau, cùng phông chữ, cùng kích thước, trên cùng nền trắng và thậm chí cả kích thước của ba dòng giống nhau, tôi quyết định làm một con bot bình thường.

Phím 3
Đối với video thứ ba, bot đã sử dụng api youtube, hạn ngạch cho số lượng yêu cầu cho phép quét 5 giây một lần trong 12 giờ.

Thuật toán rất đơn giản:

Vì vậy, một cảnh báo hiện lên thông báo cho tôi về việc phát hành một video mới, tôi đăng nhập vào battle.net, sau 10 giây video được tải xuống, sau 10 giây nữa, một ảnh chụp màn hình có số sê-ri xuất hiện:


Tôi đã nhập nó và... hóa ra nó đã được sử dụng rồi. Phân tích lỗi cho thấy dữ liệu qua api youtube được cập nhật với độ trễ lên tới 5 phút! Khi bot phát hiện ra video mới thì đã quá muộn. Một số bot hoặc người dùng khác nhấn F5 là may mắn.

Phím 4
Đến video thứ tư, bot đã được cải thiện: hiện tại nó sử dụng khoảng 100 máy chủ proxy (1 luồng cho mỗi máy chủ proxy), quét gdata cứ sau 5 giây. Các thử nghiệm đã chỉ ra rằng khoảng 20 proxy chỉ cần báo cáo ngay lập tức việc phát hành video mới, số còn lại sẽ cập nhật trong vòng một phút, điều đó thật tuyệt. Không giống như gdata, các liên kết trực tiếp xuất hiện ngay lập tức cho bất kỳ IP nào, vì vậy ở đây, không cần proxy, bot chỉ tải xuống video ở 20 luồng (nó hoạt động ngay cả trong 1000 luồng, YouTube cho phép điều đó). Tốc độ tải xuống đã tăng lên. Thuật toán quét đã được cải tiến: bot đầu tiên quét phần thứ hai của video theo 4 luồng (trong tất cả các video trước, khóa nối tiếp xuất hiện ở cuối video), sau đó là phần đầu tiên trong 4 luồng. Để đảm bảo độ tin cậy, bước quét đã giảm xuống còn 500 ms và các thông số khác cũng bị suy yếu đôi chút.

Vì vậy, một cảnh báo xuất hiện thông báo về việc phát hành một video mới. Trước khi tôi có thời gian đăng nhập vào battle.net, video đã được tải xuống (10 giây) và ảnh chụp màn hình có số sê-ri xuất hiện:

Tôi rất vui vì đã tính đến khả năng anh ấy xuất hiện trong hai dòng. Với đôi tay run rẩy, bằng cách nào đó tôi đã viết nó và kích hoạt nó! Tất cả chỉ mất khoảng 20 giây. Tôi rất may mắn khi quét; thuật toán gần như ngay lập tức hiển thị số sê-ri, mặc dù thực tế là quá trình quét toàn bộ kéo dài 30 giây. Trong video này hóa ra có 2 phím xuất hiện tuần tự, mình nhập phím thứ 2. Xin chúc mừng người đã kích hoạt đầu tiên!

Còn 5 chìa khóa nữa
Bạn có thể tinh chỉnh thuật toán: chạy quét khi bắt đầu tải xuống, thuật toán sẽ trở nên phức tạp hơn nhưng thời gian đạt được sẽ là 10 giây. Bạn cũng có thể nhận dạng số sê-ri và tự động nhập số đó vào battle.net. Sau đó, khóa có thể được nhập ngay cả trong 5 giây.

Mọi thứ đều được viết bằng Java bằng cách sử dụng HttpComponents (giao thức http) và VLCj (xử lý video)

tái bút Diablo III hay quá

CẬP NHẬT
Thật thú vị khi tự viết bot, vì vậy tôi coi 20 giờ dành cho việc giải trí chứ không phải là 20 giờ mà người ta có thể kiếm được nhiều tiền hơn chi phí của chính chiếc chìa khóa. Khi rảnh rỗi, tôi thư giãn hoặc học điều gì đó mới thay vì làm việc, nhưng đây là điều thú vị và hữu ích. Vẫn chưa kết thúc trò chơi.

Thuật toán
Tôi cố tình không chỉ ra ngay thuật toán xác định số sê-ri vì hai lý do. Sau khi học được thuật toán chính xác tuyệt đối, các tác giả của ThisIsHorosho sẽ nhanh chóng làm cho khóa không thể nhận dạng được và tôi sẽ gây bất lợi cho những người cũng viết bot. Dù thừa nhận là không có những người như vậy nhưng xét theo bình luận thì họ nhập số serial trong 3 phút, có thật là họ đang chờ đợi ấn F5 không...

Chà, vì có rất nhiều câu hỏi về thuật toán... Điều chính là thuật toán phải rất nhanh. Ý tưởng chính có thể nhìn thấy ngay từ ảnh chụp màn hình có số sê-ri.

  1. Chúng tôi chụp ảnh từ khung và lưu với kích thước 640x320, VLCj cho phép bạn lưu ảnh với bất kỳ độ phân giải nào, ngay cả khi video có độ phân giải khác. Tất cả các điểm gần với màu văn bản đều có màu đen, mọi thứ khác đều có màu trắng. Kết quả là chúng ta có được những bức ảnh đen trắng. Một vài hình ảnh như vậy được bao gồm trong bài viết này.
  2. Đối với mỗi ảnh chụp màn hình, chúng tôi tính toán số liệu thống kê về các chấm trắng và đen. Chúng tôi tuyên bố làm nền cho những nơi có số lượng chấm trắng lớn hơn 92%; trong các thử nghiệm, 94% là đủ, nhưng điều này là có lề. Trong các khung có nền, chúng tôi tìm số sê-ri.
  3. Chúng tôi rút lui 30 pixel khỏi các cạnh của khung, vì chuỗi xuất hiện gần trung tâm hơn nhưng không bao giờ xuất hiện từ rìa. Chúng tôi chia trường còn lại thành các ô vuông 20x20, trong mỗi ô chúng tôi đếm số chấm đen
  4. Chúng tôi khai báo các hình vuông có số chấm đen từ 10% đến 60% là hình vuông có các chữ cái - điều này có tính đến thực tế là một chữ cái chỉ có thể nằm gọn một nửa hình vuông và có một chút lề.
  5. Các khung có trình tự liên tục ít nhất 6 ô vuông có chữ cái theo chiều ngang và 3 ô vuông theo chiều dọc là các khung được khai báo có số sê-ri. Chúng tôi lưu chúng trong một thư mục.

Kết quả là chỉ những hình ảnh có dòng chữ giống với số sê-ri mới xuất hiện:

Trong thực tế, không có nhiều trong số đó, vì vậy việc tìm ra thứ bạn cần không khó.

Làm việc với VLCj
Làm việc với VLCj rất đơn giản. Đầu tiên, tôi đọc tài liệu www.capricasoftware.co.uk/vlcj/tutorial1.php, sau đó tôi chơi một chút với lớp MediaPlayer, nhưng nó có lỗi, nói chung tôi quyết định gọi các hàm trực tiếp từ thư viện LibVlc - nó vừa nhanh hơn vừa ít lỗi hơn.

Đầu tiên chúng ta tạo thư viện
LibVlc libvlc = LibVlcFactory.factory().create();

Sau đó, chúng tôi tạo một mảng gồm 8 Phân tíchThreads (thuộc loại Runnable) (mỗi 1/8 thời lượng video), chúng tôi chuyển đến Executors.newFixedThreadPool(4) theo thứ tự sau: 4, 5, 6, 7, 0, 1, 2, 3. Cái đó. Phần thứ hai của video sẽ được quét trước, sau đó là phần đầu tiên. Mỗi Phân tíchThread chứa mã sau:

System.out.println("Chạy phần " + num); libvlc_media_player_t p_mi = null; libvlc_media_t media = null; thử ( // chuẩn bị //libvlc_instance_t instance = libvlc.libvlc_new(0, new String); libvlc_instance_t instance = libvlc.libvlc_new(2, new String("--vout", "dummy")); p_mi = libvlc.libvlc_media_player_new( dụ); libvlc.libvlc_audio_toggle_mute(p_mi); libvlc.libvlc_media_new_path(instance, fileName); .libvlc_media_player_pause(p_mi) ;<= msTo; msTime += msInBlock, block++) { String path = snapshotPath + File.separator + "snap-" + String.format("%03d.png", block); libvlc.libvlc_media_player_set_time(p_mi, msTime); int r = libvlc.libvlc_video_take_snapshot(p_mi, 0, path, picWidth, picHeight); if (r != 0) System.out.println("SNAPSHOT FAILED: block=" + block + ", returnCode=" + r); else analyzeImage(path); } } finally { if (p_mi != null) libvlc.libvlc_media_player_stop(p_mi); if (media != null) libvlc.libvlc_media_release(media); if (p_mi != null) libvlc.libvlc_media_player_release(p_mi); System.out.println("Close section " + num); }

Hàm analyzeImage xác định xem khóa có trong ảnh chụp màn hình hay không; nếu có, nó sẽ lưu khóa đó vào một thư mục đặc biệt.