
Recherche avancée
Médias (91)
-
Spitfire Parade - Crisis
15 mai 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Wired NextMusic
14 mai 2011, par
Mis à jour : Février 2012
Langue : English
Type : Video
-
Video d’abeille en portrait
14 mai 2011, par
Mis à jour : Février 2012
Langue : français
Type : Video
-
Sintel MP4 Surround 5.1 Full
13 mai 2011, par
Mis à jour : Février 2012
Langue : English
Type : Video
-
Carte de Schillerkiez
13 mai 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Texte
-
Publier une image simplement
13 avril 2011, par ,
Mis à jour : Février 2012
Langue : français
Type : Video
Autres articles (67)
-
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir -
Emballe médias : à quoi cela sert ?
4 février 2011, parCe plugin vise à gérer des sites de mise en ligne de documents de tous types.
Il crée des "médias", à savoir : un "média" est un article au sens SPIP créé automatiquement lors du téléversement d’un document qu’il soit audio, vidéo, image ou textuel ; un seul document ne peut être lié à un article dit "média" ; -
Creating farms of unique websites
13 avril 2011, parMediaSPIP platforms can be installed as a farm, with a single "core" hosted on a dedicated server and used by multiple websites.
This allows (among other things) : implementation costs to be shared between several different projects / individuals rapid deployment of multiple unique sites creation of groups of like-minded sites, making it possible to browse media in a more controlled and selective environment than the major "open" (...)
Sur d’autres sites (8502)
-
Exit Status with ffmpeg Command in Rails
25 novembre 2012, par DragonFire353I am trying to get uploaded videos to be converted in the background, running windows. I am using :
gem 'paperclip'
gem 'aasm'
gem 'delayed_job_active_record'
gem 'ffmpeg'I was using purely paperclip before and making the user wait and it worked great, now I am having problems with the return of the error status for the command, I have tried editing to possible fix the command wondering if it was failing in the first place but I keep getting :
undefined method `exitstatus' for nil:NilClass
no matter what. I've tried looking this up and it's supposedly valid syntax that should work... Also I've commented out the actual spawn do part because I get another error if I leave that in :
wrong number of arguments
Does anyone know how to properly get this working ? I've went through a few tutorials that have bits and pieces of what I need but I can't get them working together. Here's what I have so far, lemme know if you need more :
Model :
class Video < ActiveRecord::Base
include AASM
belongs_to :user
has_many :comments, dependent: :destroy
attr_accessible :video, :user_id, :video_file_name, :title, :public, :description, :views
has_attached_file :video, url: "/users/:user_id/videos/:id/:basename_:style.:extension"
#, :styles => {
# :video => { geometry: "800x480>", format: 'webm' },
# :thumb => { geometry: "200x200>", format: 'png', time: 3 },
# }, processors: [:ffmpeg], url: "/users/:user_id/videos/:id/:basename_:style.:extension"
#process_in_background :video #causes death
validates :video, presence: true
validates :description, presence: true, length: { minimum: 5, maximum: 100}
validates :title, presence: true, length: { minimum: 1, maximum: 15 }
validates_attachment_size :video, less_than: 1.gigabytes
validates_attachment :video, presence: true
default_scope order: 'created_at DESC'
Paperclip.interpolates :user_id do |attachment, style|attachment.instance.user_id
end
#acts as state machine plugin
aasm state: :pending do
state :pending, initial: true
state :converting
state :converted
#, enter: :set_new_filename
state :error
event :convert do
transitions from: :pending, to: :converting
end
event :converted do
transitions from: :converting, to: :converted
end
event :failure do
transitions from: :converting, to: :error
end
end
# This method is called from the controller and takes care of the converting
def convert
self.convert!
#spawn a new thread to handle conversion
#spawn do
success = delay.system(convert_command)
logger.debug 'Converting File: ' + success.to_s
if success && $?.exitstatus.to_i == 0
self.converted!
else
self.failure!
end
#end
end
def self.search(search)
if search
find(:all, conditions: ["public = 't' AND title LIKE ?", "%#{search}%"], order: "created_at DESC")
else
find(:all, conditions: ["public = 't'"], order: "created_at DESC")
end
end
def self.admin_search(search)
if search
find(:all, conditions: ['title LIKE ?', "%#{search}%"], order: "created_at DESC")
else
find(:all, order: "created_at DESC")
end
end
private
def convert_command
#construct new file extension
webm = "." + id.to_s + ".webm"
#build the command to execute ffmpeg
command = <<-end_command
ffmpeg -i #{ RAILS_ROOT + '/public/users/:user_id/videos/:id/:basename_:style.:extension' } -ar 22050 -ab 32 -s 1280x720 -vcodec webm -r 25 -qscale 8 -f webm -y #{ RAILS_ROOT + '/public/users/:user_id/videos/:id/:basename_.webm' }
end_command
logger.debug "Converting video...command: " + command
command
end
handle_asynchronously :convert_command
# This updates the stored filename with the new flash video file
def set_new_filename
#update_attribute(:filename, "#{filename}.#{id}.webm")
update_attribute(:content_type, "video/x-webm")
end
endController :
class VideosController < ApplicationController
before_filter :signed_in_user, only: [:upload, :update, :destroy]
before_filter :admin_user, only: :admin_index
def upload
@video = Video.new
# generate a unique id for the upload
@uuid = (0..29).to_a.map {|x| rand(10)}
end
def create
@video = Video.new(params[:video])
@video.user_id = current_user.id
if @video.save
@video.convert
flash[:success] = "Uploaded Succefully!"
redirect_to @video.user
else
render 'upload'
end
end
def show
@video = Video.find(params[:id])
@comments = @video.comments.paginate(page: params[:page], per_page: 6)
if !@video.public
if !signed_in? || current_user.id != @video.user_id && !current_user.admin && !current_user.approved?(@video.user)
flash[:notice] = "Video is private"
redirect_to root_path
end
end
end
def update
@video = Video.find(params[:id])
if @video.update_attributes(params[:video])
flash[:success] = "Video preferences saved"
else
flash[:fail] = "Failed to update video preferences"
end
redirect_to :back
end
def destroy
@video = Video.find(params[:id])
@video.destroy
flash[:deleted] = "Deleted Succefully!"
redirect_to :back
end
def index
@videos = Video.paginate(page: params[:page], per_page: 6).search(params[:search])
end
def admin_index
@videos = Video.paginate(page: params[:page], per_page: 6).admin_search(params[:search])
end
def ajax_video_comments
@video = Video.find(params[:id])
@comments = @video.comments.paginate(page: params[:page], per_page: 6)
respond_to do |format|
format.js { render partial: 'shared/comments', content_type: 'text/html' }
end
end
def ajax_video_watched
@video = Video.find(params[:id])
@video.views += 1
@video.save
end
private
def signed_in_user
redirect_to root_path, notice: "Please Login." unless signed_in?
end
def admin_user
redirect_to(root_path) unless current_user.admin?
end
end -
ffmpeg error when using non root user
29 août 2014, par mkernI have installed ffmpeg and it works perfect if you are root or using sudo but it errors out when trying to use it as a non-root user. I have performed the same install on a test VPS and it installs without issue so it appears to be isolated to this cPanel server. I haven’t been able to identify why.
Non-Root :
> ffmpeg -v debug -i 1.mov 1.avi ffmpeg version N-65949-g0ddb051
> Copyright (c) 2000-2014 the FFmpeg developers built on Aug 28 2014
> 11:39:47 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-4)
> configuration: --enable-gpl --enable-libmp3lame --enable-libvorbis
> --enable-libvpx --enable-libx264 libavutil 54. 7.100 / 54. 7.100 libavcodec 56. 0.101 / 56. 0.101 libavformat 56. 3.100 / 56. 3.100 libavdevice 56. 0.100 / 56. 0.100 libavfilter 5. 0.103 / 5. 0.103 libswscale 3. 0.100 /
> 3. 0.100 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 0.100 / 53. 0.100 Splitting the commandline. Reading option '-v' ... matched as option 'v' (set logging level) with argument 'debug'.
> Reading option '-i' ... matched as input file with argument '1.mov'.
> Reading option '1.avi' ... matched as output file. Finished splitting
> the commandline. Parsing a group of options: global . Applying option
> v (set logging level) with argument debug. Successfully parsed a group
> of options. Parsing a group of options: input file 1.mov. Successfully
> parsed a group of options. Opening an input file: 1.mov.
> [mov,mp4,m4a,3gp,3g2,mj2 @ 0x348fc20] Format mov,mp4,m4a,3gp,3g2,mj2
> probed with size=2048 and score=100 [mov,mp4,m4a,3gp,3g2,mj2 @
> 0x348fc20] ISO: File Type Major Brand: qt [mov,mp4,m4a,3gp,3g2,mj2 @
> 0x348fc20] Before avformat_find_stream_info() pos: 698348 bytes
> read:39602 seeks:1 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x348fc20] All info
> found [mov,mp4,m4a,3gp,3g2,mj2 @ 0x348fc20] After
> avformat_find_stream_info() pos: 169190 bytes read:2333362 seeks:67
> frames:148 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mov':
> Metadata:
> major_brand : qt
> minor_version : 0
> compatible_brands: qt
> creation_time : 2014-06-05 04:40:27
> model : iPhone 5
> model-eng : iPhone 5
> encoder : 7.1.1
> encoder-eng : 7.1.1
> date : 2014-06-04T21:40:27-0700
> date-eng : 2014-06-04T21:40:27-0700
> make : Apple
> make-eng : Apple Duration: 00:00:07.15, start: 0.000023, bitrate: 781 kb/s
> Stream #0:0(und), 41, 1/600: Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv, smpte170m), 480x360, 1/1200, 710 kb/s, 29.09
> fps, 600 tbr, 600 tbn, 1200 tbc (default)
> Metadata:
> rotate : 90
> creation_time : 2014-06-05 04:40:27
> handler_name : Core Media Data Handler
> encoder : H.264
> Side data:
> displaymatrix: rotation of -90.00 degrees
> Stream #0:1(und), 107, 1/44100: Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 63 kb/s (default)
> Metadata:
> creation_time : 2014-06-05 04:40:27
> handler_name : Core Media Data Handler Successfully opened the file. Parsing a group of options: output file 1.avi. Successfully
> parsed a group of options. Opening an output file: 1.avi. Successfully
> opened the file. detected 24 logical cores [graph 0 input from stream
> 0:0 @ 0x34aa3a0] Setting 'video_size' to value '480x360' [graph 0
> input from stream 0:0 @ 0x34aa3a0] Setting 'pix_fmt' to value '0'
> [graph 0 input from stream 0:0 @ 0x34aa3a0] Setting 'time_base' to
> value '1/600' [graph 0 input from stream 0:0 @ 0x34aa3a0] Setting
> 'pixel_aspect' to value '0/1' [graph 0 input from stream 0:0 @
> 0x34aa3a0] Setting 'sws_param' to value 'flags=2' [graph 0 input from
> stream 0:0 @ 0x34aa3a0] Setting 'frame_rate' to value '320/11' [graph
> 0 input from stream 0:0 @ 0x34aa3a0] w:480 h:360 pixfmt:yuv420p
> tb:1/600 fr:320/11 sar:0/1 sws_param:flags=2 [format @ 0x3496b00]
> compat: called with args=[yuv420p] [format @ 0x3496b00] Setting
> 'pix_fmts' to value 'yuv420p' [AVFilterGraph @ 0x348f320]
> query_formats: 4 queried, 3 merged, 0 already done, 0 delayed
> [AVFilterGraph @ 0x34bbe60] Error initializing threading.
> [AVFilterGraph @ 0x34bbe60] Error creating filter 'anull' Error
> opening filters! [AVIOContext @ 0x34967c0] Statistics: 0 seeks, 0
> writeouts [AVIOContext @ 0x348f1e0] Statistics: 2333362 bytes read, 67
> seeks[AVFilterGraph @ 0x34bbe60] Error initializing threading.
[AVFilterGraph @ 0x34bbe60] Error creating filter ’anull’ Error
opening filters !As ROOT :
ffmpeg -v verbose -i 1.mov 1.avi
ffmpeg version N-65949-g0ddb051 Copyright (c) 2000-2014 the FFmpeg developers
built on Aug 28 2014 11:39:47 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-4)
configuration: --enable-gpl --enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libx264
libavutil 54. 7.100 / 54. 7.100
libavcodec 56. 0.101 / 56. 0.101
libavformat 56. 3.100 / 56. 3.100
libavdevice 56. 0.100 / 56. 0.100
libavfilter 5. 0.103 / 5. 0.103
libswscale 3. 0.100 / 3. 0.100
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 0.100 / 53. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mov':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2014-06-05 04:40:27
model : iPhone 5
model-eng : iPhone 5
encoder : 7.1.1
encoder-eng : 7.1.1
date : 2014-06-04T21:40:27-0700
date-eng : 2014-06-04T21:40:27-0700
make : Apple
make-eng : Apple
Duration: 00:00:07.15, start: 0.000023, bitrate: 781 kb/s
Stream #0:0(und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv, smpte170m), 480x360, 710 kb/s, 29.09 fps, 600 tbr, 600 tbn, 1200 tbc (default)
Metadata:
rotate : 90
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
encoder : H.264
Side data:
displaymatrix: rotation of -90.00 degrees
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 63 kb/s (default)
Metadata:
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
[graph 0 input from stream 0:0 @ 0x27ed3a0] w:480 h:360 pixfmt:yuv420p tb:1/600 fr:320/11 sar:0/1 sws_param:flags=2
[graph 1 input from stream 0:1 @ 0x2800700] tb:1/44100 samplefmt:fltp samplerate:44100 chlayout:0x4
Output #0, avi, to '1.avi':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
make-eng : Apple
model : iPhone 5
model-eng : iPhone 5
make : Apple
ISFT : Lavf56.3.100
ICRD : 2014-06-04T21:40:27-0700
date-eng : 2014-06-04T21:40:27-0700
Stream #0:0(und): Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 480x360, q=2-31, 200 kb/s, 29.09 fps, 29.09 tbn, 29.09 tbc (default)
Metadata:
rotate : 90
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
encoder : Lavc56.0.101 mpeg4
Stream #0:1(und): Audio: mp3 (libmp3lame) (U[0][0][0] / 0x0055), 44100 Hz, mono, fltp (default)
Metadata:
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
encoder : Lavc56.0.101 libmp3lame
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> mpeg4 (native))
Stream #0:1 -> #0:1 (aac (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
*** dropping frame 79 from stream 0 at ts 80
*** dropping frame 113 from stream 0 at ts 114
*** dropping frame 145 from stream 0 at ts 146
*** dropping frame 177 from stream 0 at ts 178
No more output streams to write to, finishing.
frame= 204 fps=0.0 q=27.2 Lsize= 348kB time=00:00:07.15 bitrate= 398.4kbits/s dup=0 drop=4
video:271kB audio:56kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 6.560985%
Input file #0 (1.mov):
Input stream #0:0 (video): 208 packets read (634624 bytes); 208 frames decoded;
Input stream #0:1 (audio): 308 packets read (56854 bytes); 308 frames decoded (315392 samples);
Total: 516 packets (691478 bytes) demuxed
Output file #0 (1.avi):
Output stream #0:0 (video): 204 frames encoded; 204 packets muxed (276993 bytes);
Output stream #0:1 (audio): 274 frames encoded (315392 samples); 275 packets muxed (57469 bytes);
Total: 479 packets (334462 bytes) muxedstrace and strace -e outputs :
strace non root :579 clone(child_stack=0x7fd3bfd07ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS| CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fd3bfd089d0, tls=0x7fd3bfd08700, child_tidptr=0x7fd3bfd089d0) = 3 2637
580 mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fd3bed07000
581 mprotect(0x7fd3bed07000, 4096, PROT_NONE) = 0
582 clone(child_stack=0x7fd3bf506ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS| CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fd3bf5079d0, tls=0x7fd3bf507700, child_tidptr=0x7fd3bf5079d0) = - 1 EAGAIN (Resource temporarily unavailable)
583 futex(0x253b420, FUTEX_WAKE_PRIVATE, 1) = 1
584 futex(0x253b3f4, FUTEX_CMP_REQUEUE_PRIVATE, 1, 2147483647, 0x253b420, 4) = 2
585 futex(0x253b420, FUTEX_WAKE_PRIVATE, 1) = 1
586 futex(0x7fd3c2d0e9d0, FUTEX_WAIT, 32631, NULL) = 0
587 munmap(0x7fd3bed07000, 8392704) = 0
588 munmap(0x7fd3c250e000, 8392704) = 0
589 munmap(0x7fd3c1d0d000, 8392704) = 0
590 munmap(0x7fd3c150c000, 8392704) = 0
591 write(2, "\33[1;32m[AVFilterGraph @ 0x253b0a"..., 39[AVFilterGraph @ 0x253b0a0] ) = 39
592 write(2, "\33[1;31mError initializing thread"..., 41Error initializing threading.
593 ) = 41
594 write(2, "\33[1;32m[AVFilterGraph @ 0x253b0a"..., 39[AVFilterGraph @ 0x253b0a0] ) = 39
595 write(2, "\33[1;31mError creating filter 'an"..., 41Error creating filter 'anull'
596 ) = 41
597 write(2, "\33[4;31mError opening filters!\n\33["..., 34Error opening filters!
598 ) = 34strace -e non root :
strace -e open ffmpeg -i 1.mov 5.avi
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib64/libasound.so.2", O_RDONLY) = 3
open("/usr/lib64/libSDL-1.2.so.0", O_RDONLY) = 3
open("/lib64/libpthread.so.0", O_RDONLY) = 3
open("/usr/lib64/libx264.so.142", O_RDONLY) = 3
open("/usr/lib64/libvpx.so.0", O_RDONLY) = 3
open("/usr/local/lib/libvorbisenc.so.2", O_RDONLY) = 3
open("/usr/local/lib/libvorbis.so.0", O_RDONLY) = 3
open("/usr/local/lib/libmp3lame.so.0", O_RDONLY) = 3
open("/lib64/libm.so.6", O_RDONLY) = 3
open("/lib64/libbz2.so.1", O_RDONLY) = 3
open("/usr/local/lib/libz.so.1", O_RDONLY) = 3
open("/lib64/librt.so.1", O_RDONLY) = 3
open("/lib64/libc.so.6", O_RDONLY) = 3
open("/lib64/libdl.so.2", O_RDONLY) = 3
open("/usr/local/lib/libogg.so.0", O_RDONLY) = 3
ffmpeg version N-65949-g0ddb051 Copyright (c) 2000-2014 the FFmpeg developers
built on Aug 28 2014 11:39:47 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-4)
configuration: --enable-gpl --enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libx264
libavutil 54. 7.100 / 54. 7.100
libavcodec 56. 0.101 / 56. 0.101
libavformat 56. 3.100 / 56. 3.100
libavdevice 56. 0.100 / 56. 0.100
libavfilter 5. 0.103 / 5. 0.103
libswscale 3. 0.100 / 3. 0.100
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 0.100 / 53. 0.100
open("1.mov", O_RDONLY|O_CLOEXEC) = 3
open("/etc/localtime", O_RDONLY) = 4
open("/proc/meminfo", O_RDONLY|O_CLOEXEC) = 4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mov':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2014-06-05 04:40:27
model : iPhone 5
model-eng : iPhone 5
encoder : 7.1.1
encoder-eng : 7.1.1
date : 2014-06-04T21:40:27-0700
date-eng : 2014-06-04T21:40:27-0700
make : Apple
make-eng : Apple
Duration: 00:00:07.15, start: 0.000023, bitrate: 781 kb/s
Stream #0:0(und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv, smpte170m), 480x360, 710 kb/s, 29.09 fps, 600 tbr, 600 tbn, 1200 tbc (default)
Metadata:
rotate : 90
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
encoder : H.264
Side data:
displaymatrix: rotation of -90.00 degrees
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 63 kb/s (default)
Metadata:
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
open("5.avi", O_WRONLY|O_CREAT|O_TRUNC|O_CLOEXEC, 0666) = 4
[AVFilterGraph @ 0x26ff4a0] Error initializing threading.
[AVFilterGraph @ 0x26ff4a0] Error creating filter 'anull'
Error opening filters!strace root :
579 clone(child_stack=0x7f4eb7c34ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS| CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f4eb7c359d0, tls=0x7f4eb7c35700, child_tidptr=0x7f4eb7c359d0) = 3 383
580 mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f4eb6c34000
581 mprotect(0x7f4eb6c34000, 4096, PROT_NONE) = 0
582 clone(child_stack=0x7f4eb7433ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS| CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f4eb74349d0, tls=0x7f4eb7434700, child_tidptr=0x7f4eb74349d0) = 3 384
583 mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f4eb6433000
584 mprotect(0x7f4eb6433000, 4096, PROT_NONE) = 0
585 clone(child_stack=0x7f4eb6c32ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS| CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f4eb6c339d0, tls=0x7f4eb6c33700, child_tidptr=0x7f4eb6c339d0) = 3 385
586 mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f4eb5c32000
587 mprotect(0x7f4eb5c32000, 4096, PROT_NONE) = 0
588 clone(child_stack=0x7f4eb6431ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS| CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f4eb64329d0, tls=0x7f4eb6432700, child_tidptr=0x7f4eb64329d0) = 3 386
589 mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f4eb5431000
590 mprotect(0x7f4eb5431000, 4096, PROT_NONE) = 0
591 clone(child_stack=0x7f4eb5c30ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS| CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f4eb5c319d0, tls=0x7f4eb5c31700, child_tidptr=0x7f4eb5c319d0) = 3 387
592 mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f4eb4c30000
593 mprotect(0x7f4eb4c30000, 4096, PROT_NONE) = 0
594 clone(child_stack=0x7f4eb542fff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS| CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f4eb54309d0, tls=0x7f4eb5430700, child_tidptr=0x7f4eb54309d0) = 3 388
595 mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f4eb442f000
596 mprotect(0x7f4eb442f000, 4096, PROT_NONE) = 0
597 clone(child_stack=0x7f4eb4c2eff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS| CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f4eb4c2f9d0, tls=0x7f4eb4c2f700, child_tidptr=0x7f4eb4c2f9d0) = 3 389
598 mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f4eb3c2e000strace -e root :
strace -e open ffmpeg -i 1.mov 5.avi
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib64/libasound.so.2", O_RDONLY) = 3
open("/usr/lib64/libSDL-1.2.so.0", O_RDONLY) = 3
open("/lib64/libpthread.so.0", O_RDONLY) = 3
open("/usr/lib64/libx264.so.142", O_RDONLY) = 3
open("/usr/lib64/libvpx.so.0", O_RDONLY) = 3
open("/usr/local/lib/libvorbisenc.so.2", O_RDONLY) = 3
open("/usr/local/lib/libvorbis.so.0", O_RDONLY) = 3
open("/usr/local/lib/libmp3lame.so.0", O_RDONLY) = 3
open("/lib64/libm.so.6", O_RDONLY) = 3
open("/lib64/libbz2.so.1", O_RDONLY) = 3
open("/usr/local/lib/libz.so.1", O_RDONLY) = 3
open("/lib64/librt.so.1", O_RDONLY) = 3
open("/lib64/libc.so.6", O_RDONLY) = 3
open("/lib64/libdl.so.2", O_RDONLY) = 3
open("/usr/local/lib/libogg.so.0", O_RDONLY) = 3
ffmpeg version N-65957-gc6a3b00 Copyright (c) 2000-2014 the FFmpeg developers
built on Aug 28 2014 13:37:32 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-4)
configuration: --enable-gpl --enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libx264 --prefix=/usr --libdir=/usr/lib64 --enable-gpl --enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libx264
libavutil 54. 7.100 / 54. 7.100
libavcodec 56. 0.101 / 56. 0.101
libavformat 56. 3.100 / 56. 3.100
libavdevice 56. 0.100 / 56. 0.100
libavfilter 5. 0.103 / 5. 0.103
libswscale 3. 0.100 / 3. 0.100
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 0.100 / 53. 0.100
open("1.mov", O_RDONLY|O_CLOEXEC) = 3
open("/etc/localtime", O_RDONLY) = 4
open("/proc/meminfo", O_RDONLY|O_CLOEXEC) = 4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mov':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2014-06-05 04:40:27
model : iPhone 5
model-eng : iPhone 5
encoder : 7.1.1
encoder-eng : 7.1.1
date : 2014-06-04T21:40:27-0700
date-eng : 2014-06-04T21:40:27-0700
make : Apple
make-eng : Apple
Duration: 00:00:07.15, start: 0.000023, bitrate: 781 kb/s
Stream #0:0(und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv, smpte170m), 480x360, 710 kb/s, 29.09 fps, 600 tbr, 600 tbn, 1200 tbc (default)
Metadata:
rotate : 90
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
encoder : H.264
Side data:
displaymatrix: rotation of -90.00 degrees
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 63 kb/s (default)
Metadata:
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
File '5.avi' already exists. Overwrite ? [y/N] y
open("5.avi", O_WRONLY|O_CREAT|O_TRUNC|O_CLOEXEC, 0666) = 4
Output #0, avi, to '5.avi':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
make-eng : Apple
model : iPhone 5
model-eng : iPhone 5
make : Apple
ISFT : Lavf56.3.100
ICRD : 2014-06-04T21:40:27-0700
date-eng : 2014-06-04T21:40:27-0700
Stream #0:0(und): Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 480x360, q=2-31, 200 kb/s, 29.09 fps, 29.09 tbn, 29.09 tbc (default)
Metadata:
rotate : 90
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
encoder : Lavc56.0.101 mpeg4
Stream #0:1(und): Audio: mp3 (libmp3lame) (U[0][0][0] / 0x0055), 44100 Hz, mono, fltp (default)
Metadata:
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
encoder : Lavc56.0.101 libmp3lame
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> mpeg4 (native))
Stream #0:1 -> #0:1 (aac (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
frame= 204 fps=0.0 q=27.2 Lsize= 348kB time=00:00:07.15 bitrate= 398.4kbits/s dup=0 drop=4
video:271kB audio:56kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 6.560985% -
Background Video Processing with Rails
23 octobre 2013, par Matthew SnyderI am trying to get uploaded videos to be converted in the background, running windows. Some of what I am using :
gem 'paperclip'
gem 'delayed_job_active_record'
gem 'ffmpeg'I have edited the registry to allow the ffmpeg command to be ran from anywhere, I get a popup that I assume is ffmpeg because it goes away too quickly, guess the command is wrong so if anyone knows what's wrong with it please let me know. But the real problem is that it just hangs there, it says :
[2012-12-09 22:47:03] ERROR invalid body size.
[2012-12-09 22:47:03] ERROR Errno::ECONNABORTED: An established connection was a
borted by the software in your host machine.
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpresponse.rb:396:i
n `write'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpresponse.rb:396:i
n `<<'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpresponse.rb:396:i
n `_write_data'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpresponse.rb:368:i
n `send_body_string'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpresponse.rb:249:i
n `send_body'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpresponse.rb:152:i
n `send_response'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpserver.rb:110:in
`run'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/server.rb:191:in `blo
ck in start_thread'Does anyone know how to properly get this working ? I've went through a few tutorials that have bits and pieces of what I need but I can't get them working together. Here's what I have so far, lemme know if you need more :
Model :
class Video < ActiveRecord::Base
belongs_to :user
has_many :comments, dependent: :destroy
attr_accessible :video, :user_id, :video_file_name, :title, :public, :description, :views
has_attached_file :video, url: "/users/:user_id/videos/:id/:basename_:style.:extension"
#process_in_background :video #causes death
validates :video, presence: true
validates :description, presence: true, length: { minimum: 5, maximum: 100}
validates :title, presence: true, length: { minimum: 1, maximum: 15 }
validates_attachment_size :video, less_than: 1.gigabytes
validates_attachment :video, presence: true
default_scope order: 'created_at DESC'
Paperclip.interpolates :user_id do |attachment, style|attachment.instance.user_id
end
#before_post_process do |video|
# false if video.status == "converting"
#end
def perform
command = <<-end_command
start ffmpeg -i #{ '/public/users/:user_id/videos/:id/:basename_:style.:extension' } -ar 22050 -ab 32 -s 1280x720 -vcodec webm -r 25 -qscale 8 -f webm -y #{ '/public/users/:user_id/videos/:id/:basename_.webm' }
end_command
success = system(command)
logger.debug 'Converting File: ' + success.to_s
if success && $?.exitstatus.to_i == 0
#self.converted!
self.status = "converted"
else
#self.failure!
self.status = "failed"
end
end
handle_asynchronously :perform
def self.search(search)
if search
find(:all, conditions: ["public = 't' AND title LIKE ?", "%#{search}%"], order: "created_at DESC")
else
find(:all, conditions: ["public = 't'"], order: "created_at DESC")
end
end
def self.admin_search(search)
if search
find(:all, conditions: ['title LIKE ?', "%#{search}%"], order: "created_at DESC")
else
find(:all, order: "created_at DESC")
end
end
private
# This updates the stored filename with the new flash video file
def set_new_filename
#update_attribute(:filename, "#{filename}.#{id}.webm")
update_attribute(:content_type, "video/x-webm")
end
endController :
class VideosController < ApplicationController
before_filter :signed_in_user, only: [:upload, :update, :destroy]
before_filter :admin_user, only: :admin_index
def upload
@video = Video.new
# generate a unique id for the upload
@uuid = (0..29).to_a.map {|x| rand(10)}
end
def create
@video = Video.new(params[:video])
@video.user_id = current_user.id
if @video.save
@video.delay.perform
flash[:success] = "Uploaded Succefully!"
redirect_to @video.user
Delayed::Worker.new.start
else
render 'upload'
end
end
def show
@video = Video.find(params[:id])
@comments = @video.comments.paginate(page: params[:page], per_page: 6)
if !@video.public
if !signed_in? || current_user.id != @video.user_id && !current_user.admin && !current_user.approved?(@video.user)
flash[:notice] = "Video is private"
redirect_to root_path
end
end
end
def update
@video = Video.find(params[:id])
if @video.update_attributes(params[:video])
flash[:success] = "Video preferences saved"
else
flash[:fail] = "Failed to update video preferences"
end
redirect_to :back
end
def destroy
@video = Video.find(params[:id])
@video.destroy
flash[:deleted] = "Deleted Succefully!"
redirect_to :back
end
def index
@videos = Video.paginate(page: params[:page], per_page: 6).search(params[:search])
end
def admin_index
@videos = Video.paginate(page: params[:page], per_page: 6).admin_search(params[:search])
end
def ajax_video_comments
@video = Video.find(params[:id])
@comments = @video.comments.paginate(page: params[:page], per_page: 6)
respond_to do |format|
format.js { render partial: 'shared/comments', content_type: 'text/html' }
end
end
def ajax_video_watched
@video = Video.find(params[:id])
@video.views += 1
@video.save
end
private
def signed_in_user
redirect_to root_path, notice: "Please Login." unless signed_in?
end
def admin_user
redirect_to(root_path) unless current_user.admin?
end
end