Memperbaiki bingkai yang dijatuhkan dalam 3 file resolusi video yang berbeda

1

Saya mencari cara untuk secara otomatis memeriksa 3 file video dari konten yang sama, tetapi menggunakan 3 resolusi berbeda (320x180, 640x360, 1280x720), dan mengidentifikasi frame yang jatuh dan mengganti frame yang terkena efek dari keyframe ke keyframe dengan audio, memastikan garis gelombang audio dengan file lain.

Intinya, setiap file akan memiliki jumlah frame yang persis sama dan setiap file gelombang audio akan berbaris tepat di setiap file yang terpisah.

Apakah ini mungkin menggunakan ffmpeg?

William Bracken
sumber
1
Hai William dan selamat datang di Superuser. Itu sepertinya tugas yang cukup! Langkah apa yang sudah Anda coba sendiri? Apa yang penelitian Anda tunjukkan sebagai solusi yang layak?
Saaru Lindestøkke
Frame yang jatuh dapat diganti dengan duplikasi tetapi audio yang hilang / terdistorsi hanya dapat diganti dengan keheningan. Selain itu, frame yang dijatuhkan selama transkoding ffmpeg tidak memengaruhi waktu audio. Bagaimana file-file ini dihasilkan?
Gyan

Jawaban:

0

Saya baru mengenal FFMPEG ... Tetapi penelitian yang saya lakukan menunjukkan bahwa itu mungkin saja terjadi.

Mengidentifikasi bingkai yang terjatuh:

! / bin / bash

rm framediffs.lis

ffmpeg -i MPEG0004.AVI f% d.png

framenum = 1 sementara [$ framenum -lt 50] lakukan file1 = f $ (($ framenum)). png file2 = f $ (($ framenum + 1)). png bandingkan - metrik RMSE $ file1 $ file2 NULL: 2> diff.lis fdiff = cat diff.lis |cut -d ' ' -f 1 echo $ file1 $ file2 $ fdiff >> framediffs.lis framenum = $ (($ framenum + 1)) selesai

cat framediffs.lis

Mensimulasikan beberapa frame yang dijatuhkan:

bandingkan -metric RMSE f45.png f47.png NULL: bandingkan -metric RMSE f45.png f48.png NULL: bandingkan -metric RMSE f46.png f48.png NULL: bandingkan -metric RMSE f47.png f50.png NULL:

maka jika perlu, potong sebagian file ...

Memotong segmant tanpa re-encoding: ffmpeg -i source.mp4 -ss 00:00:05 -t 00:00:10 -c copy cut_video.mp4

Atau ganti segmen dari file yang tidak menunjukkan kerugian ...

Mengganti segmen dari file yang bagus: ffmpeg -i in.mp4 -vf trim = X -c: salinan out.mp4 ffmpeg -i in.mp4 -vf trim = X, setpts = 'if (eq (N, 0), 0, PTS) '-c: salinan dari.mkv

Jika dicrepency audio, ekstrak audio dan kemudian remux file yang buruk ...

Mengekstrak audio dari file dan remuxing (saya pikir memilih segmen antara 2 keyframe harus dimungkinkan): ffmpeg -i vid.mkv -map 0: 2 -ac 2 aud.wav avconv -i INPUT_FILE_WITH_BROKEN_SOUND.mp4 -i SECOND_INPUT_FILE.mkv -c copy -map 0: v: 0 -map 1: a: 1 OUTPUT.mp4

Seperti yang saya katakan, saya seorang pemula dan akan menghargai pikiran untuk menghindari pemborosan waktu. Terima kasih!

William Bracken
sumber