2011-01-29 37 views
15

Phần mềm tốt duy nhất tôi biết có thể giảm tốc và tăng tốc phát lại video YouTube trong bất kỳ trình duyệt nào mà không cần tải xuống lần đầu tiên (vì điều đó sẽ rườm rà), là Enounce MySpeed.Làm cách nào để tôi có thể Ghép một Video Youtube (Trình phát Flash?) Để Giảm Phát lại?

Thật không may, phần mềm này không miễn phí và phiên bản dùng thử của tôi hết. Tôi đang chơi xung quanh với các thiết lập registry của nó và nhận thấy một vài phím:

ProgramsToHook: iexplore.exe;firefox.exe;plugin-container.exe;chrome.exe;safari.exe;opera.exe;maxthon.exe;feeddemon.exe;realplay.exe;flvplayer.exe;flv player.exe;flock.exe;adobe media player.exe 
UseFlashAdapter: 1 
LLModules: ole32.dll;nspr4.dll;chrome.exe;realplay.exe;objb3201.dll;oleaut32.dll;rpflashplayer.dll 
ModulesToIntercept: flash10*;flash9*;npswf32.dll;gcswf32.dll;fldbg10*;flashplayer.3.1.1k.ocx;adobe media player.exe 

Dựa vào tên và giá trị của các khóa registry, tôi đoán phần mềm MySpeed ​​móc một số chức năng (s) trong các module được liệt kê (nhưng các mô-đun có hoặc không giống như các tệp DLL? ..) và làm như vậy cho mỗi quá trình được liệt kê trong ProgramsToHook. Đây là những gì tôi không hiểu. Khái niệm về phần mềm MySpeed ​​là gì. Rõ ràng là nó đang hooking một cái gì đó, nhưng tôi không quá quen thuộc với những phức tạp của Windows móc nên tôi đến hỏi bạn chuyên gia. Tôi nghĩ rằng nếu tôi có thể hiểu được quy trình móc này hoạt động như thế nào, tôi có thể tạo phiên bản phần mềm của riêng mình bằng EasyHook, một thư viện .NET tuyệt vời để thực hiện các chế độ người dùng và chế độ lõi.

Tôi nghĩ rằng chế độ người dùng Windows hooking đi một cái gì đó như thế này. Bạn chọn một hàm trong một DLL, và bạn chặn hàm đó (móc a.k.a) trong một tiến trình bạn muốn. Nếu bạn muốn nối DLL trong nhiều tiến trình, bạn chỉ cần lặp lại quy trình cho mỗi tiến trình.

Và sau đó chế độ nhân-móc chỉ là chọn một hàm trong một DLL và chặn hàm đó trong mọi quá trình gọi nó (do đó chế độ lõi). Nhưng chắc chắn có rất nhiều cách để móc; Tôi không quá chắc chắn về whats sự khác biệt giữa hai móc và DLL tiêm hoặc.

Vì vậy, vấn đề là, tôi muốn biết cách hoạt động của MySpeed. Khái niệm hooking của họ là gì? Nếu tôi có thể biết điều này thì tôi có thể làm một phần mềm như vậy trong .NET!

Xin cảm ơn trước.

+2

+1 - Câu hỏi hay; điều này sẽ là tuyệt vời cho các mục đích khả năng sử dụng (ngôn ngữ thứ hai, khó nhìn/nghe) và cũng cho việc học các bộ phận nhạc cụ từ video âm nhạc. –

+0

Đúng. Đáng ngạc nhiên như thế nào, ngoài MySpeed ​​của Enounce, thực sự không tồn tại phần mềm nào khác để làm chậm hoặc tăng tốc phát lại video trên YouTube. – Jason

Trả lời

3

Tôi không thể cung cấp cho bạn giải thích chính xác vì tôi không biết các cuộc gọi API hoặc capabilites, nhưng nó giống như sau: Ứng dụng của bạn tìm iexplore.exe nơi nó chặn cuộc gọi đến một số mô-đun nhất định. Mô-đun chủ yếu là trình phát flash. Flash có hỗ trợ để phát video chậm hơn, do đó bạn sửa đổi cuộc gọi từ iexplore.exe (nút phát JavaScript trên trang web) hoặc thực hiện cuộc gọi bổ sung để đặt tốc độ phát lại.

