ffplay - cara bermain bersama file video dan audio yang terpisah

9

Jadi saya dapat transcode file video dan audio yang terpisah menjadi satu file film, seperti:

ffmpeg -ss 0 -lowres 0 -r 24 -i dcp/picture.mxf -vf "xyz2rgb" -i mov/sound.wav -ac 2 -ab 256k -vb 3000k -t 10 -y mov/movie.mp4

Dan lihat dan dengar film yang dihasilkan seperti ini:

ffplay -ss 0 -lowres 1 -vf "xyz2rgb" mov/movie.mp4

Namun, untuk menghindari transcode film dan suara bersama menjadi satu file sebelum dapat melihatnya, saya hanya ingin memutar dua file terpisah. Sejauh yang saya tahu, ffplay tidak membiarkan Anda menggabungkan dua file berbeda (kan?).

Membaca forum-forum ini tampaknya Anda dapat menyalurkan output ffmpeg ke ffplay . Berikut ini sedekat yang saya dapatkan. Tidak sedekat itu. :( Informasi video jelas sedang terbawa, tetapi berwarna hijau "salju" dalam ukuran bingkai yang tepat, dengan isyarat dari citra aktual menari di dalam salju hijau yang mengerikan. Dengan cara ini saya tahu bahwa sesuatu dari data gambar aktual sedang terbawa. , hanya tidak menyajikan dengan benar.

Dan tidak ada pemutaran audio. Suara itu tidak terbawa (kurasa.) Sekarang ... Aku macet. Berikut ini menunjukkan apa yang saya coba lakukan, tetapi tidak berfungsi:

ffmpeg -ss 0 -lowres 0 -r 24 -i dcp/picture.mxf -vf "xyz2rgb" -i mov/sound.wav -f rawvideo - | ffplay -f rawvideo -vf "xyz2rgb" -s 1998x1080 -
Bill Rudolph Yaber Russell
sumber

Jawaban:

4

Informasi video jelas sedang dibawa, tetapi itu adalah "salju" berwarna hijau dalam ukuran bingkai yang tepat, dengan petunjuk dari citra aktual menari di dalam salju hijau yang mengerikan.

Ini harus berupa format piksel. Anda menerapkan xyz2rgbfilter yang mengubah ruang warna DCP ke RGB, dan kemudian Anda mem-pipkan video mentah ffplay. Di sini, Anda menerapkan xyz2rgbfilter lagi , yang mungkin menyebabkan distorsi, karena FFmpeg tidak tahu bagaimana video mentah dikodekan. Ini akan melakukan apa pun yang Anda inginkan dengan video, bahkan mengubah ruang warna dua kali.


Aku sudah hasil yang baik pipa format Matroska untuk ffplaybukan rawvideo, yang juga memberikan Anda kemampuan audio decode (lihat di bawah). Format Matroska dapat berisi segala jenis codec.

Perhatikan bahwa urutan opsi penting di FFmpeg, dan Anda mungkin harus menggunakan versi yang lebih baru karena lebih ketat tentang tempat Anda meletakkan opsi:

  • Opsi global seperti yang -ydiutamakan.
  • Kemudian, tentukan opsi untuk membaca file input - -r 24memaksa frame rate untuk picture.mxffile tersebut.
  • Kemudian tentukan semua file input.
  • Kemudian datang opsi codec seperti filter video, bitrate video, dll.

Dalam situasi Anda, masuk akal untuk hanya menyalin aliran audio, karena kami tidak benar-benar perlu transkode. Video harus ditranskode agar dapat menerapkan filter.

Sesuatu seperti ini harus dilakukan. Perhatikan bagaimana kami secara eksplisit mengatur format output sebagai matroskadan biarkan ffplaysisanya tahu sendiri:

ffmpeg -r 24 -i dcp/picture.mxf -i mov/sound.wav \
-filter:v "xyz2rgb" -b:v 3000k -c:a copy -t 10 -f matroska - | \
ffplay -

Saya telah menggunakan sintaks (IMO less ambiguous) untuk opsi seperti -filter:vbukannya -vf, -b:vbukannya -vb, dan -c:abukannya -acodec.

Jika format itu tidak berhasil untuk Anda, coba AVI:

ffmpeg -i picture.mxf -i sound.wav -f avi - | ffplay -

Ini berhasil bagi saya tanpa masalah , dan bahkan tidak mengharuskan saya untuk menggunakan filter yang Anda butuhkan. Audio juga berfungsi.

slhck
sumber
slhck, terima kasih untuk ini! Oke, saya dapat ini: <br/> <br/> Tidak dapat menemukan format output yang cocok untuk '-filter: v' -filter: v: Argumen tidak valid <br> <br> ?? (sama untuk -vf). Codec & filter berasal dari sini: goo.gl/avE1f - penulis menulisnya dan merancang instalasi kustom ffmpeg (hanya satu versi yang bekerja dengan prosedur ini dan file-file-nya) yang mencakup codec eksklusif dan filter ruang warna, dan dengan demikian dapat memecahkan kode itu. Instalasi custom ffmeg harus dapat membaca urutan gambar JPEG2000 MJPEG milik yang terkandung di dalam gambar MFX. Jika itu membantu untuk dicatat :)
Bill Rudolph Yaber Russell
Ups, saya bodoh, saya lupa menghapus jeda "\" pada baris perintah. Bagaimanapun, sekarang ketika saya memasukkan saran Anda, angka-angka menunjukkan streaming tetapi tidak ada jendela terbuka, kemudian sekitar 20 detik kemudian berhenti dengan: <br /> <br /> Kesalahan segmentasi: ukuran 1136.0 = 138 kB waktu = 00: 00: 00.08 bitrate = 13445.2kbits / s
Bill Rudolph Yaber Russell
GAMBAR ADALAH LAYAK DENGAN RIBUAN KATA - di sini, video ambil layar yang berguna ini menunjukkan apa yang berfungsi dan apa yang tidak: dl.dropbox.com/u/11290938/screen_grab_ffdcp_750.mov
Bill Rudolph Yaber Russell
Terima kasih banyak untuk videonya. Pertama-tama, perintah rawvideo pertama Anda memiliki masalah bahwa Anda menentukan ukuran yang salah. Input Anda memiliki 500x270 — atau setidaknya itulah yang disalurkan ffplay. Juga, output memiliki rgb48lesebagai format pixel (karena filter), tetapi ffplaymengasumsikan yuv420p, sehingga Anda juga perlu menentukan bahwa: ffplay -f rawvideo -s 500x270 -pix_fmt rgb48le -. Adapun segfault: Tidak tahu ... mungkin Anda bisa membuat dan mengunggah file uji kecil di suatu tempat?
slhck
Ooo goodie, uji file! Memang terima kasih. Alasan untuk 500x270 adalah saya menentukan "lores 2" yang memotongnya dalam ukuran dua kali (agar muat dalam ambil layar rapi untuk Anda :) Jadi sepertinya saya ketinggalan satu. Sebagai latar belakang, file ini adalah DCP buatan sendiri (pikirkan "cetak film digital" untuk bioskop, yang mengapa media ini sangat aneh), 2K pada 1998x1080 (aspek 1,85 piksel persegi). Ketika mengekstrak urutan gambar itu benar, dan saya dan mengirimkan paket kemarin dan mereka memainkannya pada DLP di bioskop di mana itu akan ditampilkan (untuk satu malam di festival) - & itu benar (Fiuh!).
Bill Rudolph Yaber Russell
3

