Video yang dikodekan ffmpeg “dicari” di VLC

3

Saya menjalankan perintah berikut untuk mengonversi video mp4 ke format VP8 / Webm:

ffmpeg -y -i lists.mp4 -f webm -vcodec libvpx -vb 600k -r 20 -acodec libvorbis -ab 64k -ac 1 lists.webm

Ketika saya membukanya di VLC dan mencoba mencari titik yang berbeda dalam video, pencariannya adalah "quantised". Maksud saya ada 3 atau 4 poin dalam video bahwa pencari "terkunci", misalnya jika saya mengklik sesuatu dari 06:30 to 10:30itu akan berusaha untuk06:30

Saya yakin masalahnya adalah sesuatu yang berkaitan dengan cara ffmpeg dikompilasi. Miro Video Converter di bawah Windows, yang dilengkapi dengan ffmpeg, menggunakan perintah:

ffmpeg -y -i lists.mp4 -f webm -vcodec libvpx -acodec libvorbis -crf lists.webm

Output dari Miro tidak dihitung dalam VLC, tetapi perintah yang sama pada instalasi linux saya tidak. Oleh karena itu harus ada sesuatu dengan versi ffmpeg atau cara kompilasi.

Adakah yang tahu tentang ini? Output debug berikut


Info debug untuk linux ffmpeg:

ffmpeg version N-35110-g0b9a69f, Copyright (c) 2000-2011 the FFmpeg developers
  built on Nov 23 2011 12:51:56 with gcc 4.6.2


configuration: --prefix=/usr --enable-libmp3lame --enable-libvorbis --enable-libxvid --enable-libx264 --enable-libvpx
--enable-libtheora --enable-libgsm --enable-libspeex --enable-postproc --enable-shared --enable-x11grab
--enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libschroedinger --enable-libopenjpeg --enable-librtmp
--enable-gpl --enable-version3 --enable-runtime-cpudetect --disable-debug --disable-static

  libavutil    51. 26. 0 / 51. 26. 0
  libavcodec   53. 37. 0 / 53. 37. 0
  libavformat  53. 21. 0 / 53. 21. 0
  libavdevice  53.  4. 0 / 53.  4. 0
  libavfilter   2. 49. 0 /  2. 49. 0
  libswscale    2.  1. 0 /  2.  1. 0    
  libpostproc  51.  2. 0 / 51.  2. 0

Untuk Windows (konverter video Miro):

    FFmpeg version SVN-r25762, Copyright (c) 2000-2010 the FFmpeg developers
      built on Nov 18 2010 04:07:17 with gcc 4.4.2
      configuration: --enable-gpl --enable-version3 --enable-libgsm
--enable-pthreads --enable-libvorbis --enable-libtheora --enable-libspeex 
--enable-libmp3lame --enable-libopenjpeg --enable-libschroedinger
--enable-libopencore_amrwb --enable-libopencore_amrnb --enable-libvpx
--disable-decoder=libvpx --arch=x86 --enable-runtime-cpudetect --enable-libxvid
--enable-libx264 --extra-libs='-lx264 -lpthread' --enable-librtmp
--extra-libs='-lrtmp -lpolarssl -lws2_32 -lwinmm' --target-os=mingw32
--enable-avisynth --cross-prefix=i686-mingw32- --cc='ccache i686-mingw32-gcc'
--enable-memalign-hack
      libavutil     50.33. 0 / 50.33. 0
      libavcore      0.13. 0 /  0.13. 0
      libavcodec    52.96. 0 / 52.96. 0
      libavformat   52.84. 0 / 52.84. 0
      libavdevice   52. 2. 2 / 52. 2. 2
      libavfilter    1.62. 0 /  1.62. 0
      libswscale     0.12. 0 /  0.12. 0
tunggu untukrainrain
sumber
1
Menarik. Saya agak terbiasa dengan FFmpeg, tetapi bisa jadi Anda telah menemukan bug. Anda mungkin ingin mempertimbangkan untuk melaporkannya .
slhck

Jawaban:

5

Saya tidak tahu apa-apa tentang penyandian VP8 pada khususnya, tetapi secara umum ffmpegmengacu pada bingkai kunci dalam hal ukuran "kelompok gambar".

Lulus -gopsi dengan angka untuk digunakan sebagai ukuran maksimum dari kelompok gambar dalam bingkai; ini akan menjadi jumlah frame maksimum antara frame kunci (termasuk frame kunci).

Mungkin saja versi ffmpeg / codec yang berbeda memiliki standar yang berbeda untuknya; namun Anda mungkin dapat menimpanya menjadi apa pun yang Anda inginkan.

Latar Belakang:

Format video terkompresi sering tidak menyimpan data lengkap untuk setiap frame video, alih-alih menyimpan sebagian besar frame sebagai deskripsi tentang cara membuat frame dari potongan-potongan frame sebelumnya (dan dalam sistem yang lebih modern, potongan-potongan frame yang dekat di masa depan). Agar dapat dengan cepat mencari dan mulai bermain, perangkat lunak pemutar video sering kali hanya memungkinkan Anda melompat ke frame yang memiliki data lengkap yang disimpan, yang disebut "frame kunci" atau frame-I.

Anda biasanya dapat memberi tahu pembuat enkoder seberapa sering Anda ingin meletakkannya di bingkai kunci. Frame kunci yang lebih banyak memungkinkan lebih banyak fleksibilitas untuk mencari dan mengedit, tetapi membuat kompresi video kurang efisien.

rakslice
sumber
Anda secara umum benar, tetapi saya tidak berpikir itu masalah keyframe. OP mengatakan, > jika saya mengklik sesuatu dari 06:30 sampai 10:30 ia akan mencari ke 06:30 . Seharusnya ada lebih dari satu keyframe dalam empat menit video.
slhck
1
Yang memperbaikinya, pasti ada sesuatu dengan default pada versi ffmpeg yang lebih baru. Pujian.
waitinforatrain