Những gì bạn cần làm:

  • Sử dụng công cụ này để kiểm tra những gì đang thực sự xảy ra: http://www.nektra.com/products/deviare-api-hook-windows/
  • Tìm hiểu làm thế nào để hỏi Flash Player để làm chậm một đoạn video (có thể là trong tài liệu flash API). Một cách tiếp cận đơn giản có thể là để xem những gì MySpeed ​​thực sự đang làm bằng cách sử dụng công cụ hook Deviare API.
  • Viết chương trình sao chép quy trình này. Nó liên quan đến việc chặn các tin nhắn được gửi từ một xử lý (iexplore.exe) sang một trình xử lý khác (flash .dll). Điều này không thể được thực hiện bên ngoài, nó phải được thực hiện trong nội bộ, vì vậy điều này có thể được giúp đỡ: http://www.codeproject.com/KB/threads/winspy.aspx

On móc: http://msdn.microsoft.com/en-gb/library/ms644960.aspx

Tôi không nghĩ rằng nhiều người đã làm điều này trong C#, do đó, nó có thể cung cấp một thách thức. Tôi sẽ mặc dù được quan tâm đến sự tiến bộ (chướng ngại vật) nếu bạn có một blog hoặc một cái gì đó để chia sẻ các chi tiết đẫm máu trên.:)

EDIT:Deviare API Hook software dường như không chỉ gián điệp cuộc gọi mà còn cho phép bạn chặn chúng. Vì vậy, nó là một gói tất cả-trong-một cho nhu cầu của bạn. :)
EDIT2: câu hỏi liên quan: How do I intercept messages being sent to a window?

+0

Cảm ơn Deviare, có lẽ đó là một giải pháp thay thế thú vị cho EasyHook. Liên kết thứ hai là hữu ích cho một khởi đầu tốt đẹp vào một biển mới của việc học. Thực sự đánh giá cao nỗ lực của bạn trong việc trả lời câu hỏi cũ này, vì vậy tôi sẽ đánh dấu nó là câu trả lời. – Jason

2

Youtube hiện có một máy nghe html5 với các điều khiển tốc độ phát lại.

Tất cả những gì bạn phải làm là bật html5 tại đây http://www.youtube.com/html5 Tuy nhiên, chỉ một số video hỗ trợ trình phát html5.

Hy vọng điều này sẽ hữu ích.

2

Chìa khóa để tăng tốc hoặc làm chậm video là thuyết phục người chơi đa phương tiện rằng máy tính của bạn chậm hơn hoặc nhanh hơn thực tế. Điều này có thể được thực hiện hooking timeGetTime().

Đây là một C# code cực kỳ dễ dàng để thực hiện nó:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Diagnostics; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using Nektra.Deviare2; 


namespace DeviareTest 
{ 
    public partial class Form1 : Form 
    { 
     private int nSpeed; 
     private uint nTime; 

     private NktSpyMgr _spyMgr; 

     public Form1() 
     { 
      InitializeComponent(); 

      _spyMgr = new NktSpyMgr(); 
      _spyMgr.Initialize(); 
      _spyMgr.OnFunctionCalled += new DNktSpyMgrEvents_OnFunctionCalledEventHandler(OnFunctionCalled); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      NktHook hook = _spyMgr.CreateHook("WINMM.dll!timeGetTime", (int)(eNktHookFlags.flgOnlyPostCall)); 
      hook.Hook(true); 

      bool bProcessFound = false; 
      NktProcessesEnum enumProcess = _spyMgr.Processes(); 
      NktProcess tempProcess = enumProcess.First(); 
      while (tempProcess != null) 
      { 
       if (tempProcess.Name.Equals("iexplore.exe", StringComparison.InvariantCultureIgnoreCase) && tempProcess.PlatformBits == 32) 
       { 
        hook.Attach(tempProcess, true); 
        bProcessFound = true; 
       } 
       tempProcess = enumProcess.Next(); 
      } 

      if(!bProcessFound) 
      { 
       MessageBox.Show("Please run \"iexplore.exe\" before!", "Error"); 
       Environment.Exit(0); 
      } 
     } 

