OoD*_*lly 12 video corrupt image
我试图从一个充满jpeg帧的目录制作一个视频(无论格式).
我尝试使用avconv(v0.8),如互联网上的许多主题所见,以及libav文档:
avconv -i samples/*.jpeg output.mpeg
Run Code Online (Sandbox Code Playgroud)
它似乎很好地工作并创建output.mpeg文件.
但是任何读者都无法读取该文件(vlc,banshee,totem,...).没有错误,但按下Play时没有任何反应.
如果我检查视频文件大小,它大约是20kB,而原始视频是10MB.所以我们可以假设数据没有存储到文件中(无论输入的帧数是多少,它都是大约20kB)
我制作了一个处理调试日志的pastebin.我不熟悉编解码器世界,所以我不了解很多东西:http://pastebin.com/9dfxFWZe.
我也尝试了很多与-s,-r,-b,-vcodec,-f格式等组合.但问题仍然存在.
我做错了吗?
问我任何可以帮助你的事情,我会很快回答.
谢谢您的帮助 :)
Sjl*_*ver 10
avconv希望您以类似printf的语法提供输入文件名.简单地使用shell通配符(例如samles/*.jpeg)是不够的.
您的示例似乎被命名为sample/lapinsnipermin/.jpeg,因此请尝试以下命令行:
avconv -f image2 -i samples/lapinsnipermin/%03d.jpeg output.mpeg
Run Code Online (Sandbox Code Playgroud)
这有用吗?您可能还想为比特率添加选项(例如-r 25).
谷歌搜索解决方案后,它就恢复了.我终于使用它了:
knoppix@Microknoppix:~$ avconv -r 1 -i /tmp/photo%d.jpg -r 24 -s 320x240 -vsync cfr /tmp/video.mpg
Run Code Online (Sandbox Code Playgroud)
我无法让avconv识别原始名称中的输入文件; 这说明了原因:
knoppix@Microknoppix:~$ strace avconv -i /media/sdb1/DCIM/188_0408/IMGP%04d.JPG /tmp/video.mpg 2>&1 | grep 188_0408
execve("/usr/bin/avconv", ["avconv", "-i", "/media/sdb1/DCIM/188_0408/IMGP%0"..., "/tmp/video.mpg"], [/* 36 vars */]) = 0
stat64("/media/sdb1/DCIM/188_0408/IMGP0000.JPG", 0xbf925b00) = -1 ENOENT (No such file or directory)
stat64("/media/sdb1/DCIM/188_0408/IMGP0001.JPG", 0xbf925b00) = -1 ENOENT (No such file or directory)
stat64("/media/sdb1/DCIM/188_0408/IMGP0002.JPG", 0xbf925b00) = -1 ENOENT (No such file or directory)
stat64("/media/sdb1/DCIM/188_0408/IMGP0003.JPG", 0xbf925b00) = -1 ENOENT (No such file or directory)
stat64("/media/sdb1/DCIM/188_0408/IMGP0004.JPG", 0xbf925b00) = -1 ENOENT (No such file or directory)
write(2, "/media/sdb1/DCIM/188_0408/IMGP%0"..., 66/media/sdb1/DCIM/188_0408/IMGP%04d.JPG: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我没有看到设置起始编号的选项,所以我这样做了:
i=0; for file in /media/sdb1/DCIM/188_0408/IMGP28*.JPG; do cp $file /tmp/photo$i.jpg; i=$((i+1)); done
Run Code Online (Sandbox Code Playgroud)
最终结果是我的照片视频,每秒显示一个; 将-vsync cfr告诉avconv到垫的输入帧以匹配输出的帧率.
我发现将jpg文件传输到你想要的更好,这样你就可以使用标准通配符来控制选择,尝试这样的事情.这也会输出您可以在网络和移动设备上使用的视频(即使用标准浏览器标签):
cat samples/*.jpeg | avconv -r 30 -f image2pipe -codec:v mjpeg -i - -pix_fmt yuvj420p -r 30 -c:v libx264 -vf scale=480:300 -y output.mp4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24368 次 |
| 最近记录: |