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
_vlc -vvv
_を使用してVLCを起動します。これにより、2 (debug)
の詳細度がオンになります。これは、Tools>Messagesに移動してVLC GUIでも確認できます。次に、上記のスクリーンショットの手順に従って、デバッグログにコマンドに必要な情報を表示します。その後、以下のスクリプトとオンラインを見て、適切な構文を調整できます。 [その他のオプションを表示]を選択して、コードと構文を確認することもできます。 (上記の私の質問の最初のスクリーンショット。)しかし、これは以下のcvlcコマンドを作成できた方法です。必要に応じて、以下のスクリプトを単に調整することもできます。
最初は、ビデオカメラの1つのRCAオーディオポートでオーディオを動作させることができませんでした。 Tools>Preferences>All(ラジオボタン、左下)。次に、Input/Codecs>Access modules>[〜#〜] alsa [〜 #〜]。 Sample rateを48000 Hzに変更しました。この設定を変更すると、ビデオをストリーミングできるようになります。他のサンプルレートはエラーの原因でした。
Media>Open Capture Deviceに移動します。 ビデオデバイス名とオーディオデバイス名を選択します(上のスクリーンショットではデフォルトです代わりにマイクポートを使用していたため。HauppaugeデバイスでRCA接続を使用している場合は、あなたのものとは異なります。)NTSC(またはビデオテープのフォーマット再生)をクリックして、Tools>Codec Informationに移動します。以下に従って、以下のスクリプトを調整します。そこに与えられた情報のために、スクリプトでフレームレートを29.97に、サンプルレートを48000 Hzに調整しました。
a。ファイル名とメタデータの入力を求められます。ファイルは〜/ Videosに保存するように設定されています。
b。VLC(cvlc)
--foreground
_オプションを使用すると、「ctrl c」を押すことができ、スクリプトのこの部分のみを停止し、次の部分に進みます。 (私が持っているいくつかのビデオは短いです。)vcodec
およびacodec
は、_mpeg2
_およびmpga
に設定されます。 Hauppauge 61 のAmazon製品ページには、MPEG-2にエンコードすることが記載されています。mux=ts
_を使用しています。最初は_vcodec=h264
_ _acodec=mpga
_と_mux=mp4
_を使用していました。ただし、オーディオ同期の問題があり、ビデオの特定の場所で音が途切れることがありました。 mux =セクション here も参照してください。samplerate=48000
_が必要でした。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を生成します。
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"
_
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
私はこのハードウェアを最初に入手したときに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