     private void OnFunctionCalled(NktHook hook, NktProcess process, NktHookCallInfo hookCallInfo) 
     { 
      nTime++; 

      if (nSpeed==-2) 
       hookCallInfo.Result().LongVal = hookCallInfo.Result().LongVal - (int)(nTime * 0.2); 
      else if(nSpeed==2) 
       hookCallInfo.Result().LongVal = hookCallInfo.Result().LongVal + (int)(nTime * 3); 
     } 

     private void SlowButton_CheckedChanged(object sender, EventArgs e) 
     { 
      nSpeed = -2; 
     } 
     private void FastButton_CheckedChanged(object sender, EventArgs e) 
     { 
      nSpeed = 2; 
     } 
    } 
} 

tôi vừa công bố một bài viết với một mã ví dụ cho thấy làm thế nào để làm điều này với động cơ hooking Deviare. Mã mẫu chỉ hoạt động với phần video (không phải âm thanh) và nó có sẵn here.

+0

Tôi chỉ biên dịch mã từ github nhưng tôi bị treo ứng dụng. Tôi không thể tìm thấy tệp kê khai từ gói deviare. Có lẽ đó là nguyên nhân? – Mark

+0

Vui lòng gửi chi tiết sự cố. Chủ yếu là hai điều có thể xảy ra: bạn cần phải tải xuống phiên bản deviare latsst vì nó đã được cập nhật và mã cũng không hoạt động vì có một số thay đổi về flash hoặc theo cách YouTube đang hoạt động. –

+0

Sự cố ứng dụng khi bắt đầu với thông báo "Kiểm tra Deviare đã ngừng hoạt động".Tôi nhận thấy rằng hướng dẫn yêu cầu tệp có tên Devicom.x.manifest. Tôi không thể tìm thấy nó trong thư mục DeviareV2 mà tôi tin là phiên bản mới nhất. – Mark

0

Chìa khóa để tăng tốc hoặc làm chậm lại một đoạn video là để thuyết phục người chơi đa phương tiện mà máy tính của bạn chậm hoặc nhanh hơn nó thực sự là

thao túng thời gian hệ thống sẽ là một điều rất nguy hiểm và ngu ngốc để làm - không chỉ bạn sẽ phá vỡ các luồng của chế độ người dùng và do đó có tác động nghiêm trọng đến hiệu năng hệ thống nhưng bạn cũng sẽ phá vỡ nhiều chức năng ghi nhật ký và thậm chí là các bộ phản xạ chế độ người dùng điều khiển các trình điều khiển KM ... hệ thống của bạn gây hại (!) bởi vì phần cứng hiện đại có thể lập trình được, được cung cấp đúng (tất nhiên là & độc quyền) của các cuộc gọi func và như vậy. Tôi rất khuyên không nên tái sản xuất điều này, thậm chí một vài ứng dụng AV sẽ chặn điều này vì tính chất nguy hiểm của nó.

Nhưng bạn có phần may mắn: hạt nhân sử dụng thời gian riêng của mình, được đồng bộ hóa với phần cứng để cửa sổ chính nó COULD vẫn ổn định trong một khoảng thời gian giới hạn.

Tôi nghĩ bạn nên quay trở lại bản vẽ, thao túng các cấu trúc cơ bản của hệ điều hành của bạn chắc chắn không phải là cách đúng để đạt được mục tiêu của bạn.

+1

Ông đã đề cập đến Enounce MySpeed ​​và họ đã làm điều đó, vì vậy trong bối cảnh của câu hỏi đó là một câu trả lời đúng. Bạn sẽ ngạc nhiên rằng có bao nhiêu thứ "ngu ngốc" đang được thực hiện bởi phần mềm chạy trên Windows để hoàn thành một nhiệm vụ nhất định. Họ thậm chí còn được gọi là hack! –

+0

Hãy chỉnh sửa nó –

+0

không thể nếu không có tài khoản và khoảng 999999999999 internet-pointZ – name

Các vấn đề liên quan