2017-05-19 4 views
1

Tyrrz의 패키지 YoutubeExplode을 사용하여 .NET에서 YouTube 동영상을 추출하려고합니다. 어제 내 프로그램이 잘 돌아가고 있었고 플래시 및 html5 비디오 용 오디오 및 비디오 스트림을 다운로드 할 수있었습니다. 나는 패키지를 사용하여 HTML5 비디오를 추출 할 때하지만 오늘은, 그것이 내가 비디오 스트림을 얻기 위해 사용하고 오류 Response status code does not indicate success: 403 (Forbidden). 코드로 종료하는 것입니다 :C# 패키지 Tyrrrz/YoutubeExplode가 YouTube html5 동영상의 경우 오류 403을 반환하지만 플래시 비디오의 경우 오류가 표시되지 않습니다

var youtube = new YoutubeClient(); 
var video = await youtube.GetVideoInfoAsync("GemKqzILV4w"); //YouTube ID for random video 
var stream = video.MixedStreams.OrderBy(s => s.VideoQuality).Last(); 
await youtube.DownloadMediaStreamAsync(stream, "C:\\Videos\\vid.mp4"); 

내 이론은 유튜브 내 요청을 차단하고 있다는 것입니다 어떻게 든 html로 비디오를하지만이 문제를 해결할 수 있는지 모르겠습니다. 패키지에 YoutubeClient()가 포함 된 헤더를 보낼 수있는 방법이 있습니까? 이 패키지를 사용한 경험이있는 사람이 있습니까? 나는 YoutubeExtractor와 libvideo를 시도해 왔지만,이 유형의 C# 패키지는 다른 모든 C# 패키지에 있지만 지금까지는 YoutubeExplode가 html5 비디오와 함께 작동하는 유일한 제품입니다. 이 문제에 대한 도움이나 가능한 해결책은 많이 알려져 있습니다.

+0

YoutubeExplode는 어떤 웹 사이트에서 비디오를 캡처합니까? 유튜브 전용 인 경우 FLV 파일 (Flash)과 WebM (Google) 및 MP4 (MPEG)와 같은 다른 형식을 구분하는 방법은 무엇입니까? 내 말은 MP4가 아니라 FLV를 제공해서는 안된다는 것입니다. 또한 Youtube는 대부분 MP4, WebM 및 M4A 파일을 유지하므로 어디에서이 FLV 파일을 가져올 지 모릅니다. ** 올바른 일에 대해 묻고 있는지 확인하십시오 ** –

+0

'(s => s.VideoQuality) .Last();'의 값을 확인할 방법이 있습니까? 링크의 최대 비디오 크기가 ** 360p **이므로 HD가되지 않는 것이 좋습니다. 어쩌면 그게 고해상도가 발견되지 않는 이유 일까 ?? 더 나쁜 경우가 악화되면 ... 비디오 페이지의 HTML을 (String으로)로드 한 다음 거기에서 직접 링크를 추출하는 코드를 작성하십시오. ''adaptive_fmts ''를 찾으면 HTML 엔티티를 파싱하고 텍스트의 UTF 인코딩 (예 :'% 26'은 최종 직접 링크 등에서 '&'로 변환됩니다) 등의 직접 링크를 얻을 수 있습니다. –

답변

0

먼저 github 발행 추적기에 대해 프로젝트 별 질문을해야합니다. 나는 보통 모든 날마다 같은 날에 응답합니다.

둘째, 실제로 "html5 동영상에서는 작동하지만 플래시 동영상에서는 작동하지 않는다"는 의미입니까? 내 지식으로는 유튜브는 더 이상 플래시 비디오를 제공하지 않습니다. 일반적으로 403 오류 코드는 스트림의 서명이 (올바르게) 해독되지 않았 음을 의미합니다. 이 게시물을 쓰는 시점에서 모든 테스트가 끝나고 데모 응용 프로그램을 사용하여 게시물의 비디오에서 비디오 정보 및 다운로드 스트림을 올바르게 가져올 수 있습니다. enter image description here Youtube는 지역별 답변을 제공하므로 사용자에게 제공된 응답이 어떤 이유로 정확하게 처리되지 않았을 가능성이 있습니다. github issue tracker에 문제를 제기하여 문제의 원인을 논의하고 잠재적 인 버그를 수정할 수 있습니까?