Saya telah mencoba mencari cara memutar video dengan FFmpeg. Saya bekerja dengan video iPhone yang diambil dalam mode potret. Saya tahu cara menentukan derajat rotasi saat ini menggunakan MediaInfo (pustaka bagus, btw) tapi saya terjebak di FFmpeg sekarang.
Dari apa yang saya baca, apa yang perlu Anda gunakan adalah opsi vfilter . Menurut apa yang saya lihat, seharusnya terlihat seperti ini:
ffmpeg -vfilters "rotate=90" -i input.mp4 output.mp4
Namun, saya tidak bisa membuatnya bekerja. Pertama, -vfilters tidak ada lagi, sekarang hanya -vf . Kedua, saya mendapatkan kesalahan ini:
No such filter: 'rotate'
Error opening filters!
Sejauh yang saya tahu, saya memiliki FFmpeg versi all-options-on. Menjalankan ffmpeg -filters menunjukkan ini:
Filters:
anull Pass the source unchanged to the output.
aspect Set the frame aspect ratio.
crop Crop the input video to x:y:width:height.
fifo Buffer input images and send them when they are requested.
format Convert the input video to one of the specified pixel formats.
hflip Horizontally flip the input video.
noformat Force libavfilter not to use any of the specified pixel formats
for the input to the next filter.
null Pass the source unchanged to the output.
pad Pad input image to width:height[:x:y[:color]] (default x and y:
0, default color: black).
pixdesctest Test pixel format definitions.
pixelaspect Set the pixel aspect ratio.
scale Scale the input video to width:height size and/or convert the i
mage format.
slicify Pass the images of input video on to next video filter as multi
ple slices.
unsharp Sharpen or blur the input video.
vflip Flip the input video vertically.
buffer Buffer video frames, and make them accessible to the filterchai
n.
color Provide an uniformly colored input, syntax is: [color[:size[:ra
te]]]
nullsrc Null video source, never return images.
nullsink Do absolutely nothing with the input video.
Memiliki opsi untuk vflip dan hflip sangat bagus dan semuanya, tetapi mereka tidak akan membawa saya ke tempat yang harus saya tuju. Saya perlu kemampuan untuk memutar video setidaknya 90 derajat. 270 derajat akan menjadi pilihan yang sangat baik untuk dimiliki. Ke mana perginya opsi rotate?
sumber
-vf "vflip,hflip"
-vf "vflip,hflip"
bekerja seperti pesona.Jawaban:
Putar 90 searah jarum jam:
Untuk parameter transpose, Anda dapat meneruskan:
Gunakan
-vf "transpose=2,transpose=2"
untuk 180 derajat.Pastikan Anda menggunakan versi ffmpeg terbaru dari sini (build statis akan berfungsi dengan baik).
Perhatikan bahwa ini akan menyandikan ulang bagian audio dan video. Anda biasanya dapat menyalin audio tanpa menyentuhnya, dengan menggunakan
-c:a copy
. Untuk mengubah kualitas video, atur bitrate (misalnya dengan-b:v 1M
) atau lihat panduan pengkodean H.264 jika Anda menginginkan opsi VBR.Solusi juga menggunakan skrip kenyamanan ini .
sumber
-vcodec libx264
. Tetapi akan lebih bagus jika saya tidak perlu mencari encoding yang harus digunakan sebagai ffmpeg yang seharusnya sudah mengetahuinya. Ada saran?-vf "transpose=2,transpose=2"
cclock_flip
,clock
,cclock
atauclock_flip
bukan0
,1
,2
atau3
.Jika Anda tidak ingin menyandikan ulang video Anda DAN pemain Anda dapat menangani metadata rotasi, Anda bisa mengubah rotasi dalam metadata menggunakan ffmpeg:
sumber
ffmpeg -i input.m4v 2>&1 | grep rotate
ffmpeg -i input.m4v -map_metadata 0 -metadata:s:v rotate="90" -codec copy output.m4v
. Dengan cara ini semua metadata global pada file input akan disalin sebagai metadata global ke file output dan hanya meta-data rotasi yang diubah.rotate=0
.-metadata:s:v rotate="180"
, tidak berhasil. Apakah itu seharusnya berhasil?ffmpeg -i input.mp4 -codec copy -map_metadata 0 -metadata:s:v:0 rotate=0 output.mp4
Sudahkah Anda mencoba
transpose
? Suka (dari jawaban lain)Jika Anda menggunakan versi lama, Anda harus memperbarui ffmpeg jika Anda ingin menggunakan fitur transpos, seperti yang ditambahkan pada Oktober 2011.
Halaman unduhan FFmpeg menawarkan build statis yang dapat Anda jalankan secara langsung tanpa harus mengompilasinya.
sumber
Saya menemukan halaman ini sambil mencari jawaban yang sama. Sekarang enam bulan sejak ini awalnya diminta dan build telah diperbarui berkali-kali sejak itu. Namun, saya ingin menambahkan jawaban untuk orang lain yang datang ke sini mencari informasi ini.
Saya menggunakan versi Squian Debian dan FFmpeg dari repositori tersebut.
Halaman MAN untuk ffmpeg menyatakan penggunaan berikut ini
Kuncinya adalah bahwa Anda tidak menggunakan variabel derajat, tetapi variabel pengaturan yang telah ditentukan dari halaman MAN.
sumber
Untuk memutar gambar searah jarum jam, Anda dapat menggunakan filter putar, yang menunjukkan sudut positif dalam radian. Dengan menyamakan 90 derajat dengan PI / 2, Anda dapat melakukannya seperti ini:
untuk berlawanan arah jarum jam sudutnya harus negatif
Filter transpos akan bekerja sama baiknya untuk 90 derajat, tetapi untuk sudut lain ini adalah pilihan yang lebih cepat atau satu-satunya.
sumber
*
berperilaku sebagai multiplikasi:ffmpeg -i in.avi -vf "rotate=-8*PI/40" -q 1 out.avi
(sedikit lebih sedikit rotasi daripada -PI / 4 = -10 * PI / 40)tidak akan berfungsi, bahkan dengan sumber terbaru ...
harus mengubah urutan:
bekerja dengan baik
sumber
rotate=PI/2
ataurotate=90*PI/180
diperlukanJika Anda mendapatkan "Codec eksperimental tetapi codec eksperimental tidak diaktifkan" gunakan kesalahan ini:
Terjadi dengan saya untuk beberapa file .mov dengan audio aac.
sumber
-sameq
Option 'sameq' was removed. If you are looking for an option to preserve the quality (which is not what -sameq was for), use -qscale 0 or an equivalent quality factor option. Failed to set value '1' for option 'sameq': Invalid argument
-qscale juga memberikan kesalahan.Please use -q:a or -q:v, -qscale is ambiguous
, tetapi masih berfungsi.Skrip ini yang akan menampilkan file dengan struktur direktori di bawah "fixFiles". Saat ini diperbaiki ke file MOV dan akan melakukan sejumlah transformasi tergantung pada "rotasi" asli video. Bekerja dengan video yang diambil iOS di Mac yang menjalankan Maverick, tetapi harus mudah diekspor. Bergantung pada telah menginstal exiftool dan ffmpeg .
sumber
[Parsed_pad_2 @ 0x7f8b15c3a580] Input area -420:0:1500:1080 not within the padded area 0:0:1080:1080 or zero-sized
\ n `[Parsed_pad_2 @ 0x7f8b15c3a580] Failed to configure input pad on Parsed_pad_2
\ nError reinitializing filters!
\ nFailed to inject frame into filter network: Invalid argument
\ nError while processing the decoded data for stream #0:0
\ nConversion failed!
Jawaban Alexy hampir berhasil untuk saya kecuali bahwa saya mendapatkan kesalahan ini:
Saya hanya perlu menambahkan parameter (-r 65535/2733) ke perintah dan itu berhasil. Perintah lengkapnya adalah sebagai berikut:
sumber
24000/1001
akan lebih akurat.Solusi tambahan dengan pendekatan berbeda dari solusi yang disebutkan terakhir, adalah untuk memeriksa apakah driver kamera Anda mendukung kontrol kamera v4l2 (yang sangat umum).
Di terminal cukup ketik:
Jika driver kamera Anda mendukung kontrol kamera v4l2, Anda harus mendapatkan sesuatu seperti ini (daftar di bawah ini tergantung pada kontrol yang didukung oleh driver kamera Anda):
Dan jika Anda beruntung itu mendukung horizontal_flip dan vertical_flip .
Maka yang perlu Anda lakukan adalah mengatur horizontal_flip dengan:
atau vertical_flip dengan:
dan kemudian Anda dapat memanggil perangkat video Anda untuk mengambil video baru (lihat contoh di bawah), dan video akan diputar / dibalik.
Tentu saja jika Anda perlu memproses video yang sudah ada, maka metode ini bukanlah solusi yang Anda cari.
Keuntungan dari pendekatan ini adalah kita membalik gambar di level sensor, jadi sensor driver sudah memberi kita gambar terbalik, dan itu menyimpan aplikasi (seperti FFmpeg) pemrosesan lebih lanjut dan tidak perlu.
sumber
Sayangnya, ffmpeg versi Ubuntu mendukung videofilters.
Anda perlu menggunakan avidemux atau editor lain untuk mencapai efek yang sama.
Secara terprogram, mencoder telah direkomendasikan.
sumber
Smartphone: Memulihkan video dalam format vertikal
Ingin mengirimnya ke webside, 90 ° ke kiri (berlawanan arah jarum jam, format lanskap) hmm.
ffmpeg -i input.mp4 -vf "rotate=0" output.mp4
melakukannya. Saya mendapatkan format vertikal kembali
debian buster: ffmpeg --versi ffmpeg versi 4.1.4-1 ~ deb10u1 Hak cipta (c) 2000-2019 para pengembang FFmpeg
sumber