LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 644|回复: 8

firefox 有没有插件能下载并且合并youku视频?

[复制链接]
发表于 2011-9-13 19:36:52 | 显示全部楼层 |阅读模式
???????????
发表于 2011-9-13 20:11:34 | 显示全部楼层
Download YouTube Videos + Flash Video
https://addons.mozilla.org/en-US ... oad-youtube-videos/
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-9-13 20:15:35 | 显示全部楼层
bu neng he bing.......
回复 支持 反对

使用道具 举报

发表于 2011-9-13 21:01:44 | 显示全部楼层
要求一个浏览器的插件完成视频处理功能有点蛋疼。
回复 支持 反对

使用道具 举报

发表于 2011-9-13 21:03:46 | 显示全部楼层

  • 作为Gentoo用户不会用ffmpeg是会遭人嘲笑的... 这样的问题不应出自一个Gentoo用户之口...
  • Firefox扩展本身的局限性决定了它们几乎不可能合并视频文件(依赖某个远程服务器的除外,不过这样代价似乎大了一点...)。
  • 关于下载视频,我通常的做法是:

    • 将视频URL复制至flvcd: http://www.flvcd.com/
    • 下载flvcd给出的M3U文件至/tmp/play.m3u;
    • 极其丑陋的shell script:
      1. #!/bin/sh
      2. filelst=($(cat /tmp/play.m3u | grep -v ^\#))
      3. count=${#filelst[@]}
      4. for i in {1..$count}; do
      5.         wget -U "Mozilla/5.0 (X11; Linux x86_64; rv:6.0) Gecko/20100101 Firefox/6.0" "$filelst[i]" -O ~/videos/$i.mp4
      6. done
      复制代码

  • 关于如何合并视频文件:http://ffmpeg.org/faq.html#SEC27
    最后的实例是基本可以照搬的...
  • 用mencoder合并可能要简单些,不过mencoder已被mplayer2无情地踢出去了,我这里无法验证了...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-9-13 21:19:50 | 显示全部楼层
3q3q3q3q
回复 支持 反对

使用道具 举报

发表于 2011-9-14 14:54:47 | 显示全部楼层
Post by RichardGv;2151797

  • 作为Gentoo用户不会用ffmpeg是会遭人嘲笑的... 这样的问题不应出自一个Gentoo用户之口...
  • Firefox扩展本身的局限性决定了它们几乎不可能合并视频文件(依赖某个远程服务器的除外,不过这样代价似乎大了一点...)。
  • 关于下载视频,我通常的做法是:

    • 将视频URL复制至flvcd: http://www.flvcd.com/
    • 下载flvcd给出的M3U文件至/tmp/play.m3u;
    • 极其丑陋的shell script:
      1. #!/bin/sh
      2. filelst=($(cat /tmp/play.m3u | grep -v ^\#))
      3. count=${#filelst[@]}
      4. for i in {1..$count}; do
      5.         wget -U "Mozilla/5.0 (X11; Linux x86_64; rv:6.0) Gecko/20100101 Firefox/6.0" "$filelst[i]" -O ~/videos/$i.mp4
      6. done
      复制代码

  • 关于如何合并视频文件:http://ffmpeg.org/faq.html#SEC27
    最后的实例是基本可以照搬的...
  • 用mencoder合并可能要简单些,不过mencoder已被mplayer2无情地踢出去了,我这里无法验证了...

我有一个更加丑陋的shell script:
  1. cp $(ls -l /proc/$(ps aux | grep -v grep | grep libflashplayer | sed "s/$LOGNAME *//" | sed "s/ .*//")/fd/ | grep tmp | sed "s/ ->.*//" | sed "s/.* /\/proc\/$(ps aux | grep -v grep | grep libflashplayer | sed "s/$LOGNAME *//" | sed "s/ .*//")\/fd\//") ~/
复制代码
不过好处是不用找那些解析网站,缓冲完就能直接拿出来,并且可以写成alias

至于视频合并,印象中mpg格式的似乎是可以简单的用cat来合并的。。。不过这种格式应该很少见了吧。。。假如是mp4,也可以用mkvtoolnix封成一个mkv;flv则没什么好办法了。。。
回复 支持 反对

使用道具 举报

发表于 2011-9-16 20:16:48 | 显示全部楼层
#!/usr/bin/perl -w
#http://linuxsir.cn/bbs/thread379498.html
use strict;
use Digest::MD5 qw/md5_hex/;

sub download {
        my ($id, $ans, $file, $dir) = @_, my $cnt = 0;
        for (my $i = 0; defined ($_ = $file->[$i]); $i++) {
                if (/^<\/stream>/) {
                        $cnt++;
                }
                elsif ($cnt == $ans && /url="(.+)"/) {
                        next if fork();
                        while (1) {
                                qx/wget -P $dir -U Xeslaro -t 3 '$1'/;
                                exit unless $?;
                                @$file = api_rest($id);
                                $file->[$i] =~ /url="(.+)"/;
                        }
                }
        }
        while (wait() != -1) {
        }
}
sub api_rest {
        $_ = shift;
        /id_(.+)\.html/;
        while (1) {
                my $time = time();
                my $auth = md5_hex((time().' XOA== MWZlNWE4Y2Q4OWQ0NjEyMWJjZTJmMWNiYTVhNzQwZGM='));
                my $url = "http://api.youku.com/api_rest?method=video.getvideofile&pid=XOA==&ctime=$time&auth=$auth&videoid=$1";
                my @file = qx/wget -U Xeslaro -O - -t 1 '$url'/;
                return @file if (!$? && grep(/<\/stream>/, @file) >= 1);
        }
}
foreach (@ARGV) {
        my $dir = "/tmp/youku".time();
        qx{
                if [[ ! -d $dir ]]; then
                        mkdir $dir
            else
                        rm -r $dir
            fi
        };
        my @files = api_rest($_), my $name, my $cnt=0, my $ans=0, my $min ,my $file;
        my %rank = (
                hd2 => 0,
                mp4 => 1,
                flv => 2,
                flvhd => 3,
                '3gphd' => 4,
                '3gp' => 5,
        );
        foreach (@files) {
                if (/CDATA\[(.+)\]\]/) {
                        $name = $1;
                }
                elsif (/type="(.+)">/) {
                        if (!$cnt) {
                                $min = $rank{$1};
                        }
                        elsif ($rank{$1} < $min) {
                                $ans = $cnt;
                        }
                        $cnt++;
                }
        }
        if (fork()) {
                print "downloading $name begins...\n";
                next;
        }
        download($_, $ans, \@files, $dir);
    if (-e $dir){
        print "exits\n\n";
    }
    opendir (mydirFH ,$dir);
    @files = readdir (mydirFH);   
        # @file = qx/ls -l $dir\/*.*/;
    foreach $file (@files){
        if ($file =~ /\.\.?/){
            next;
        }
     $file =~ /\.(.+)$/;
     print $file , "\n";
     $file =~ s/(\?|&|;)/\\$1/g;
        print $file , "\n";
     qx/mencoder $dir\/$file -oac mp3lame -ovc copy -of lavf -lavfopts format=mp4 -o '$name'.mp4/;   
    }
        # else {
        #         qx/mv $dir\/$file[0] '$name'.$1/;
        # }
        # qx/rm -r $dir/;
        print "$name downloaded...\n";
        exit;
} continue {
        sleep 1;
}
while (wait() != -1) {
}
回复 支持 反对

使用道具 举报

发表于 2011-9-16 20:23:35 | 显示全部楼层
把上面perl 脚本保存成downloadyouku.pl  然后,以你想看的youku视频的网址作参数
如 ./downloadyouku.pl  http://v.youku.com/v_show/id_XMzAyNzY4MDA0.html
它会以多线程方式下载 视频到/tmp/ 目录下,并转换成 mp4 格式
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表