0

ビデオを編集するための次のコマンドがありますが、すべてのプロセスに時間がかかります。ただし、元のビデオと同じ品質です。

//First cut original video
exec("ffmpeg -i $video_path_main -ss $first_time1 -t $first_time2 -s 476x268 -r 10 -b 2000k -r 30 -g 100 -ar 22050 -ab 48000 -ac 1 -strict -2 $name_first");
exec("ffmpeg -i $video_path_main -ss $second_time1 -t $second_time2 -s 476x268 -r 10 -b 2000k -r 30 -g 100 -ar 22050 -ab 48000 -ac 1 -strict -2 $name_second");

$name_edit_second = uniqid() . '.mp4'; //Then editing the second video
exec("ffmpeg -i $name_second -s 476x268 -r 10 -b 2000k -r 30 -g 100 -ar 22050 -ab 48000 -ac 1 -strict -2 -vf movie='" . $image_name . " [watermark]; [in] [watermark] overlay=308:43"."' $name_edit_second");

//Then merge video file mp4 with Mencoder
$name_total_1 = uniqid() . '.mp4';
exec("mencoder -oac pcm -ovc xvid -vf scale -xvidencopts bitrate=460 -o $name_total_1 ".$name_first.' '.$name_edit_second);

//Then convert the video to 3 formats that is necessary in my Player.
$name_total = uniqid();

//Of MP4 a FLV
exec("ffmpeg -i $name_partial -f flv -s 476x268 -r 10 -b 2000k -r 30 -g 100 -ar 22050 -ab 48000 -ac 1 $name_total.flv");

//Of MP4-Mencoder a MP4-FFMPEG
exec("ffmpeg -i $name_partial -s 476x268 -r 10 -b 2000k -r 30 -g 100 -ar 22050 -ab 48000 -ac 1 -strict -2 $name_total.mp4"));

//Of MP4 a WEBM
exec("ffmpeg -i $name_partial -acodec libvorbis -s 476x268 -r 10 -b 2000k -r 30 -g 100 -ar 22050 -ab 48000 -ac 2 -f webm $name_total.webm");

一部のパラメーターがすべてのプロセスに時間がかかるかどうかはわかりません。または、このコマンドの 1 つに時間がかかる場合。

注: 一部の動画には、元の動画の 2 つ以上の部分があります。


アップデート

たぶん、パラメータ-theards 1はCPUのリソースを大量に消費しないのに役立ちます。また、8 人のユーザーしかリソースを 100% 使用しないため、再エンコードを最適化する必要があります。

他のサーバーでFFMPEGを実行し、編集したビデオを他のサーバーに返し、そこでアプリケーションを維持します。

私の英語でごめんなさい。

4

1 に答える 1

1

セグメントを作成して画像を重ねる

ffmpeg -i input.flv -i image.jpg -ss 30 -t 5 -c:v libx264 -preset medium \
-crf 23 -filter_complex overlay=308:43 -c:a libfaac -q:a 100 output1.mp4

ffmpeg -i input.flv -i image.jpg -ss 60 -t 5 -c:v libx264 -preset medium \
-crf 23 -filter_complex overlay=308:43 -c:a libfaac -q:a 100 output2.mp4

セグメントを連結してエンコードする

まず、demuxer が読み取るファイル リストを作成します。list.txtこの例では次のように名前が付けられています。

echo "file 'output1.mp4'" >> list.txt
echo "file 'output2.mp4'" >> list.txt

の内容は次のlist.txtとおりです。

file 'output1.mp4'
file 'output2.mp4'

ビデオを連結output1.mp4し、 concat demuxeroutput2.mp4を使用します。デマルチプレクサは、次のファイルを入力として使用します。list.txt

ffmpeg -f concat -i list.txt -c copy -movflags faststart final.mp4
ffmpeg -f concat -i list.txt -c:v libvpx -c:a libtheora -q:a 3 final.webm

これ-movflags faststartにより、mp4 ファイルが完全にダウンロードされる前に、JW Player で再生を開始できます。webm の例 ( など) に何らかのレート制御方法を追加する必要があります-b:v。私はこのエンコーダーに慣れておらず、デフォルトは良くありません。

これで、MP4 コンテナーに H.264 ビデオと AAC オーディオを含むファイルがあり、webm コンテナーに VP8 ビデオと Vorbis オーディオを含むファイルがあり、さまざまなブラウザーに適切なカバレッジを提供するはずです。

こちらもご覧ください

于 2013-02-14T01:37:17.660 に答える