ffplay-如何一起播放单独的视频和音频文件


9

因此,我能够将单独的视频和音频文件转码为一个电影文件,如下所示:

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

并以这种方式查看和听到生成的电影:

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

但是,为了避免必须先将电影和声音转码为一个文件才能观看,我想简单地将两个文件一起播放。据我所知,ffplay不允许您组合两个不同的文件(对吗?)。

阅读这些论坛,似乎可以将ffmpeg输出传递给ffplay。以下是我所得到的。还不算很近。:(视频信息显然正在传递,但是在正确的帧大小中是绿色的“雪”,带有在可怕的绿色雪中舞动的实际图像的提示。这样,我知道实际的图像数据正在传递,只是渲染不正确。

而且没有音频播放。声音没有传递(我不认为。)现在...我被卡住了。以下内容表明了我正在尝试做的事情,但是没有用:

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 -

Answers:


4

视频信息显然正在传递,但是在正确的帧大小中是绿色的“雪”,带有在可怕的绿色雪中跳舞的实际图像的暗示。

这必须是像素格式。您要应用xyz2rgb将DCP颜色空间转换为RGB 的滤镜,然后将原始视频传输到ffplay。在这里,您将再次应用xyz2rgb滤镜,这可能会导致失真,因为FFmpeg不知道原始视频是如何编码的。它将对视频执行任何您想要的操作,甚至将色彩空间转换两次。


使用Matroska格式ffplay代替,取得了不错的效果rawvideo,这也使您能够解码音频(请参见下文)。Matroska格式可以包含任何类型的编解码器。

请注意,选项的顺序在FFmpeg中很重要,您可能应该使用较新的版本,因为它对放置选项的位置更加严格:

  • 诸如此类的全局选项排-y在第一位。
  • 然后,指定用于读取输入文件的选项– -r 24强制文件的帧速率picture.mxf
  • 然后指定所有输入文件。
  • 然后是编解码器选项,例如视频过滤器,视频比特率等。

在您的情况下,仅复制音频流是有意义的,因为我们实际上不需要对其进行代码转换。视频必须进行转码才能使用过滤器。

这样的事情应该做。注意我们如何将输出格式显式设置为,matroska然后ffplay自己找出其余的格式:

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 -

我已经用了选项,如(IMO那么模糊)语法-filter:v代替-vf-b:v而不是-vb和,-c:a而不是-acodec

如果该格式对您不起作用,请尝试AVI:

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

对我没有问题,甚至不需要我使用所需的过滤器。音频也正常工作。


slhck,谢谢你!OK,我明白了:<br/> <br/>无法为'-filter:v'找到合适的输出格式-filter:v:无效的参数<br> <br>?(与-vf相同)。编解码器和滤镜位于此处:goo.gl/avE1f-作者编写并设计了ffmpeg的自定义安装(仅一个适用于此过程及其文件的版本),其中包括专有编解码器和色彩空间滤镜,因此可以解码。自定义ffmeg安装程序必须能够读取图片MFX内部包含的专有JPEG2000 MJPEG图像序列。如果有帮助,请注意:)
比尔·鲁道夫·亚伯·罗素

糟糕,我是个假人,我忘了删除命令行上的换行符“ \”。无论如何,现在当我输入您的建议时,数字显示流式传输,但没有打开任何窗口,然后大约20秒后,它停止:<br /> <br />分段错误:1136.0大小= 138kB时间= 00:00:00.08比特率= 13445.2kbits / s
Bill Rudolph Yaber Russell

图片是千言万语-在这里,这个方便的屏幕抓取视频显示了有效的方法和无效的方法: dl.dropbox.com/u/11290938/screen_grab_ffdcp_750.mov
Bill Rudolph Yaber Russell

非常感谢您的视频。首先,您的第一个rawvideo命令存在指定大小错误的问题。您输入的内容为500x270,或者至少是通过管道输入的内容ffplay。此外,您的输出具有rgb48le像素格式(由于过滤器),但是ffplay采用yuv420p,因此您还需要指定:ffplay -f rawvideo -s 500x270 -pix_fmt rgb48le -。至于段错误:不知道……也许您可以在某个地方创建并上传一个小的测试文件?
slhck

哦,天哪,测试文件!的确,谢谢。500x270的原因是我指定了“ lores 2”,将其尺寸缩小了两倍(以适合您的整齐屏幕抓取:)似乎我错过了一个。作为背景,此文件是2K分辨率为1998x1080(1.85平方像素长宽比)的自制DCP(电影院的“数字电影打印”,这是媒体如此奇怪的原因)。提取图像序列时,它是正确的,我昨天提交了该文件包,然后他们在电影院的DLP上播放了该文件包,将在该DLP文件中放映该文件包(在节日中度过一晚)-没错(phe!)。
比尔·鲁道夫·亚伯·罗素

3

这不会对流进行转码:

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

-map 1:1=第二个文件,流1(通常是音频)。-c copy= -c:v copy -c:a copy。默认情况下,多路复用文件的长度与长文件的长度相同,但-shortest与短文件的长度一样。


谢谢您的帮助。我不需要输出文件,但是这些开关确实非常有用。
比尔·鲁道夫·亚伯·罗素

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 -

出于我的目的,这使您可以快速查看使用开源工具构建的DCP(数字电影包)的内容。DCP使用xyz色彩空间,因此您需要安装xyz视频滤镜,否则您不能在上面的行中使用它。(没关系,它看起来只有橙色,不会看到真实的颜色。)

我添加了mpeg2video编解码器b / c,尽管降低了质量,但速率较低且缓冲很少,因此在我的计算机上运行更流畅。(此外,由于某种原因,如果不先进行转码,我只会从jpeg2000 mjpeg序列中得到一个冻结帧,该帧以MXF强大的125mb / s的速率进行馈送,除非我以“-ss 0”开头,即使用非常快速的计算机,不指定编解码器(删除“ -c:v mpeg2video”),全尺寸(“ -lores 0”)并从0开始(-ss 0),理论上您可以查看2K电影院完全按原样质量DCP。好吧,除了XML字幕或其他程序中包含的任何特殊说明之外。但是一般。(顺便说一句,“-ac:2”将5.1降混为2.0-尽管您可能具有支持试听5.1的硬件,在这种情况下,请使用“ -c:a copy”。)

感谢Belle-Nuit的 Matthias ,并感谢 slhck耐心地引导我完成此过程。谢谢!!!!这是非常有用的。实际上,这使我免于周日晚上在Aero剧院进行的可能令人尴尬的电影放映。我的图像序列编号不正确-与此找到并修复了!

哇,这一切只不过是一个知道的命令行而已;)

Cheereo-b worldpoop.com


我得到这个错误:没有这样的过滤器:“xyz2rgb”
Dr.jacky
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.