web-dev-qa-db-ja.com

Hauppauge 610アナログビデオキャプチャスクリプトまたはコマンド

Xubuntu 14.04があります。私が使用しているビデオカメラは Sony CCD-TRV16 NTSC 180x Digital Zoom です。私は Hauppauge 610 USB-Live 2 Analog Video DigitizerとVideo Capture Device 8mmテープをmp4に変換します。VLCを使用してビデオを変換しています。

かなりの数のテープを変換します。コマンドまたはスクリプトで使用するのとまったく同じVLC GUI設定を使用できたらうれしいです。また、一定の期間が経過すると録音を停止する機能も優れています。これらの変換にどのプログラムを使用するかは気にしません。 このお客様 ffmpegを正常に使用できたと述べました。ただし、動作するプログラムであれば問題ありません。事前に感謝します!

ffmpeg -f v4l2 -i /dev/video0 -f alsa -i hw:2,0の出力は次のとおりです。

Input #0, video4linux2,v4l2, from '/dev/video0':
  Duration: N/A, start: 8535.656468, bitrate: 165722 kb/s
    Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 720x480, 165722 kb/s, 29.97 fps, 29.97 tbr, 1000k tbn, 1000k tbc
Guessed Channel Layout for  Input Stream #1.0 : stereo
Input #1, alsa, from 'hw:2,0':
  Duration: N/A, start: 1450034548.361553, bitrate: 1536 kb/s
    Stream #1:0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
2
jbrock

準備手順

_vlc -vvv_を使用してVLCを起動します。これにより、2 (debug)の詳細度がオンになります。これは、Tools>Messagesに移動してVLC GUIでも確認できます。次に、上記のスクリーンショットの手順に従って、デバッグログにコマンドに必要な情報を表示します。その後、以下のスクリプトとオンラインを見て、適切な構文を調整できます。 [その他のオプションを表示]を選択して、コードと構文を確認することもできます。 (上記の私の質問の最初のスクリーンショット。)しかし、これは以下のcvlcコマンドを作成できた方法です。必要に応じて、以下のスクリプトを単に調整することもできます。