Ini tidak akan men-transcode stream:

ffmpeg -i video.mkv -i audio.mkv -c copy -map 0:0 -map 1:1 output.mkv

-map 1:1= file kedua, streaming 1 (biasanya audio). -c copy= -c:v copy -c:a copy. Secara default file muxed adalah sepanjang file lebih lama, tetapi -shortestakan membuatnya selama file lebih pendek.

Lri
sumber
Terima kasih untuk intel ini. Saya tidak perlu file output, tetapi switch ini benar-benar baik untuk diketahui.
Bill Rudolph Yaber Russell
3
ffmpeg -lowres 2 -ss 0 -r24 -i MOVIE.MOV -ss 0 -i AUDIO.WAV -vf xyz2rgb -ac: 2 -c:v mpeg2video -f avi - | ffplay -

Untuk tujuan saya, ini memungkinkan peninjauan cepat konten DCP (Paket Sinema Digital) yang dapat Anda buat dengan alat sumber terbuka . DCP menggunakan ruang warna xyz, jadi Anda perlu memasang filter video xyz , jika tidak, Anda tidak dapat menggunakannya di baris di atas. (Tidak apa-apa, itu hanya akan terlihat sangat oranye, Anda tidak akan bisa melihat warna yang sebenarnya.)

Saya menambahkan mpeg2video codec b / c, meskipun mengurangi kualitas, ini tingkat rendah dan buffer sedikit, sehingga kinerjanya lebih lancar di mesin saya. (Juga, untuk beberapa alasan, tanpa transcoding terlebih dahulu saya hanya mendapatkan frame beku dari jpeg2000 mjpeg sequence feeding pada 125mb / s perkasa dari MXF, kecuali saya mulai "- ss 0", yaitu pada awal mula file.) Dengan mesin SANGAT CEPAT, menentukan tanpa codec (hapus "-c: v mpeg2video"), ukuran penuh ("-lores 0"), dan mulai dari 0 (-ss 0), Anda secara teoritis dapat meninjau bioskop 2K kualitas DCP persis seperti apa adanya. Nah, kecuali untuk instruksi khusus yang termasuk dalam XML - terjemahan atau pemrograman lainnya. Namun umumnya. (BTW "-ac: 2" downmixes 5.1 to 2.0 - meskipun Anda mungkin memiliki perangkat keras yang mendukung audisi 5.1, dalam hal ini gunakan "-c: a copy".)

Terima kasih kepada Matthias di Belle-Nuit , dan singgah di atas untuk UNTUK PASIEN mengantar saya melewati ini. Terima kasih!!!! Ini cukup berguna. Dan faktanya, menyelamatkan saya dari pemutaran film yang berpotensi memalukan di Aero theatre, Minggu malam. Penomoran urutan gambar saya di luar urutan - menemukannya dengan ini dan diperbaiki!

Wow, semua ini hanya untuk satu baris perintah, siapa tahu;)

Cheereo - b worldpoop.com

Bill Rudolph Yaber Russell
sumber
Saya mendapat kesalahan ini: Tidak ada filter seperti itu: 'xyz2rgb'
Dr.jacky