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

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

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

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 -

答案1

视频信息清晰地被传送过来,但它是正确帧大小的绿色“雪花”,带有实际图像在可怕的绿色雪花中舞动的痕迹。

这必须是像素格式。您正在应用将xyz2rgbDCP 色彩空间转换为 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 -

我已经使用了(在我看来不太歧义的)语法来表示诸如-filter:vInstead of -vf-b:vInstead of-vb-c:aInstead of 之类的选项-acodec

如果该格式不适合您,请尝试 AVI:

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

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

答案2

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 编解码器,因为虽然会降低质量,但它的速率较低,缓冲也少,因此在我的计算机上运行更流畅。(此外,出于某种原因,如果不先进行转码,我只能从 MXF 以 125mb/s 的惊人速度输入的 jpeg2000 mjpeg 序列中获得一个冻结帧,除非我从文件的最开始处开始“- ss 0”。)使用非常快的机器,不指定编解码器(删除“-c:v mpeg2video”),全尺寸(“-lores 0”),并从 0 开始(-ss 0),理论上您可以完全按原样查看 2K 影院质量 DCP。好吧,除了 XML 中包含的任何特殊说明 - 字幕或其他编程。但一般来说。 (顺便说一句,“-ac: 2”将 5.1 混音为 2.0 - 尽管您可能拥有支持试听 5.1 的硬件,在这种情况下请使用“-c:a copy”。)

感谢 Matthias美丽之夜, 和響克感谢耐心地指导我完成这项工作。谢谢!!!!这非常有用。事实上,它让我避免了周日晚上在 Aero 剧院看电影时可能出现的尴尬场面。我的图像序列编号顺序不对——用这个找到了并修复了!

哇,所有这些仅需一行命令行,谁知道呢 ;)

再见 - bworldpoop.com

答案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会使其与较短文件一样长。

相关内容