2010-11-14 143 views
0

尽管我不确定Stack Overflow是否是提出这个问题的最佳地点,但我可以想出它的最佳效果,看看我的谷歌技术如何让我失望......尽管这个问题没有解决并非特定于任何语言,我认为这里的人应该能够帮助我理解这些概念和理论。分离音频和视频流

因此,随着中说...

我已经看到了撕裂比如从YouTube视频音频不少服务。看到我很好奇用视频编程,我认为实现相同的目标是一种非常有益且简单的方法。

至于这个问题的技术细节,我迷路了。对于视频回放的工作原理我没有一个好主意,而我对如何通过编程分离这些东西毫无头绪。

感谢您的时间和耐心。

回答

0

这是一个相当广泛的问题,但我会试一试。基本上有两种方法:

  1. 模拟回放,并以某种方式捕获输出音频。
  2. 下载或窃听从服务器获取原始视频流并将其保存到磁盘。然后,知道容器格式的布局,提取只编码音频的比特流。

选项1可以实现,即使你不能反向工程的格式,但我不认为这是一个受欢迎的选择,因为它是缓慢的,需要再一次编码的音频,引起可能下降质量。所以选项2是首选。

我不知道Adobe FLV流(这是YouTube使用什么)的细节,除了FLV是一种将音频/视频信号合并到一个流中的容器格式。你将不得不学习如何解析它们(或者找一个能为你做的图书馆)。您还需要找到想要阅读的flv流的url。对于测试,您可以在回放视频后从您的临时互联网文件开始阅读。

+0

我不太了解这个概念。我认为,如果声卡是由声卡处理的,它应该以某种方式访问​​,这是....你认为你可以指向我的地方阅读这个?到目前为止,我甚至不知道我会搜索什么。 – Roger 2010-11-18 00:16:16

+0

你是否搜索了FLV格式的信息? – 2010-11-18 07:06:31

+0

http://en.wikipedia。org/wiki/Flash_Video – 2010-11-18 07:08:45

0

您可以通过以下方式的VLC应用做到这一点:

只是音频

VLC --daemon --ttl 7 --ipv4 “/home/user/song.mp3”:SOUT ='#transcode {acodec = mp3,ab-128}:std {access = mmsh,mux = asfh,dst =:3333}':no-sout-rtp-sap:no-sout-standard-sap:sout-keep

只是视频

VLC --daemon --ttl 7 --ipv4用v412:///开发/ video0的:用v412标= 0:输入从式= ALSA://:SOUT ='#转码{了vcodec = DIV3,VB = 2000,标度= 1,ACO dec = none}:std {access = mmsh,mux = asfh,dst =:3333}':no-sout-rtp-sap:no-sout-standard-sap:sout-keep

+0

如果你这样做,你会转换音频导致质量更差。 – 2010-11-17 19:04:24

0

你可以去看看在TAE,http://github.com/tuna74/TunaAudioExtracter。请记住,TAE只会转储音频流,并且只在必要时进行转码。

+0

好的,谢谢......但我一直在寻找更多的理论背后。虽然我一定会看到所有这些源代码,但我猜测我无法完全理解所有这些内容。但再次感谢,这绝对有帮助。 – Roger 2010-11-18 00:18:32