web-dev-qa-db-ja.com

f4fフラグメントを処理し、それらを完全なビデオに変換するための優れたプログラムはありますか?

サイトからビデオをダウンロードしようとしています。残念ながら、彼らはそれをf4fの種類の「分数」としてストリーミングし、私の通常のプログラム「Download Helper」(Firefoxの拡張機能)は、無限に増え続けるフラグメントのリストを私に提示します。

だから、のための良いプログラムはありますか

  • ストリーミングされたビデオからf4fフラグメントをダウンロードする(例:0001、0002、0003などとして保存する)
  • 保存したf4fフラグメントを1つのビデオファイルにステッチします

ダウンローダーがブラウザー(FirefoxまたはChrome)の拡張機能であることが最善だと思います。両方の機能(ダウンロードと「ステッチ」)が同じプログラム(ブラウザ拡張機能)に含まれていれば素晴らしいと思います。

10
Baard Kopperud

あなたが探しているものはここにあります: https://github.com/K-S-V/Scripts/blob/master/AdobeHDS.php

git clone https://github.com/K-S-V/Scripts.git

これにより、Script /AdobeHDS.phpが提供されます

(時々、最新バージョンを取得するためにgit pullを実行する必要があるかもしれません)。

マニフェストファイルを使用してスクリプトを直接起動できます(ドキュメントを見つけるのはあなた次第です...そこにいくつかのヒントがあります: http://forum.videohelp.com/threads/342430-F4F-capturing-converting

  • 非常に基本的なLinuxスクリプト:
#!/bin/bash

FIRST=1

# ( no real sample provided, up to you to find one )
URL_PREFIX=http://video-1-123.rutube.ru/hdsv2/Hq_BCp3Ohmd5dRp4DmgH5w/1411307589/7/n10vol1/a84bc722fed94812aa61f1b71510e953.mp4Seg1-Frag

while [[ $# > 0 ]]
do
    case $1 in
  first=*)
  FIRST=${1//first=/}
  ;;
  url=*)
  URL_PREFIX=${1//url=/}
  ;;
  name=*)
  NAME=${1//name=/}
  ;;
  *)
  echo "[ERROR] Unrecognized option '$1'"
  exit 1
  ;;
    esac
    shift 1
done

if [[ $URL_PREFIX =~ http://([^/]*/)*(.*) ]]
then
    echo "short : ${BASH_REMATCH[1]} ${BASH_REMATCH[2]}"
    SHORT_PREFIX=${BASH_REMATCH[2]}
fi



declare -i FRAG
FRAG=$FIRST

OK=0
while [[ $OK == 0 ]]
do
if [[ -f ${SHORT_PREFIX}${FRAG} ]]
then
    echo " Fragment #$FRAG already downloaded, on disk"
else
    wget ${URL_PREFIX}${FRAG}
    OK=$?
fi
FRAG=$(( $FRAG + 1 ))
done

if [[ -f $SHORT_PREFIX.flv ]]
then
    echo "$SHORT_PREFIX.flv already exists move it away if you want to restart a download + reassembly"
else
# should extract name from url.
    php Scripts/AdobeHDS.php --fragments $SHORT_PREFIX
fi

if [[ -n $NAME ]]
then
    echo "renaming $SHORT_PREFIX.flv to $NAME.flv"
    mv $SHORT_PREFIX.flv "$NAME.flv"
fi

./getfrag.sh url =(末尾の1がない最初のフラグメントのURL)name =(最後のflvファイルの名前を変更する名前)で起動します。

...そして希望。

SO: F4FファイルをMP4に変換する方法は?

10
philippe lhardy

私はKSVスクリプトを使用しますphilippe言及しますが、HDS Link Detector FireFoxのアドオンを使用します。アドオンに適切なコマンドを生成させてスクリプトを提供し、コンソールに貼り付けて、この方法でスクリプトを実行します。

私はこれをWindowsで行います。 PHP(5.6.3)のインストールと構成にはそれほど時間はかかりませんでしたが、php_curl.dllの問題で小さな問題が発生しました。

私は他の目的でphpを使用していないので、c:\ phpディレクトリを作成し、%PHP_HOME%/ ext/php_curl.dll)をコピーして貼り付けるだけで、この問題を回避しました。 into c:\ php。便宜上、PHP_HOME環境変数を作成し、それをphpインストールディレクトリに設定したことに注意してください。

1

AdobeHDS.php + HDS Link Detector Firefoxアドオンに関する回答に少し基づいて構築するために、一部のビデオで、アドオンが検出したマニフェストのダウンロードに関連するアクセスエラーが発生することがわかりました。

Processing manifest info.... Access Denied! Unable to download the manifest.

これは、フラグメントのURLを RL Snooper で検出し、Firefoxアドオン DownThemAll! でバッチダウンロードすることで解決できます。そして最後に、AdobeHDS.phpを介してすべてのフラグメントを結合できます。

例:

  1. URL Snooperを開き、Seg1-Fragでフィルタリングします。ファイルフラグメントは通常Seg1-Frag [i]構造に従い、iは1以上の数値を表します。SniffNetworkボタンを押して、ブラウザーでストリーミングビデオの再生を開始します。 URL Snooperに戻り、検出されたフラグメントのURLを..Seg1-Fragまでコピーします。例えば:

    examplesite.net/programs/series/t6/c264,,.mp4.csmil/nameofvideo_Seg1-Frag

  2. 次に、Firefoxで[ツール]-> [DownThemAll!]に移動します。ツール->マネージャー。左上隅の[+]ボタンを押し、前にコピーしたURLを[ダウンロード]フィールドに貼り付けてから、URLの最後にフラグメント数の範囲推定値([1:2000]など)を追加します。例えば:

    examplesite.net/programs/series/t6/c264,,.mp4.csmil/nameofvideo_Seg1-Frag[1:2000]

    次にプッシュ:開始! ->バッチをダウンロードします。

  3. 最後に、AdobeHDS.phpを介してすべてのフラグメントをマージします。

    php AdobeHDS.php --fragments nameofvideo_Seg1-Frag

1
dash9483