最初は、ビデオカメラの1つのRCAオーディオポートでオーディオを動作させることができませんでした。 Tools>Preferences>All(ラジオボタン、左下)。次に、Input/Codecs>Access modules>[〜#〜] alsa [〜 #〜]Sample rate48000 Hzに変更しました。この設定を変更すると、ビデオをストリーミングできるようになります。他のサンプルレートはエラーの原因でした。

Media>Open Capture Deviceに移動します。 ビデオデバイス名オーディオデバイス名を選択します(上のスクリーンショットではデフォルトです代わりにマイクポートを使用していたため。HauppaugeデバイスでRCA接続を使用している場合は、あなたのものとは異なります。)NTSC(またはビデオテープのフォーマット再生)をクリックして、Tools>Codec Informationに移動します。以下に従って、以下のスクリプトを調整します。そこに与えられた情報のために、スクリプトでフレームレートを29.97に、サンプルレートを48000 Hzに調整しました。

スクリプトについて

a。ファイル名とメタデータの入力を求められます。ファイルは〜/ Videosに保存するように設定されています。

b。VLC(cvlc)

  1. 8mmテープは2時間なので、タイムアウトを122分に設定します。 _--foreground_オプションを使用すると、「ctrl c」を押すことができ、スクリプトのこの部分のみを停止し、次の部分に進みます。 (私が持っているいくつかのビデオは短いです。)
  2. VLC GUIを使用して、オーディオおよびビデオデバイス名を検索できます。 (上のスクリーンショットを参照してください。)
  3. ビデオがNTSCまたは別の形式かどうかを確認します。
  4. vcodecおよびacodecは、_mpeg2_およびmpgaに設定されます。 Hauppauge 61 のAmazon製品ページには、MPEG-2にエンコードすることが記載されています。
  5. MPEG-2の場合、VLC GUIは.ts形式のオプションのみを提供しました。 (上の2番目のスクリーンショットを参照してください。)したがって、私は_mux=ts_を使用しています。最初は_vcodec=h264_ _acodec=mpga_と_mux=mp4_を使用していました。ただし、オーディオ同期の問題があり、ビデオの特定の場所で音が途切れることがありました。 mux =セクション here も参照してください。
  6. 動作させるには_samplerate=48000_が必要でした。
  7. コーデック情報で指定された1秒あたりのフレームは29.97でした。これはVHS/8mmテープの標準です。したがって、私はそれを一致させることにしました。
  8. インターレースを解除することにしました。私はこれが良く見えると思った。
  9. _mux=ts_を使用すると、大きなファイルが作成されます。私の2時間のビデオは5〜7 GBです。

c。FFmpegはlibx264でさらに圧縮し(約5 GBから約1.5 GB)、メタデータを追加します。各8mmテープについて追加の手書きメモがあり、この追加情報をファイルに含めたいと思いました。同じコマンドで、FFmpegは追加のオーディオ圧縮なしでストリームコピーとして左チャンネルのオーディオを左チャンネルから左チャンネルと右チャンネルの両方に移動します。私のビデオカメラにはRCAオーディオポートが1つしかありません。これにより、1人のスピーカーの問題が修正されます。 mondaugen に、1チャンネルオーディオの問題に関する回答をありがとう。

d。最後に、スクリプトが終了すると通知されます。私の個人的なスクリプトでは、代わりに以下を実際に使用しています。

コンピューター上:

_exo-open --launch WebBrowser $HOME/Videos/video-finished.htm
_

ファイルの内容:_<p style="font-size: 128px; color: green; font-family: sans; text-align: center; margin-top: 10%; font-weight: bold;">VIDEO FINISHED</p>_

私の電話:gcalcliをインストールして、スクリプトの完了時にGoogleカレンダー経由で電話で通知を受け取ることができます。以下では、将来の2分間の日付と時刻が変数に入れられます。次に、その時間のカレンダーエントリが作成されます。そのイベントの開始に対してリマインダーが設定されます。 Googleカレンダーには2分間のバッファが必要です。 (私は1分間試しました。)エンコードが終了してから2分後に通知されます。

_new_date=`date --date="2min"`
gcalcli --calendar 'Name of Your Calendar' --title 'Video Finished' --where '' --when \'"$new_date"\' --duration 5 --description '' --reminder 0 add
_

最終製品

最終結果は、より大きな.tsファイルとさらに圧縮された.mp4を生成します。

CPU使用率

AMD A8-6500Bプロセッサーを使用しています。 cvlcは約15%のCPU使用率で実行されます。ただし、ffmpegは約97%で実行されていました。そのため、スクリプトでは(下のスクリプトではありません)、_-threads 3_オプションを追加して、CPU使用率を全体で75%に保ちました。プロセッサがクアッドコアであるため、これを行うことができます。

_#!/bin/bash

# Name:         Hauppauge 610 USB-Live 2 Analog Video Digitizer and Video Capture Device Conversion Script
# Author:       jbrock
# Dependencies: VLC media player; ffmpeg, in Ubuntu you will need to add a ppa to install.  
# License:      GNU GPLv3 (http://www.gnu.de/documents/gpl-3.0.en.html)
# Usage:        Digitize analog tapes to .ts format. Then convert to mp4, add metadata, and make sound work on left and right channels.

# Enter the name of the file.
echo -n "Enter file name: "
read archivo

# This is for metadata. It will show up in the media player playlist or after clicking Properties (in OS X Info) on the file context.
echo -n "Enter a description: "
read comentarios

# Encode video and stop after 122 minutes. The foreground option allows you to hit 'ctrl c,' and it will only stop this portion of the script.
timeout --foreground 122m cvlc v4l2:///dev/video0 :input-slave=alsa://hw:2,0 :v4l2-standard=NTSC :live-caching=300 --sout '#transcode{vcodec=mpeg2,acodec=mpga,ab=128,channels=2,samplerate=48000,fps=29.97,deinterlace}:std{access=file{no-overwrite},mux=ts,dst='$HOME/Videos/$archivo.ts'}'

# Convert to H.264 to compress further, add in the metadata comments, and make output from the left speaker to both speakers. 
ffmpeg -i $HOME/Videos/$archivo.ts -c:v libx264 -preset medium -crf 22 -metadata comment="$comentarios" -af "pan=mono|c0=FL" $HOME/Videos/$archivo.mp4

# Show the 'finished' message. 
notify-send "VIDEO FINISHED"
_
2
jbrock

ffmpegの例を次に示します

ffmpeg -f v4l2 -i /dev/video0 -f alsa -i default -t 02:02:00 \
-c:v libx264 -crf 23 -preset medium \
-c:a aac -strict experimental -ac 1 -b:a 96k \
-vf yadif,hqdn3d,format=yuv420p -movflags +faststart output.mp4
  • -tは継続時間です。この例では、2時間2分の出力を作成します。

  • X-264については FFmpeg Wiki:H.264 Video Encoding Guide を参照してください-crfおよび-preset情報。

  • yadif はインターレース解除です。設定を試して、コンテンツに最適なモードを確認する必要があります。または、 w3fdif を試すこともできます。

  • hqdn3d はノイズ除去です。コンテンツにノイズが多い場合に役立ちますが、ノイズを除去しすぎると明らかなぼやけが生じ、このフィルターは遅くなる可能性があります。

  • format フィルターは、広く互換性のあるクロマサブサンプリングスキームを保証します。それ以外の場合、ffmpegは、クロマサブサンプリングを回避または最小化したいと想定し、QuickTimeなどの非FFmpegベースのプレーヤーで出力を再生できない場合があります。

  • -movflags +faststartは、エンコードが完了した後、ファイルの最後から最初にデータを移動します。これにより、視聴者がプログレッシブダウンロードで視聴している場合、ファイルが完全にダウンロードされる前に再生を開始できます。

  • あなたは付け加えられます -metadata title="Title"およびその他のメタデータ(必要に応じて)。

余分なジャンクを切り取る

出力を見た後、たとえば青または黒の空白のビデオを削除してトリムしたい場合は、再エンコードせずに再多重化できます。これにより、最初の10秒がスキップされ、600秒(10分)の出力が作成されます。フレームは正確ではないかもしれませんが、おそらく十分に近いでしょう。

ffmpeg -ss 10 -i input -c copy -t 600 output
1
llogan

私はこのハードウェアを最初に入手したときにffmpegメソッドのバリエーションも使用していましたが、vlcのデフォルトのトランスコードがffmpegよりも私のシステムでより良い視覚結果をもたらすことを観察したので、vlcコマンドライン(cvlc)上記のGUIの例が実行していることを要求するコマンドライン。

cvlc  v4l2:///dev/video1:standard=NTSC :input-slave=alsa://hw:3,0 :live-caching=1000 --sout "#transcode{vcodec=h264,acodec=mpga,vb=3000,fps=29.97,ab=128,audio-sync,channels=2,deinterlace}:file{dst=rec122015.mp4,no-overwrite}" --sout-keep
0
Matt Rossmiller