arista-0.9.7/0000755000175000017500000000000011577653227012357 5ustar dandan00000000000000arista-0.9.7/setup.py0000755000175000017500000001220311577652416014071 0ustar dandan00000000000000#!/usr/bin/env python import os import sys from glob import glob from distutils.core import setup from distutils.command.install_data import install_data from distutils.dist import DistributionMetadata from distutils.util import byte_compile # Patch distutils if it can't cope with the "classifiers" or # "download_url" keywords from sys import version if version < '2.2.3': DistributionMetadata.classifiers = None DistributionMetadata.download_url = None if not hasattr(DistributionMetadata, "zip_safe"): DistributionMetadata.zip_safe = True data_files = [ (os.path.join("share", "applications"), ["arista.desktop"]), (os.path.join("share", "doc", "arista"), [ "README.md", "LICENSE", "AUTHORS" ]), (os.path.join("share", "nautilus-python", "extensions"), ["arista-nautilus.py"]), ] for (prefix, path) in [("arista", "presets"), ("arista", "ui"), ("", "locale"), ("arista", "help")]: for root, dirs, files in os.walk(path): to_add = [] for filename in files: if filename != "README": to_add.append(os.path.join(root, filename)) if to_add: data_files.append((os.path.join("share", prefix, root), to_add)) class AristaInstall(install_data): def run(self): # Do the normal install steps install_data.run(self) if self.root is None: self.root = '' if hasattr(sys, "dont_write_bytecode") and sys.dont_write_bytecode: print "byte-compiling disabled" else: # Byte compile any python files that were installed as data files for path, fnames in data_files: for fname in fnames: if fname.endswith(".py"): full = os.path.join(self.root + sys.prefix, path, fname) print "byte-compiling %s" % full try: byte_compile([full], prefix=self.root, base_dir=sys.prefix) except Exception, e: print "Byte-compile failed: " + str(e) setup( name = "arista", version = "0.9.7", description = "An easy multimedia transcoder for GNOME", long_description = """Overview ======== An easy to use multimedia transcoder for the GNOME Desktop. Arista focuses on being easy to use by making the complex task of encoding for various devices simple. Pick your input, pick your target device, choose a file to save to and go. Arista has been in development since early 2008 as a side project and was just recently polished to make it release-worthy. The 0.8 release is the first release available to the public. Please see http://github.com/danielgtaylor/arista for information on helping out. Features --------- * Presets for Android, iPod, computer, DVD player, PSP, and more * Live preview to see encoded quality * Automatically discover available DVD drives and media * Rip straight from DVD media easily * Automatically discover and record from Video4Linux devices * Support for H.264, WebM, FLV, Ogg, DivX and more * Batch processing of entire directories easily * Simple terminal client for scripting * Nautilus extension for right-click file conversion Requirements --------------- Arista is written in Python and requires the bindings for GTK+ 2.16 or newer, GStreamer, GConf, GObject, Cairo, and udev. If you are an Ubuntu user this means you need to be using at least Ubuntu 9.04 (Jaunty). The GStreamer plugins required depend on the presets available, but at this time you should have gst-plugins-good, gst-plugins-bad, gst-plugins-ugly, and gst-ffmpeg. If you are on Ubuntu don't forget to install the multiverse packages. Note: WebM support requires at least GStreamer's gst-plugins-bad-0.10.19. """, author = "Daniel G. Taylor", author_email = "dan@programmer-art.org", url = "http://www.transcoder.org/", download_url = "http://programmer-art.org/media/releases/arista-transcoder/arista-0.9.7.tar.gz", packages = [ "arista", "arista.inputs", ], scripts = [ "arista-gtk", "arista-transcode", ], data_files = data_files, requires = [ "gtk(>=2.16)", "gst(>=10.22)", "gconf", "cairo", "udev", ], provides = [ "arista", ], keywords = "gnome gtk gstreamer transcode multimedia", platforms = [ "Platform Independent", ], classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Environment :: X11 Applications :: GTK", "Environment :: X11 Applications :: Gnome", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Multimedia :: Sound/Audio :: Conversion", "Topic :: Multimedia :: Video :: Conversion", "Topic :: Utilities", ], zip_safe = False, cmdclass = { "install_data": AristaInstall, }, ) arista-0.9.7/arista-gtk0000755000175000017500000026240711577652355014367 0ustar dandan00000000000000#!/usr/bin/python """ Arista Desktop Transcoder (GTK+ client) ======================================= An audio/video transcoder based on simple device profiles provided by presets. This is the GTK+ version. License ------- Copyright 2008 - 2011 Daniel G. Taylor This file is part of Arista. Arista is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the License, or (at your option) any later version. Arista is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with Arista. If not, see . """ import gettext import locale import logging import os import re import shutil import sys import threading import time import webbrowser from optparse import OptionParser import gobject import gio import gconf import cairo import gtk # FIXME: Stupid hack, see the other fixme comment below! if __name__ != "__main__": import gst _log = logging.getLogger("arista-gtk") try: import pynotify pynotify.init("icon-summary-body") except ImportError: pynotify = None _log.info("Unable to import pynotify - desktop notifications disabled") try: import webkit except ImportError: webkit = None _log.info("Unable to import webkit - in-app documentation disabled") import arista _ = gettext.gettext locale.setlocale(locale.LC_ALL, '') CONFIG_PATH = "/apps/arista" DEFAULT_CHECK_INPUTS = True DEFAULT_SHOW_TOOLBAR = True DEFAULT_SHOW_PREVIEW = True DEFAULT_PREVIEW_FPS = 10 DEFAULT_OPEN_PATH = os.path.expanduser("~/Desktop") RE_ENDS_NUM = re.compile(r'^.*(?P[0-9]+)$') def _new_combo_with_image(extra = []): """ Create a new combo box with a list store of a pixbuf, a string, and any extra passed types. @type extra: list @param extra: Extra types to add to the gtk.ListStore @rtype: gtk.ComboBox @return: The newly created combo box """ store = gtk.ListStore(gtk.gdk.Pixbuf, gobject.TYPE_STRING, *extra) combo = gtk.ComboBox(store) pixbuf_cell = gtk.CellRendererPixbuf() text_cell = gtk.CellRendererText() combo.pack_start(pixbuf_cell, False) combo.pack_start(text_cell, True) combo.add_attribute(pixbuf_cell, 'pixbuf', 0) combo.add_attribute(text_cell, 'text', 1) return combo def _get_icon_pixbuf(uri, width, height): """ Get a pixbuf from an item with an icon URI set. @type item: object @param item: An object with an icon attribute @type width: int @param width: The requested width of the pixbuf @type height: int @param height: The requested height of the pixbuf @rtype: gtk.Pixbuf or None @return: The pixbuf of the icon if it can be found """ image = None theme = gtk.icon_theme_get_default() if not uri: return image if uri.startswith("file://"): try: path = arista.utils.get_path("presets", uri[7:]) except IOError: path = "" if os.path.exists(path): image = gtk.gdk.pixbuf_new_from_file_at_size(path, width, height) elif uri.startswith("stock://"): image = theme.load_icon(uri[8:], gtk.ICON_SIZE_MENU, 0) else: raise ValueError(_("Unknown icon URI %(uri)s") % { "uri": uri }) return image def _get_filename_icon(filename): """ Get the icon from a filename using GIO. >>> icon = _get_filename_icon("test.mp4") >>> if icon: >>> # Do something here using icon.load_icon() >>> ... @type filename: str @param filename: The name of the file whose icon to fetch @rtype: gtk.ThemedIcon or None @return: The requested unloaded icon or nothing if it cannot be found """ theme = gtk.icon_theme_get_default() names = gio.content_type_get_icon(gio.content_type_guess(filename)).get_property("names") icon = theme.choose_icon(names, gtk.icon_size_lookup(gtk.ICON_SIZE_MENU)[0], 0) return icon class LogoWidget(gtk.Widget): """ A widget to show the Arista logo. See http://svn.gnome.org/viewvc/pygtk/trunk/examples/gtk/widget.py?view=markup """ def __init__(self): gtk.Widget.__init__(self) # Load the logo overlay logo_path = arista.utils.get_path("ui", "logo.svg") self.pixbuf = gtk.gdk.pixbuf_new_from_file(logo_path) def do_realize(self): """ Realize the widget. Setup the window. """ self.set_flags(self.flags() | gtk.REALIZED) self.window = gtk.gdk.Window( self.get_parent_window(), width = self.allocation.width, height = self.allocation.height, window_type = gtk.gdk.WINDOW_CHILD, wclass = gtk.gdk.INPUT_OUTPUT, event_mask = self.get_events() | gtk.gdk.EXPOSURE_MASK | gtk.gdk.BUTTON_PRESS_MASK) self.window.set_user_data(self) self.style.attach(self.window) self.style.set_background(self.window, gtk.STATE_NORMAL) self.window.move_resize(*self.allocation) self.gc = self.style.fg_gc[gtk.STATE_NORMAL] def do_unrealize(self): """ Destroy the window. """ self.window.destroy() def do_size_request(self, requisition): """ Request a minimum size. """ requisition.width = self.pixbuf.get_width() requisition.height = self.pixbuf.get_height() def do_size_allocate(self, allocation): """ Our size was allocated, save it! """ self.allocation = allocation if self.flags() & gtk.REALIZED: self.window.move_resize(*allocation) def do_expose_event(self, event): """ Draw the logo. """ x, y, w, h = self.allocation cr = self.window.cairo_create() # Base the background color on a 50% luminosity version of the theme's # selected color (the color you usually see in progress bars, for # example) and make the gradient go from slightly lighter to slightly # darker. color = self.style.bg[gtk.STATE_SELECTED] r, g, b = color.red / 65535.0, color.green / 65535.0, \ color.blue / 65535.0 avg = (r + g + b) / 3.0 r, g, b = [i + 0.5 - avg for i in [r, g, b]] # Draw a gradient background gradient = cairo.LinearGradient(0, 0, 0, h) gradient.add_color_stop_rgb(0.0, r * 1.1, g * 1.1, b * 1.1) gradient.add_color_stop_rgb(1.0, r, g, b) cr.rectangle(0, 0, w, h) cr.set_source(gradient) cr.fill() # Draw block shadow area gradient = cairo.LinearGradient(1, (h / 2) + 5, 1, (h / 2) + 115) gradient.add_color_stop_rgba(0.0, r * 0.95, g * 0.95, b * 0.95, 0.0) gradient.add_color_stop_rgba(0.5, r * 0.95, g * 0.95, b * 0.95, 1.0) gradient.add_color_stop_rgba(0.6, r * 0.9, g * 0.9, b * 0.9, 1.0) gradient.add_color_stop_rgba(1.0, r * 0.9, g * 0.9, b * 0.9, 0.0) cr.rectangle(1, (h / 2) + 5, w - 2, 30) cr.rectangle(1, (h / 2) + 35 + 45, w - 2, 35) cr.set_source(gradient) cr.fill() # Draw a highlighted block cr.set_source_rgba(1.0, 1.0, 1.0, 0.13) cr.rectangle(1, (h / 2) + 35, w - 2, 45) cr.fill() # Draw a border around the highlighted block cr.rectangle(1, (h / 2) + 35, w - 2, 1) cr.rectangle(1, (h / 2) + 35 + 45 - 1, w - 2, 1) cr.fill() # Draw the outer border cr.set_source_rgba(0.0, 0.0, 0.0, 0.5) cr.set_line_width(1.0) cr.rectangle(0, 0, w, h) cr.stroke() # Draw the logo svg centered in the widget self.window.draw_pixbuf(self.gc, self.pixbuf, 0, 0, (w / 2) - (self.pixbuf.get_width() / 2), (h / 2) - (self.pixbuf.get_height() / 2)) gobject.type_register(LogoWidget) class MainWindow(object): """ Arista Main Window ================== The main transcoder window. Provides a method of selecting a source, output device, and preset for transcoding as well as managing the transcoding queue. """ def __init__(self, runoptions): self.runoptions = runoptions ui_path = arista.utils.get_path("ui", "main.ui") # Load the GUI self.builder = gtk.Builder() self.builder.add_from_file(ui_path) self.builder.connect_signals(self) self.window = self.builder.get_object("main_window") self.menuitem_toolbar = self.builder.get_object("menuitem_toolbar") self.toolbar = self.builder.get_object("toolbar") self.toolbutton_remove = self.builder.get_object("toolbutton_remove") self.toolbutton_pause = self.builder.get_object("toolbutton_pause") self.hbox_progress = self.builder.get_object("hbox_progress") self.progress = self.builder.get_object("progressbar") self.button_pause = self.builder.get_object("button_pause") self.button_cancel = self.builder.get_object("button_cancel") self.preview = self.builder.get_object("video_preview") self.preview_frame = self.builder.get_object("preview_frame") self.logo = LogoWidget() self.logo.connect("button-press-event", self.logo_button_pressed) self.logo.drag_dest_set(gtk.DEST_DEFAULT_ALL, [('text/plain', 0, 0)], gtk.gdk.ACTION_COPY) self.logo.connect("drag-data-received", self.drag_data_received) self.preview.drag_dest_set(gtk.DEST_DEFAULT_ALL, [('text/plain', 0, 0)], gtk.gdk.ACTION_COPY) self.preview.connect("drag-data-received", self.drag_data_received) self.image_preview = gtk.Alignment(xscale = 1.0, yscale = 1.0) self.image_preview.set_padding(0, 5, 0, 0) self.image_preview.add(self.logo) self.builder.get_object("vbox_preview").pack_start(self.image_preview) self.add_dialog = None self.prefs_dialog = None self.about_dialog = None self.transcoder = None # Setup the transcoding queue and watch for events self.queue = arista.queue.TranscodeQueue() self.queue.connect("entry-discovered", self.on_queue_entry_discovered) self.queue.connect("entry-error", self.on_queue_entry_error) self.queue.connect("entry-complete", self.on_queue_entry_complete) # Setup configuration system client = gconf.client_get_default() client.add_dir(CONFIG_PATH, gconf.CLIENT_PRELOAD_NONE) # Update UI to reflect currently stored settings try: value = client.get_value(CONFIG_PATH + "/show_toolbar") if value: self.toolbar.show() else: self.toolbar.hide() self.menuitem_toolbar.set_active(value) except ValueError: if DEFAULT_SHOW_TOOLBAR: self.toolbar.show() else: self.toolbar.hide() self.menuitem_toolbar.set_active(DEFAULT_SHOW_TOOLBAR) client.notify_add(CONFIG_PATH + "/show_toolbar", self.on_gconf_show_toolbar) try: value = client.get_value(CONFIG_PATH + "/last_open_path") if value and os.path.exists(value): self.last_open_path = value else: self.last_open_path = DEFAULT_OPEN_PATH except ValueError: self.last_open_path = DEFAULT_OPEN_PATH # Show the interface! self.preview.hide() self.hbox_progress.hide() self.image_preview.show_all() self.window.show() # Are we using the simplified interface? Hide stuff! if self.runoptions.simple: self.builder.get_object("menubar").hide() self.toolbar.hide() self.window.resize(320, 240) self.window.set_position(gtk.WIN_POS_CENTER_ALWAYS) device = arista.presets.get()[self.runoptions.device] if not self.runoptions.preset: preset = device.presets[device.default] else: for (id, preset) in device.presets.items(): if preset.name == options.preset: break outputs = [] for fname in self.runoptions.files: output = arista.utils.generate_output_path(fname, preset, to_be_created=outputs, device_name=self.runoptions.device) outputs.append(output) opts = arista.transcoder.TranscoderOptions(fname, preset, output) self.queue.append(opts) def _get_preset_from_coords(self, x, y): """ Get a preset from a set of widget-local coordinates on the logo widget. If a preset is clicked then the name is returned, otherwise None is returned. """ # Get logo dimensions, pixbuf dimensions w, h = self.logo.allocation.width, self.logo.allocation.height lw, lh = self.logo.pixbuf.get_width(), self.logo.pixbuf.get_height() # Convert coordinates from widget-local to pixbuf-local lx = x - ((w - lw) / 2) ly = y - ((h - lh) / 2) # Find the preset that was clicked, if any preset = None if lx >= 50 and lx <= 93 and ly >= 155 and ly <= 195: preset = "DVD Player - DivX Home Theater" elif lx >= 104 and lx <= 153 and ly >= 154 and ly <= 195: preset = "Computer - WebM" elif lx >= 171 and lx <= 212 and ly >= 156 and ly <= 195: preset = "Computer - H.264" elif lx >= 229 and lx <= 260 and ly >= 153 and ly <= 195: preset = "Apple iOS - iPad" elif lx >= 276 and lx <= 298 and ly >= 157 and ly <= 195: preset = "Apple iOS - iPhone / iPod Touch" elif lx >= 316 and lx <= 336 and ly >= 156 and ly <= 195: preset = "Android - Nexus One / Desire" elif lx >= 352 and lx <= 399 and ly >= 168 and ly <= 193: preset = "Sony Playstation - PSP" return preset def drag_data_received(self, widget, context, x, y, selection, target_type, time): """ Files were dragged and dropped into Arista. Add the first file or folder as the source and show the add dialog. """ filenames = [f.strip()[7:] for f in selection.data.split("\n") if x] preset = None if widget == self.logo: preset = self._get_preset_from_coords(x, y) self.on_add(None, preset) self.add_dialog.set_source_to_path(filenames[0]) def logo_button_pressed(self, widget, event): """ Listen for button presses on the logo - if one of the preset icons is pressed then show the add icon with that preset selected. """ # See which preset was clicked and launch the create dialog with the # given preset selected preset = self._get_preset_from_coords(event.x, event.y) if preset: self.on_add(None, preset) def on_quit(self, widget, *args): """ Stop the transcoder and hopefully let it cleanup, then exit. """ try: if self.transcoder: if self.transcoder.state in [gst.STATE_READY, gst.STATE_PAUSED]: self.transcoder.start() self.transcoder.pipe.send_event(gst.event_new_eos()) except: pass self.window.hide() _log.debug(_("Cleaning up and flushing buffers...")) def waiting_to_quit(): if not self.transcoder or self.transcoder.state == gst.STATE_NULL: gobject.idle_add(gtk.main_quit) return False else: return True gobject.idle_add(waiting_to_quit) return True def on_pause_toggled(self, widget): """ Pause toolbar button clicked. """ if widget.get_active(): self.transcoder.pause() else: self.transcoder.start() def on_add(self, widget, selected_preset=None): """ Add an item to the queue. This shows a file chooser dialog to pick the output filename and then adds the item to the queue for transcoding. """ if self.add_dialog: if self.add_dialog.window.get_property("visible"): self.add_dialog.window.present() if selected_preset: self.add_dialog.select_preset(selected_preset) return else: self.add_dialog.window.destroy() self.add_dialog = AddDialog(self, selected_preset) def on_get_new(self, widget): """ Go to the presets list page online and let the user download new presets! """ webbrowser.open("http://www.transcoder.org/presets/") def stop_processing_entry(self, entry): """ Stop processing an entry that is currently being processed. This sends an end-of-stream signal down the pipe, hides the preview, and makes sure the menu and toolbar is in the proper state. The item will remain in the queue for up to a few seconds as GStreamer finishes flushing its buffers, then will be removed. If another item is in the queue it will start processing then. """ entry.stop() if self.runoptions.simple and len(self.queue) == 1: # This is the last item in the simplified GUI, so we are done and # should exit as soon as possible! gobject.idle_add(gtk.main_quit) return # Hide live preview while we wait for the item to finish self.image_preview.show() self.preview.hide() self.hbox_progress.hide() def on_about(self, widget): """ Show the about dialog. """ AboutDialog() def on_prefs(self, widget): """ Show the preferences dialog. """ PrefsDialog() def on_show_toolbar_toggled(self, widget): """ Update the GConf preference for showing or hiding the toolbar. """ client = gconf.client_get_default() client.set_bool(CONFIG_PATH + "/show_toolbar", widget.get_active()) def on_gconf_show_toolbar(self, client, connection, entry, args): """ Show or hide the toolbar and set the menu item to reflect which has happened when the GConf preference has changed. """ self.menuitem_toolbar.set_active(entry.get_value().get_bool()) if entry.get_value().get_bool(): self.toolbar.show() else: self.toolbar.hide() def on_queue_entry_discovered(self, queue, entry, info, is_media): """ The queue entry has been discovered, see if it is a valid input file, if not show an error and remove it from the queue. """ if not info.is_video and info.is_audio: _log.error(_("Input %(infile)s contains no valid streams!") % { "infile": entry.transcoder.infile, }) gtk.gdk.threads_enter() msg = "The input file or device contains no audio or video " \ "streams and will be removed from the queue." dialog = gtk.MessageDialog(self.window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, type = gtk.MESSAGE_ERROR, buttons = gtk.BUTTONS_OK, message_format = msg) dialog.set_title(_("Error with input!")) dialog.run() dialog.destroy() gtk.gdk.threads_leave() self.on_queue_entry_complete(queue, entry) else: entry.transcoder.connect("pass-setup", self.on_queue_entry_pass_setup, entry) def on_queue_entry_pass_setup(self, transcoder, entry): """ Called by the queue to start an entry. Setup the correct pass and start the transcoder after attaching to the video tee so that we can show a nice preview. """ client = gconf.client_get_default() try: show_preview = client.get_value(CONFIG_PATH + "/show_preview") except ValueError: show_preview = DEFAULT_SHOW_PREVIEW try: fps = client.get_value(CONFIG_PATH + "/preview_fps") except ValueError: fps = DEFAULT_PREVIEW_FPS transcoder = entry.transcoder self.transcoder = transcoder gobject.timeout_add(500, self.on_status_update) if show_preview: element = transcoder.pipe.get_by_name("videotee") if element: pipe = gst.parse_launch("queue name=preview_source ! decodebin2 ! videoscale method=bilinear ! videorate ! ffmpegcolorspace ! video/x-raw-yuv, framerate=%d/1; video/x-raw-rgb, framerate=%d/1 ! autovideosink name=preview_sink" % (fps, fps)) psink = pipe.get_by_name("preview_sink") psink.connect("element-added", self.on_preview_sink_element_added) transcoder.pipe.add(pipe) src = pipe.get_by_name("preview_source") gst.element_link_many(element, src) bus = transcoder.pipe.get_bus() bus.enable_sync_message_emission() bus.connect("sync-message::element", self.on_sync_msg) self.preview.show() self.image_preview.hide() self.hbox_progress.show() def on_queue_entry_error(self, queue, entry, error_str): """ An entry in the queue has had an error. Update the queue model and inform the user. """ entry.transcoder.stop() if pynotify and not entry.force_stopped: theme = gtk.icon_theme_get_default() icon_info = theme.lookup_icon("dialog-error", 64, 0) if icon_info: icon = icon_info.get_filename() else: icon = "" notice = pynotify.Notification(_("Error!"), _("Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)s") % { "filename": os.path.basename(entry.options.output_uri), "device": entry.options.preset.device, "preset": entry.options.preset.name, "reason": error_str, }, icon) notice.show() else: # TODO: Show a dialog or something for people with no notifications pass if self.runoptions.simple and len(self.queue) == 1: # This is the last item in the simplified GUI, so we are done and # should exit as soon as possible! gobject.idle_add(gtk.main_quit) return self.image_preview.show() self.preview.hide() self.hbox_progress.hide() def on_queue_entry_complete(self, queue, entry): """ An entry in the queue is finished. Update the queue model. """ if pynotify: try: icon = arista.utils.get_path("presets/" + entry.options.preset.device.icon[7:]) except IOError: icon = "" notice = pynotify.Notification(_("Job done"), _("Conversion of %(filename)s to %(device)s %(preset)s %(action)s") % { "filename": os.path.basename(entry.options.output_uri), "device": entry.options.preset.device.name, "preset": entry.options.preset.name, "action": entry.force_stopped and _("canceled") or _("finished") }, icon) notice.show() if self.runoptions.simple and len(self.queue) == 1: # This is the last item in the simplified GUI, so we are done and # should exit as soon as possible! gobject.idle_add(gtk.main_quit) return self.image_preview.show() self.preview.hide() self.hbox_progress.hide() def on_preview_sink_element_added(self, autovideosink, element): """ Since we let Gstreamer decide which video sink to use, whenever it has picked one set the sync attribute to false so that the transcoder runs as fast as possible. """ try: # We don't want to play at the proper speed, just go as fast # as possible when encoding! element.set_property("sync", False) except: pass def on_sync_msg(self, bus, msg): """ Prepare the preview drawing area so that the video preview is rendered there. """ if msg.structure is None: return msg_name = msg.structure.get_name() if msg_name == "prepare-xwindow-id": gtk.gdk.threads_enter() imagesink = msg.src imagesink.set_property("force-aspect-ratio", True) imagesink.set_xwindow_id(self.preview.window.xid) gtk.gdk.threads_leave() def on_status_update(self): """ Update the status progress bar and text. """ percent = 0.0 state = self.transcoder.state if state != gst.STATE_PAUSED: try: percent, time_rem = self.transcoder.status if percent > 1.0: percent = 1.0 if percent < 0.0: percent = 0.0 pass_info = "" if self.transcoder.preset.pass_count > 1: pass_info = "pass %(pass)d of %(total)d, " % { "pass": self.transcoder.enc_pass + 1, "total": self.transcoder.preset.pass_count, } time_info = "%(time)s remaining" % { "time": time_rem, } file_info = "" if len(self.queue) > 1: file_info = ", %(files)d files left" % { "files": len(self.queue) } info_string = "Transcoding... (%(pass_info)s%(time_info)s%(file_info)s)" % { "pass_info": pass_info, "time_info": time_info, "file_info": file_info, } gtk.gdk.threads_enter() if percent == 0.0: self.progress.pulse() else: self.progress.set_fraction(percent) self.progress.set_text(info_string) gtk.gdk.threads_leave() except arista.transcoder.TranscoderStatusException, e: _log.debug(str(e)) self.progress.pulse() return percent < 1.0 and state != gst.STATE_NULL def on_cancel_clicked(self, widget): """ The user clicked the stop button, so stop processing the entry. """ if len(self.queue): self.stop_processing_entry(self.queue[0]) def on_install_device(self, widget): dialog = gtk.FileChooserDialog(title=_("Choose Source File..."), buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OPEN, gtk.RESPONSE_ACCEPT)) dialog.set_property("local-only", False) dialog.set_current_folder(self.last_open_path) response = dialog.run() dialog.hide() if response == gtk.RESPONSE_ACCEPT: filename = dialog.get_filename() client = gconf.client_get_default() client.set_string(CONFIG_PATH + "/last_open_path", os.path.dirname(filename)) try: devices = arista.presets.extract(open(filename)) except Exception, e: _log.error(str(e)) dialog = gtk.MessageDialog(self.window, type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_CLOSE, message_format=_("Problem importing preset. This file does not appear to be a valid Arista preset!")) dialog.run() dialog.destroy() return arista.presets.reset() if pynotify: for device in devices: try: icon = arista.utils.get_path("presets", arista.presets.get()[device].icon[7:]) except: icon = None notice = pynotify.Notification(_("Installation Successful"), _("Device preset %(name)s successfully installed.") % { "name": arista.presets.get()[device].name, }, icon) notice.show() class PrefsDialog(object): """ Arista Preferences Dialog ========================= A dialog to edit preferences and presets. """ def __init__(self): ui_path = arista.utils.get_path("ui", "prefs.ui") # Load the interface definition file self.builder = gtk.Builder() self.builder.add_from_file(ui_path) # Shortcuts for accessing widgets self.window = self.builder.get_object("prefs_dialog") self.check_inputs = self.builder.get_object("check_inputs") self.check_show_live = self.builder.get_object("check_show_live") self.spin_live_fps = self.builder.get_object("spin_live_fps") # Setup configuration system client = gconf.client_get_default() client.add_dir(CONFIG_PATH, gconf.CLIENT_PRELOAD_NONE) # Update UI to reflect currently stored settings try: value = client.get_value(CONFIG_PATH + "/check_inputs") self.check_inputs.set_active(value) except ValueError: self.check_inputs.set_active(DEFAULT_CHECK_INPUTS) try: value = client.get_value(CONFIG_PATH + "/show_preview") self.check_show_live.set_active(value) except ValueError: self.check_show_live.set_active(DEFAULT_SHOW_PREVIEW) try: value = client.get_value(CONFIG_PATH + "/preview_fps") self.spin_live_fps.set_value(value) except ValueError: self.spin_live_fps.set_value(DEFAULT_PREVIEW_FPS) # Register handlers for when settings are changed client.notify_add(CONFIG_PATH + "/check_inputs", self.on_gconf_check_inputs) client.notify_add(CONFIG_PATH + "/show_preview", self.on_gconf_show_preview) client.notify_add(CONFIG_PATH + "/preview_fps", self.on_gconf_preview_fps) # Connect to signals defined in UI definition file self.builder.connect_signals(self) # Show the window and go! self.window.show_all() def on_close(self, widget, response): """ Close was clicked, remove the window. """ self.window.destroy() def on_check_inputs_toggled(self, widget): """ Update GConf preference for checking DVD drives. """ client = gconf.client_get_default() client.set_bool(CONFIG_PATH + "/check_inputs", widget.get_active()) def on_check_show_live_toggled(self, widget): """ Update GConf preference for showing a live preview during encoding. """ client = gconf.client_get_default() client.set_bool(CONFIG_PATH + "/show_preview", widget.get_active()) def on_fps_changed(self, widget): """ Update GConf preference for the frames per second to show during the live preview. The higher the number the more CPU is diverted from encoding to displaying the video. """ client = gconf.client_get_default() client.set_int(CONFIG_PATH + "/preview_fps", int(widget.get_value())) def on_gconf_check_inputs(self, client, connection, entry, args): """ Update UI when the GConf preference for checking DVD drives has been modified. """ self.check_inputs.set_active(entry.get_value().get_bool()) def on_gconf_show_preview(self, client, connection, entry, args): """ Update UI when the GConf preference for showing the live preview has been modified. """ value = entry.get_value().get_bool() self.check_show_live.set_active(value) self.spin_live_fps.set_sensitive(value) def on_gconf_preview_fps(self, client, connection, entry, args): """ Update UI when the GConf preference for the preview framerate has been modified. """ self.spin_live_fps.set_value(entry.get_value().get_int()) def on_reset_clicked(self, widget): dialog = gtk.MessageDialog(self.window, type=gtk.MESSAGE_WARNING, buttons=gtk.BUTTONS_YES_NO, message_format=_("Are you sure you want to reset your device presets? Doing so will permanently remove any modifications you have made to presets that ship with or share a short name with presets that ship with Arista!")) response = dialog.run() dialog.destroy() if response == gtk.RESPONSE_YES: # Reset all presets that ship with Arista to the factory default. # This does not touch user-made presets unless the shortname # matches one of the factory default preset shortnames. arista.presets.reset(overwrite=True, ignore_initial=True) class PropertiesDialog(object): """ Arista Source Properties Dialog =============================== A simple dialog to set properties for the input source, such as subtitles and deinterlacing. """ def __init__(self, options): self.options = options ui_path = arista.utils.get_path("ui", "props.ui") self.builder = gtk.Builder() self.builder.add_from_file(ui_path) self.window = self.builder.get_object("props_dialog") self.subs = self.builder.get_object("filechooserbutton_subs") self.font = self.builder.get_object("fontbutton") self.deinterlace = self.builder.get_object("checkbutton_deinterlace") if options.subfile: self.subs.set_filename(options.subfile) if options.font: self.font.set_font_name(options.font) if options.deinterlace: self.deinterlace.set_active(options.deinterlace) self.builder.connect_signals(self) self.window.show_all() def on_close(self, widget, response): """ Close was clicked, remove the window. """ self.window.destroy() def on_subs_set(self, widget): """ Set subtitle file. """ self.options.subfile = widget.get_filename() def on_font_set(self, widget): """ Set subtitle rendering font. """ self.options.font = widget.get_font_name() def on_deinterlace(self, widget): """ Toggle forced deinterlacing. """ self.options.deinterlace = widget.get_active() class AddDialog(object): """ A dialog for creating new conversion jobs. """ def __init__(self, parent, selected_preset=None): self.parent = parent self.selected_preset = selected_preset ui_path = arista.utils.get_path("ui", "add.ui") self.builder = gtk.Builder() self.builder.add_from_file(ui_path) self.window = self.builder.get_object("add_dialog") self.presets_view = self.builder.get_object("presets_view") self.entry_filter = self.builder.get_object("entry_filter") self.button_add = self.builder.get_object("button_add") self.button_destination = self.builder.get_object("button_destination") self.button_del = self.builder.get_object("button_del") self.button_info = self.builder.get_object("button_info") self.settings_frame = self.builder.get_object("settings_frame") self.presets_model = gtk.ListStore(gtk.gdk.Pixbuf, # Image gobject.TYPE_STRING, # Preset gobject.TYPE_PYOBJECT) # Data self.presets_model.set_sort_column_id(1, gtk.SORT_ASCENDING) self.presets_filter = self.presets_model.filter_new() self.presets_filter.set_visible_func(self._filter) self.presets_view.set_model(self.presets_filter) self.presets_view.get_selection().connect("changed", self.on_preset_changed) pixbuf_renderer = gtk.CellRendererPixbuf() preset_renderer = gtk.CellRendererText() column = gtk.TreeViewColumn(_("Device Preset")) column.pack_start(pixbuf_renderer, False) column.set_attributes(pixbuf_renderer, pixbuf = 0) column.pack_start(preset_renderer) column.set_attributes(preset_renderer, markup = 1) self.presets_view.append_column(column) self.source = None self.source_hbox = None self.finder = None self.finder_video_found = None self.finder_video_lost = None self.table = self.builder.get_object("settings_table") self.setup_source() gobject.idle_add(self.setup_devices) self.fileiter = None self.options = arista.transcoder.TranscoderOptions() # Setup configuration system client = gconf.client_get_default() client.add_dir(CONFIG_PATH, gconf.CLIENT_PRELOAD_NONE) try: value = client.get_value(CONFIG_PATH + "/last_open_path") if value and os.path.exists(value): self.last_open_path = value else: self.last_open_path = DEFAULT_OPEN_PATH except ValueError: self.last_open_path = DEFAULT_OPEN_PATH self.button_destination.set_current_folder(self.last_open_path) client.notify_add(CONFIG_PATH + "/last_open_path", self.on_gconf_last_open_path) client.notify_add(CONFIG_PATH + "/check_inputs", self.setup_source) self.source.show() self.builder.connect_signals(self) self.window.show_all() def setup_source(self, *args): """ Setup the source widget. Creates a combo box or a file input button depending on the settings and available devices. """ theme = gtk.icon_theme_get_default() size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU)[0] # Already exists? Remove it! if self.source: self.source_hbox.remove(self.source) self.source.destroy() if self.finder: if self.finder_disc_found is not None: self.finder.disconnect(self.finder_disc_found) self.finder_disc_found = None if self.finder_disc_lost is not None: self.finder.disconnect(self.finder_disc_lost) self.finder_disc_lost = None # Should we check for DVD drives? client = gconf.client_get_default() try: check_inputs = client.get_value(CONFIG_PATH + "/check_inputs") except ValueError: check_inputs = DEFAULT_CHECK_INPUTS if check_inputs: # Setup input source discovery # Adds DVD and V4L devices to the source combo box if not self.finder: self.finder = arista.inputs.InputFinder() if len(self.finder.drives) or len(self.finder.capture_devices): icon = gtk.stock_lookup(gtk.STOCK_CDROM)[0] self.source = _new_combo_with_image([gobject.TYPE_PYOBJECT]) model = self.source.get_model() for block, drive in self.finder.drives.items(): iter = model.append() model.set_value(iter, 0, theme.load_icon(icon, size, 0)) model.set_value(iter, 1, drive.nice_label) model.set_value(iter, 2, ("dvd://" + block, drive.media)) for device, capture in self.finder.capture_devices.items(): iter = model.append() model.set_value(iter, 0, theme.load_icon("camera-video", size, 0)) model.set_value(iter, 1, capture.nice_label) if capture.version == '1': model.set_value(iter, 2, ("v4l://" + device, True)) elif capture.version == '2': model.set_value(iter, 2, ("v4l2://" + device, True)) else: _log.warning(_("Unknown V4L version %(version)s!") % { "version": capture.version, }) model.remove(iter) iter = model.append() icon = gtk.stock_lookup(gtk.STOCK_OPEN)[0] model.set_value(iter, 0, theme.load_icon(icon, size, 0)) model.set_value(iter, 1, _("Choose File...")) iter = model.append() icon = gtk.stock_lookup(gtk.STOCK_OPEN)[0] model.set_value(iter, 0, theme.load_icon(icon, size, 0)) model.set_value(iter, 1, _("Choose Directory...")) self.source.set_active(0) self.source.connect("changed", self.on_source_changed) # Watch for DVD discovery events self.finder_disc_found = self.finder.connect("disc-found", self.on_disc_found) self.finder_disc_lost = self.finder.connect("disc-lost", self.on_disc_lost) else: self.source = gtk.FileChooserButton(_("Choose File...")) else: self.source = gtk.FileChooserButton(_("Choose File...")) # Add properties button to set source properties like subtitles source_prop_image = gtk.Image() source_prop_image.set_from_stock(gtk.STOCK_PROPERTIES, gtk.ICON_SIZE_MENU) source_properties = gtk.Button() source_properties.add(source_prop_image) source_properties.connect("clicked", self.on_source_properties) if not self.source_hbox: self.source_hbox = gtk.HBox() self.source_hbox.pack_end(source_properties, expand = False) self.table.attach(self.source_hbox, 1, 2, 0, 1, yoptions = gtk.FILL) self.source_hbox.pack_start(self.source) # Attach and show the source self.source_hbox.show_all() def setup_devices(self): """ Setup the device presets view. """ # Find plugins and sort them nicely # Adds output device profiles to the output device view model = self.presets_view.get_model().get_model() # Remove existing items model.clear() self.default_device = 0 for x, (id, device) in enumerate(arista.presets.get().items()): for (preset_id, preset) in sorted(device.presets.items(), lambda x, y: cmp(x[1].name, y[1].name)): iter = self._add_device(model, device, preset) if id == "computer" and preset == device.default_preset: self.default_device = iter self.presets_view.set_cursor(model.get_path(self.default_device)) self.presets_view.scroll_to_cell(model.get_path(self.default_device)) if self.selected_preset: self.select_preset(self.selected_preset) def _add_device(self, model, device, preset): iter = model.append() image = _get_icon_pixbuf(preset.icon or device.icon, 32, 32) if image: model.set_value(iter, 0, image) model.set_value(iter, 1, "%s - %s\nUp to %sx%s" % (device.name, preset.name, preset.vcodec.width[1], preset.vcodec.height[1])) model.set_value(iter, 2, (device, preset)) return iter def _filter(self, model, iter): """ Filter device presets view to show only presets that match the string typed into the filter text input box. """ iter_value = model.get_value(iter, 2) if not iter_value: return False (device, preset) = iter_value search_text = self.entry_filter.get_text().lower().strip() strings = [device.name, device.description, preset.name, preset.vcodec.name, preset.acodec.name] for string in strings: if search_text in string.lower(): return True return False def select_preset(self, name): """ Select a named preset in the list. If it is not found then the selection is not updated. """ for item in self.presets_model: if item[1].split("\n")[0].strip("") == name: self.presets_view.set_cursor(item.path) self.presets_view.scroll_to_cell(item.path) def get_default_output_name(self, inname, outdir, preset): """ Get the default recommended output filename given an input path and a dir/preset. The original extension is removed, then the new preset extension is added. If such a path already exists then numbers are added before the extension until a non-existing path is found to exist. """ if "." in inname: default_out = os.path.join(outdir, os.path.basename(".".join(inname.split(".")[:-1]) + "." + preset.extension)) else: default_out = os.path.join(outdir, os.path.basename(inname + "." + preset.extension)) while os.path.exists(default_out): parts = default_out.split(".") name, ext = ".".join(parts[:-1]), parts[-1] result = RE_ENDS_NUM.search(name) if result: value = result.group("number") name = name[:-len(value)] number = int(value) + 1 else: number = 1 default_out = "%s%d.%s" % (name, number, ext) return default_out def on_filter_changed(self, widget): """ Device presets view filter changed. """ self.presets_filter.refilter() def on_preset_changed(self, selection): model, iter = selection.get_selected() if hasattr(self.source, "get_model"): smodel, siter = self.source.get_model(), self.source.get_active_iter() source = smodel.get_value(siter, 2)[1] else: source = self.source.get_filename() self.button_del.set_sensitive(bool(iter)) self.button_info.set_sensitive(bool(iter)) self.button_add.set_sensitive(bool(iter and source)) def on_disc_found(self, finder, device, label): """ A video DVD has been found, update the source combo box! """ model = self.source.get_model() for pos, item in enumerate(model): if item[2] and item[2][0].endswith(device.path): model[pos] = (item[0], device.nice_label, (item[2][0], True)) break # Update UI sensitivity of various buttons self.on_preset_changed(self.presets_view.get_selection()) def on_disc_lost(self, finder, device, label): """ A video DVD has been removed, update the source combo box! """ model = self.source.get_model() for pos, item in enumerate(model): if item[2] and item[2][0].endswith(device.path): model[pos] = (item[0], device.nice_label, (item[2][0], False)) break # Update UI sensitivity of various buttons self.on_preset_changed(self.presets_view.get_selection()) def on_gconf_last_open_path(self, client, connection, entry, args): """ Change the default location of the open dialog when choosing a new file or folder to transcode. """ path = entry.get_value().get_string() if os.path.exists(path): self.last_open_path = path else: self.last_open_path = DEFAULT_OPEN_PATH self.button_destination.set_current_folder(self.last_open_path) def on_source_changed(self, widget): """ The source combo box or file chooser button has changed, update! """ theme = gtk.icon_theme_get_default() size = gtk.ICON_SIZE_MENU width, height = gtk.icon_size_lookup(size) iter = widget.get_active_iter() model = widget.get_model() item = model.get_value(iter, 1) if item == _("Choose File..."): dialog = gtk.FileChooserDialog(title=_("Choose Source File..."), buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OPEN, gtk.RESPONSE_ACCEPT)) dialog.set_property("local-only", False) dialog.set_current_folder(self.last_open_path) response = dialog.run() dialog.hide() filename = None if response == gtk.RESPONSE_ACCEPT: if self.fileiter: model.remove(self.fileiter) filename = dialog.get_filename() client = gconf.client_get_default() client.set_string(CONFIG_PATH + "/last_open_path", os.path.dirname(filename)) self.set_source_to_path(filename) else: if self.fileiter: pos = widget.get_active() widget.set_active(pos - 1) else: widget.set_active(0) elif item == _("Choose Directory..."): dialog = gtk.FileChooserDialog(title=_("Choose Source Directory..."), action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OPEN, gtk.RESPONSE_ACCEPT)) dialog.set_property("local-only", False) dialog.set_current_folder(self.last_open_path) response = dialog.run() dialog.hide() if response == gtk.RESPONSE_ACCEPT: if self.fileiter: model.remove(self.fileiter) directory = dialog.get_current_folder() client = gconf.client_get_default() client.set_string(CONFIG_PATH + "/last_open_path", directory) self.set_source_to_path(directory) else: if self.fileiter: pos = widget.get_active() widget.set_active(pos - 2) else: widget.set_active(0) # Simulate preset being changed to update UI sensitivity to clicks self.on_preset_changed(self.presets_view.get_selection()) def set_source_to_path(self, path): """ Set the source selector widget to a path. """ if not hasattr(self.source, "get_model"): # Source is not a combo box self.source.set_filename(path) return size = gtk.ICON_SIZE_MENU width, height = gtk.icon_size_lookup(size) model = self.source.get_model() pos = self.source.get_active() newiter = model.insert(pos) # Reset the custom input options self.options.reset() if os.path.isdir(path): icon = icon = _get_icon_pixbuf("stock://gtk-directory", width, height) else: icon = _get_filename_icon(path) if icon: icon = icon.load_icon() # Find a subtitle file with same filename subfilename = path[0:path.rfind(".")]+".srt" if os.path.exists(subfilename): self.options.subfile = subfilename if icon: model.set_value(newiter, 0, icon) basename = os.path.basename(path.rstrip("/")) if len(basename) > 25: basename = basename[:22] + "..." model.set_value(newiter, 1, basename) model.set_value(newiter, 2, (path, True)) self.fileiter = newiter self.source.set_active(pos) def on_source_properties(self, widget): """ Show source properties dialog so user can set things like subtitles, forcing deinterlacing, etc. """ dialog = PropertiesDialog(self.options) dialog.window.run() dialog.window.destroy() def on_destination_changed(self, widget): pass def on_cancel(self, widget): self.window.destroy() def on_add(self, widget): model, iter = self.presets_view.get_selection().get_selected() device, preset = model.get_value(iter, 2) can_encode = preset.check_elements(self.on_preset_ready) def on_preset_ready(self, preset, can_encode): """ Called when a preset is ready to be encoded after checking for (and optionally installing) required GStreamer elements. """ if not can_encode: gtk.gdk.threads_enter() dialog = gtk.MessageDialog(self.window, type = gtk.MESSAGE_ERROR, buttons = gtk.BUTTONS_OK, message_format = _("Cannot add conversion to queue because of missing elements!")) dialog.run() dialog.destroy() gtk.gdk.threads_leave() return gtk.gdk.threads_enter() if isinstance(self.source, gtk.ComboBox): iter = self.source.get_active_iter() model = self.source.get_model() inpath = model.get_value(iter, 2)[0] inname = os.path.basename(inpath) else: inpath = self.source.get_filename() inname = os.path.basename(inpath) filenames = [] outdir = self.button_destination.get_current_folder() if not os.path.isdir(inpath): filenames.append((inpath, self.get_default_output_name(inpath, outdir, preset))) else: for root, dirs, files in os.walk(inpath): for fname in files: full_path = os.path.join(root, fname) filenames.append((full_path, self.get_default_output_name(full_path, outdir, preset))) for inpath, outpath in filenames: # Setup the transcode job options self.options.uri = inpath self.options.preset = preset self.options.output_uri = outpath self.parent.queue.append(self.options) # Reset options for next item, but copy relevant data options = arista.transcoder.TranscoderOptions() options.subfile = self.options.subfile options.font = self.options.font options.deinterlace = self.options.deinterlace self.options = options self.window.destroy() gtk.gdk.threads_leave() def on_new_clicked(self, widget): """ Create a new device preset. """ devices = arista.presets.get() shortname = "new" count = 1 # Get a unique name not overwriting another device while shortname in devices: shortname = "new" + str(count) count += 1 # Create a new device and preset device = arista.presets.Device.from_json(""" { "make": "Generic", "model": "New Device", "description": "", "author": { "name": "", "email": "" }, "version": "1.0", "icon": "", "default": "", "presets": [ { "name": "New Preset", "container": "mp4mux", "extension": "mp4", "vcodec": { "passes": [ "pass=pass=qual quantizer=21 me=umh subme=6 ref=3 threads=0" ], "container": "mp4mux", "name": "x264enc", "height": [ 240, 1080 ], "width": [ 320, 1920 ], "rate": [ 1, 30 ] }, "acodec": { "passes": [ "bitrate=192000" ], "container": "mp4mux", "name": "faac", "depth": [ 8, 24 ], "channels": [ 1, 6 ], "width": [ 8, 24 ], "rate": [ 8000, 96000 ] } } ] } """) device.filename = arista.utils.get_write_path("presets", shortname + ".json") devices[shortname] = device model = self.presets_model self.entry_filter.set_text("") iter = self._add_device(model, device, device.presets.values()[0]) self.presets_view.set_cursor(model.get_path(iter)) self.presets_view.scroll_to_cell(model.get_path(iter)) self.on_info_clicked(self.presets_view) def on_delete_clicked(self, widget): """ Delete a device preset. Asks the user if she is really sure before actually doing so. """ model, iter = self.presets_view.get_selection().get_selected() device, preset = model.get_value(iter, 2) dialog = gtk.MessageDialog(self.window, type=gtk.MESSAGE_WARNING, buttons=gtk.BUTTONS_YES_NO, message_format="Are you sure you want to delete the %(preset)s preset?" % { "preset": device.name + " - " + preset.name }) response = dialog.run() dialog.destroy() if response == gtk.RESPONSE_YES: devices = arista.presets.get() name = ".".join(os.path.basename(device.filename).split(".")[:-1]) if len(device.presets) == 1: # This was the only preset, so delete the file del devices[name] if os.access(device.filename, os.W_OK): os.unlink(device.filename) else: del device.presets[preset.name] if not os.access(device.filename, os.W_OK): device.filename = arista.utils.get_write_path("presets", os.path.basename(device.filename)) device.save() self.presets_model.remove(model.convert_iter_to_child_iter(iter)) def on_info_clicked(self, widget): """ Display an edit dialog allowing you to view info about and manage device presets. """ model, iter = self.presets_view.get_selection().get_selected() device, preset = model.get_value(iter, 2) dialog = PresetDialog(preset) dialog.connect("changed", self.preset_changed, "text", model.convert_iter_to_child_iter(iter)) dialog.connect("icon-changed", self.preset_changed, "icon", model.convert_iter_to_child_iter(iter)) def preset_changed(self, dialog, type, iter): model = self.presets_view.get_model().get_model() device, preset = dialog.preset.device, dialog.preset # Update if type == "icon": model.set_value(iter, 0, _get_icon_pixbuf(preset.icon or device.icon, 32, 32)) elif type == "text": model.set_value(iter, 1, "%s - %s\nUp to %sx%s" % (device.name, preset.name, preset.vcodec.width[1], preset.vcodec.height[1])) class PresetDialog(gobject.GObject): """ Arista Preset Dialog ==================== A dialog for viewing and editing preset properties. """ __gsignals__ = { "changed": (gobject.SIGNAL_RUN_FIRST, None, ()), "icon-changed": (gobject.SIGNAL_RUN_FIRST, None, ()), } CONTAINER_LIST = ["WebM", "MP4", "MOV", "AVI", "MPEG PS", "MPEG TS", "DVD (VOB)", "Matroska", "Ogg", "FLV"] MUXER_TO_CONTAINER = { "webmmux": 0, "ffmux_webm": 0, "mp4mux": 1, "ffmux_mp4": 1, "qtmux": 2, "ffmux_mov": 2, "avimux": 3, "ffmux_avi": 3, "mpegpsmux": 4, "mpegtsmux": 5, "ffmux_mpegts": 5, "ffmux_vob": 6, "ffmux_dvd": 6, "matroskamux": 7, "ffmux_matroska": 7, "oggmux": 8, "ffmux_ogg": 8, "flvmux": 9, "ffmux_flv": 9, } CONTAINER_TO_MUXER = { "WebM": "webmmux", "MP4": "mp4mux", "MOV": "qtmux", "AVI": "avimux", "MPEG PS": "mpegpsmux", "MPEG TS": "mpegtsmux", "DVD (VOB)": "ffmux_dvd", "Matroska": "matroskamux", "Ogg": "oggmux", "FLV": "flvmux", } ENCODER_TO_VCODEC = { "vp8enc": "VP8", "x264enc": "H.264 / AVC", "xvidenc": "MPEG4 / DivX / XviD", "mpeg2enc": "MPEG2", "theoraenc": "Theora", "ffenc_flv": "FLV / Spark / H.263", } VCODEC_TO_ENCODER = { "VP8": "vp8enc", "H.264 / AVC": "x264enc", "MPEG4 / DivX / XviD": "xvidenc", "MPEG2": "mpeg2enc", "Theora": "theoraenc", "FLV / Spark / H.263": "ffenc_flv", } ENCODER_TO_ACODEC = { "faac": "AAC", "lame": "MP3", "vorbisenc": "Vorbis", "ffenc_ac3": "AC-3", "flacenc": "FLAC", "twolame": "MP2", } ACODEC_TO_ENCODER = { "Vorbis": "vorbisenc", "AAC": "faac", "MP3": "lame", "AC-3": "ffenc_ac3", "FLAC": "flacenc", "MP2": "twolame", } EFFECT_LIST = ["None", "Rotate clockwise", "Rotate counter-clockwise", "Flip vertical", "Flip horizontal"] EFFECT_TO_ELEMENTS = { "None": "", "Rotate clockwise": "videoflip method=clockwise", "Rotate counter-clockwise": "videoflip method=counterclockwise", "Flip vertical": "videoflip method=vertical-flip", "Flip horizontal": "videoflip method=horizontal-flip", } ELEMENTS_TO_EFFECT = { "": 0, "videoflip method=clockwise": 1, "videoflip method=1": 1, "videoflip method=counterclockwise": 2, "videoflip method=3": 2, "videoflip method=vertical-flip": 3, "videoflip method=5": 3, "videoflip method=horizontal-flip": 4, "videoflip method=4": 4, } def __init__(self, preset): gobject.GObject.__init__(self) ui_path = arista.utils.get_path("ui", "preset.ui") self.builder = gtk.Builder() self.builder.add_from_file(ui_path) self.window = self.builder.get_object("preset_dialog") self.image = self.builder.get_object("image_icon") self.short_name = self.builder.get_object("entry_short_name") self.description = self.builder.get_object("entry_description") self.make = self.builder.get_object("entry_make") self.model = self.builder.get_object("entry_model") self.preset_name = self.builder.get_object("entry_preset") self.author_name = self.builder.get_object("entry_author_name") self.author_email = self.builder.get_object("entry_author_email") self.version = self.builder.get_object("entry_version") self.container = self.builder.get_object("combo_container") self.extension = self.builder.get_object("entry_extension") self.video_codec = self.builder.get_object("combo_video_codec") self.video_options = self.builder.get_object("entry_video_options") self.width_min = self.builder.get_object("spin_width_min") self.width_max = self.builder.get_object("spin_width_max") self.height_min = self.builder.get_object("spin_height_min") self.height_max = self.builder.get_object("spin_height_max") self.framerate_min = self.builder.get_object("spin_framerate_min") self.framerate_max = self.builder.get_object("spin_framerate_max") self.effect = self.builder.get_object("combo_effect") self.audio_codec = self.builder.get_object("combo_audio_codec") self.audio_options = self.builder.get_object("entry_audio_options") self.channels_min = self.builder.get_object("spin_channels_min") self.channels_max = self.builder.get_object("spin_channels_max") # Set general values if preset.icon or preset.device.icon: width, height = gtk.icon_size_lookup(gtk.ICON_SIZE_DIALOG) image = _get_icon_pixbuf(preset.icon or preset.device.icon, width, height) if image: self.image.set_from_pixbuf(image) self.short_name.set_text(".".join(os.path.basename(preset.device.filename).split(".")[:-1])) self.description.set_text(preset.description or preset.device.description) self.make.set_text(preset.device.make) self.model.set_text(preset.device.model) self.preset_name.set_text(preset.name) self.author_name.set_text(preset.author.name or preset.device.author.name) self.author_email.set_text(preset.author.email or preset.device.author.email) self.version.set_text(preset.version or preset.device.version) self.extension.set_text(preset.extension or preset.device.extension) # Setup list models for combo boxes cstore = gtk.ListStore(gobject.TYPE_STRING) self.container.set_model(cstore) text_cell = gtk.CellRendererText() self.container.pack_start(text_cell, True) self.container.add_attribute(text_cell, 'text', 0) # Setup possible containers for attr in self.CONTAINER_LIST: iter = cstore.append() cstore.set_value(iter, 0, attr) vstore = gtk.ListStore(gobject.TYPE_STRING) self.video_codec.set_model(vstore) text_cell = gtk.CellRendererText() self.video_codec.pack_start(text_cell, True) self.video_codec.add_attribute(text_cell, 'text', 0) astore = gtk.ListStore(gobject.TYPE_STRING) self.audio_codec.set_model(astore) text_cell = gtk.CellRendererText() self.audio_codec.pack_start(text_cell, True) self.audio_codec.add_attribute(text_cell, 'text', 0) # Set active container self.container.set_active(self.MUXER_TO_CONTAINER.get(preset.container, 0)) # Update codec combos to show valid codecs for selected container self.update_codecs(self.CONTAINER_LIST[self.MUXER_TO_CONTAINER[preset.container]]) for widget, codec in [(self.video_codec, self.ENCODER_TO_VCODEC[preset.vcodec.name]), (self.audio_codec, self.ENCODER_TO_ACODEC[preset.acodec.name])]: for i, row in enumerate(widget.get_model()): if row[0] == codec: widget.set_active(i) # Set codec values self.video_options.set_text(";".join(preset.vcodec.passes)) self.width_min.set_value(preset.vcodec.width[0]) self.width_max.set_value(preset.vcodec.width[1]) self.height_min.set_value(preset.vcodec.height[0]) self.height_max.set_value(preset.vcodec.height[1]) self.framerate_min.set_value(preset.vcodec.rate[0]) self.framerate_max.set_value(preset.vcodec.rate[1]) self.audio_options.set_text(";".join(preset.acodec.passes)) self.channels_min.set_value(preset.acodec.channels[0]) self.channels_max.set_value(preset.acodec.channels[1]) # Setup effects estore = gtk.ListStore(gobject.TYPE_STRING) self.effect.set_model(estore) text_cell = gtk.CellRendererText() self.effect.pack_start(text_cell, True) self.effect.add_attribute(text_cell, 'text', 0) for attr in self.EFFECT_LIST: iter = estore.append() estore.set_value(iter, 0, attr) effect = self.ELEMENTS_TO_EFFECT.get(preset.vcodec.transform, 5) # Handle custom effects we don't recognize if effect == 5: iter = estore.append() estore.set_value(iter, 0, "Custom") self.effect.set_sensitive(False) self.effect.set_active(effect) self.builder.connect_signals(self) self.preset = preset self.window.show_all() def on_destroy(self, widget): _log.debug(_("Saving preset to disk...")) self.preset.device.save() def on_close_clicked(self, widget): self.window.destroy() def on_export_clicked(self, widget): if len(self.preset.device.presets) > 1: dialog = gtk.MessageDialog(self.window, buttons=gtk.BUTTONS_YES_NO, message_format=_("You are about to export %(count)d presets with the short name '%(shortname)s'. If you want to only export %(name)s then please first change the short name. Do you want to continue?") % { "count": len(self.preset.device.presets), "shortname": self.preset.device.short_name, "name": self.preset.device.name + " - " + self.preset.name }) response = dialog.run() dialog.destroy() if response == gtk.RESPONSE_NO: return dialog = gtk.FileChooserDialog(title=_("Export Preset"), action=gtk.FILE_CHOOSER_ACTION_SAVE, buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT)) dialog.set_property("local-only", False) filter = gtk.FileFilter() filter.set_name("Arista Presets") filter.add_pattern("*.bz2") dialog.set_filter(filter) dialog.set_current_folder(os.path.expanduser(os.path.join("~", "Desktop"))) dialog.set_current_name(self.preset.device.short_name + ".tar.bz2") response = dialog.run() dialog.hide() if response == gtk.RESPONSE_ACCEPT: filename = dialog.get_filename() if not filename.endswith(".tar.bz2"): filename += ".tar.bz2" self.preset.device.export(filename) dialog.destroy() if len(self.preset.device.presets) > 1: msg = _("Export of '%(shortname)s' with %(count)d presets complete.") % { "shortname": self.preset.device.short_name, "count": len(self.preset.device.presets), } else: msg = _("Export of '%(name)s' complete.") % { "name": self.preset.device.name + " - " + self.preset.name } dialog = gtk.MessageDialog(self.window, buttons=gtk.BUTTONS_OK, message_format=msg) dialog.run() dialog.destroy() def on_icon_clicked(self, widget): # Let user select new image, copy to presets folder, possibly rename client = gconf.client_get_default() dialog = gtk.FileChooserDialog(title=_("Choose Preset Icon..."), buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OPEN, gtk.RESPONSE_ACCEPT)) dialog.set_property("local-only", False) dialog.set_current_folder(os.path.expanduser(os.path.join("~", "Pictures"))) filter = gtk.FileFilter() filter.set_name("Image Files") filter.add_pattern("*.png") filter.add_pattern("*.svg") dialog.set_filter(filter) response = dialog.run() dialog.hide() if response == gtk.RESPONSE_ACCEPT: filename = dialog.get_filename() ext = filename.split(".")[-1] output = arista.utils.get_write_path("presets", self.preset.slug + "." + ext) shutil.copy(filename, output) self.preset.icon = "file://" + self.preset.slug + "." + ext width, height = gtk.icon_size_lookup(gtk.ICON_SIZE_DIALOG) image = _get_icon_pixbuf(self.preset.icon, width, height) self.image.set_from_pixbuf(image) self.emit("icon-changed") def on_shortname_changed(self, widget, arg): # Change the filename, update icon filename if present, etc # This can actually be used to group multiple presets into a single # file. Hopefully that's not too confusing. old_name = ".".join(os.path.basename(self.preset.device.filename).split(".")[:-1]) new_name = widget.get_text() if new_name: old_filename = self.preset.device.filename devices = arista.presets.get() if new_name in devices: # We are moving this preset into an existing device devices[new_name].presets[self.preset.name] = self.preset else: # We are creating a new device file devices[new_name] = arista.presets.Device(**{ "make": devices[old_name].make, "model": devices[old_name].model, "description": devices[old_name].description, "author": arista.presets.Author(**{ "name": devices[old_name].author.name, "email": devices[old_name].author.email, }), "version": devices[old_name].version, "presets": { self.preset.name: self.preset, }, "icon": devices[old_name].icon, "default": self.preset.name, }) devices[new_name].filename = arista.utils.get_write_path("presets", new_name + ".json") self.preset.device = devices[new_name] self.make.set_text(self.preset.device.make) self.model.set_text(self.preset.device.model) if len(devices[old_name].presets) == 1: # This was the only preset, so delete the file del devices[old_name] if os.access(old_filename, os.W_OK): os.unlink(old_filename) else: del devices[old_name].presets[self.preset.name] if not os.access(old_filename, os.W_OK): devices[old_name].filename = arista.utils.get_write_path("presets", os.path.basename(old_filename)) devices[old_name].save() def on_description_changed(self, widget): self.preset.description = widget.get_text() def on_make_changed(self, widget): self.preset.device.make = widget.get_text() self.emit("changed") def on_model_changed(self, widget): self.preset.device.model = widget.get_text() self.emit("changed") def on_name_changed(self, widget, arg): # Update device presets dictionary old_name = self.preset.name new_name = widget.get_text() if new_name: # Update default if needed if self.preset.device.default == old_name: self.preset.device.default = new_name # Update presets map del self.preset.device.presets[old_name] self.preset.device.presets[new_name] = self.preset # Set name on preset itself self.preset.name = new_name self.emit("changed") def on_author_name_changed(self, widget): self.preset.author.name = widget.get_text() def on_author_email_changed(self, widget): self.preset.author.email = widget.get_text() def on_version_changed(self, widget): self.preset.version = widget.get_text() def on_container_changed(self, widget): iter = self.container.get_active_iter() container = self.container.get_model().get_value(iter, 0) self.preset.container = self.CONTAINER_TO_MUXER[container] self.update_codecs(container) self.extension.set_text({ "MPEG PS": "mpg", "MPEG TS": "ts", "DVD (VOB)": "vob", "Matroska": "mkv" }.get(container, container.lower())) def update_codecs(self, container): vcodecs = { "WebM": ["VP8"], "MP4": ["H.264 / AVC", "MPEG4 / DivX / XviD"], "MOV": ["H.264 / AVC", "MPEG4 / DivX / XviD"], "AVI": ["H.264 / AVC", "MPEG4 / DivX / XviD", "VP8"], "MPEG PS": ["H.264 / AVC", "MPEG4 / DivX / XviD", "MPEG2"], "MPEG TS": ["H.264 / AVC", "MPEG4 / DivX / XviD", "MPEG2"], "DVD (VOB)": ["MPEG2"], "Matroska": ["H.264 / AVC", "MPEG4 / DivX / XviD", "MPEG2", "VP8", "Theora"], "Ogg": ["Theora"], "FLV": ["H.264 / AVC", "FLV / Spark / H.263"], }.get(container, ["No known codecs"]) acodecs = { "WebM": ["Vorbis"], "MP4": ["AAC", "MP3"], "MOV": ["AAC", "MP3"], "AVI": ["AAC", "MP3", "Vorbis"], "MPEG PS": ["AAC", "MP3"], "MPEG TS": ["AAC", "MP3"], "DVD (VOB)": ["MP2", "AC-3"], "Matroska": ["AAC", "MP3", "Vorbis", "FLAC"], "Ogg": ["Vorbis", "FLAC"], "FLV": ["MP3"], }.get(container, ["No known codecs"]) for widget, codecs in [(self.video_codec, vcodecs), (self.audio_codec, acodecs)]: iter = widget.get_active_iter() model = widget.get_model() selected = iter and model.get_value(iter, 0) or "" new_selected = 0 model.clear() for i, codec in enumerate(codecs): iter = model.append() model.set_value(iter, 0, codec) if codec == selected: new_selected = i widget.set_active(new_selected) def on_extension_changed(self, widget): self.preset.extension = widget.get_text() def on_vcodec_changed(self, widget): iter = self.video_codec.get_active_iter() vcodec = iter and self.video_codec.get_model().get_value(iter, 0) or None if vcodec and self.ENCODER_TO_VCODEC[self.preset.vcodec.name] != vcodec: self.preset.vcodec.name = self.VCODEC_TO_ENCODER[vcodec] self.video_options.set_text({ "VP8": "quality=6 threads=%(threads)s speed=2", "H.264 / AVC": "pass=qual quantizer=21 me=umh subme=6 ref=3 threads=0", "MPEG4 / DivX / XviD": "pass=quant quantizer=5 max-bframes=2 trellis=true", "MPEG2": "format=3 quantisation=5", "FLV / Spark / H.263": "bitrate=512000", }.get(vcodec, "")) def on_video_options_changed(self, widget): self.preset.vcodec.passes = widget.get_text().split(";") def on_width_min_changed(self, widget): value = int(widget.get_value()) self.preset.vcodec.width[0] = value if self.width_max.get_value() < value: self.width_max.set_value(value) def on_width_max_changed(self, widget): value = int(widget.get_value()) self.preset.vcodec.width[1] = value if self.width_min.get_value() > value: self.width_min.set_value(value) self.emit("changed") def on_height_min_changed(self, widget): value = int(widget.get_value()) self.preset.vcodec.height[0] = value if self.height_max.get_value() < value: self.height_max.set_value(value) def on_height_max_changed(self, widget): value = int(widget.get_value()) self.preset.vcodec.height[1] = value if self.height_min.get_value() > value: self.height_min.set_value(value) self.emit("changed") def on_framerate_min_changed(self, widget): value = widget.get_value() self.preset.vcodec.rate[0] = value if self.framerate_max.get_value() < value: self.framerate_max.set_value(value) def on_framerate_max_changed(self, widget): value = widget.get_value() self.preset.vcodec.framerate[1] = value if self.framerate_min.get_value() > value: self.framerate_min.set_value(value) def on_effect_changed(self, widget): iter = self.effect.get_active_iter() effect = iter and self.effect.get_model().get_value(iter, 0) or None if effect: self.preset.vcodec.transform = self.EFFECT_TO_ELEMENTS[effect] def on_acodec_changed(self, widget): iter = self.audio_codec.get_active_iter() acodec = iter and self.audio_codec.get_model().get_value(iter, 0) or None if acodec and self.ENCODER_TO_ACODEC[self.preset.acodec.name] != acodec: self.preset.acodec.name = self.ACODEC_TO_ENCODER[acodec] self.audio_options.set_text({ "Vorbis": "quality=0.5", "AAC": "profile=4 bitrate=128000", "MP3": "vbr=new vbr-quality=4", "FLAC": "quality=6", "MP2": "bitrate=192", "AC-3": "bitrate=128000", }.get(acodec, "")) def on_audio_options_changed(self, widget): self.preset.acodec.passes = widget.get_text().split(";") def on_channels_min_changed(self, widget): value = widget.get_value() self.preset.acodec.channels[0] = value if self.channels_max.get_value() < value: self.channels_max.set_value(value) def on_channels_max_changed(self, widget): value = widget.get_value() self.preset.acodec.channels[1] = value if self.channels_min.get_value() > value: self.channels_min.set_value(value) def on_vcodec_help_clicked(self, widget): iter = self.video_codec.get_active_iter() vcodec = iter and self.video_codec.get_model().get_value(iter, 0) or None self.on_codec_help(vcodec) def on_acodec_help_clicked(self, widget): iter = self.audio_codec.get_active_iter() acodec = iter and self.audio_codec.get_model().get_value(iter, 0) or None self.on_codec_help(acodec) def on_codec_help(self, codec): try: html_path = arista.utils.get_path("help", "%s.html" % codec.split(" ")[0].lower()) except IOError: html_path = arista.utils.get_path("help", "404.html") html_path = "file://" + html_path if webkit: CodecHelpDialog(html_path) else: webbrowser.open(html_path) gobject.type_register(PresetDialog) class CodecHelpDialog(object): """ Arista Codec Help Dialog ======================== A dialog showing various options for codecs. """ def __init__(self, html_path): ui_path = arista.utils.get_path("ui", "codec.ui") self.builder = gtk.Builder() self.builder.add_from_file(ui_path) self.window = self.builder.get_object("codec_dialog") # Add web view to dialog scrolled_window = self.builder.get_object("scrolledwindow") self.webkit = webkit.WebView() scrolled_window.add(self.webkit) # Load documentation for specific codec self.webkit.load_uri(html_path) self.builder.connect_signals(self) self.window.show_all() def on_close(self, widget): self.window.destroy() class AboutDialog(object): """ Arista About Dialog =================== A simple about dialog. """ def __init__(self): ui_path = arista.utils.get_path("ui", "about.ui") self.builder = gtk.Builder() self.builder.add_from_file(ui_path) self.window = self.builder.get_object("about_dialog") self.builder.connect_signals(self) self.window.show_all() def on_close(self, widget, response): """ Close was clicked, remove the window. """ self.window.destroy() if __name__ == "__main__": parser = OptionParser(usage = _("%prog [options] [file1 file2 file3 ...]"), version = _("Arista Transcoder GUI " + \ arista.__version__)) parser.add_option("-v", "--verbose", dest = "verbose", action = "store_true", default = False, help = _("Show verbose (debug) output")) parser.add_option("-p", "--preset", dest = "preset", default = None, help = _("Preset to encode to [default]")) parser.add_option("-d", "--device", dest = "device", default = "computer", help = _("Device to encode to [computer]")) parser.add_option("-s", "--simple", dest = "simple", action = "store_true", default = False, help = _("Simple UI")) options, args = parser.parse_args() options.files = args logging.basicConfig(level = options.verbose and logging.DEBUG \ or logging.INFO, format = "%(name)s [%(lineno)d]: " \ "%(levelname)s %(message)s") # FIXME: OMGWTFBBQ gstreamer hijacks sys.argv unless we import AFTER we use # the optionparser stuff above... # This seems to be fixed http://bugzilla.gnome.org/show_bug.cgi?id=425847 # but in my testing it is NOT. Leaving hacks for now. import gst import gst.pbutils arista.init() lc_path = arista.utils.get_path("locale", default = "") if lc_path: if hasattr(gettext, "bindtextdomain"): gettext.bindtextdomain("arista", lc_path) if hasattr(locale, "bindtextdomain"): locale.bindtextdomain("arista", lc_path) if hasattr(gettext, "bind_textdomain_codeset"): gettext.bind_textdomain_codeset("arista", "UTF-8") if hasattr(locale, "bind_textdomain_codeset"): locale.bind_textdomain_codeset("arista", "UTF-8") if hasattr(gettext, "textdomain"): gettext.textdomain("arista") if hasattr(locale, "textdomain"): locale.textdomain("arista") gtk.gdk.threads_init() # Set the default icon for all windows icon_path = arista.utils.get_path("ui", "icon.svg") gtk.window_set_default_icon_from_file(icon_path) main = MainWindow(options) # Renice by default to sort of background transcoding if hasattr(os, "nice"): _log.debug("Increasing niceness by 5...") os.nice(5) gtk.main() arista-0.9.7/ui/0000755000175000017500000000000011577653227012774 5ustar dandan00000000000000arista-0.9.7/ui/preset.ui0000644000175000017500000017025411575156315014640 0ustar dandan00000000000000 1 6 2 1 2 1 6 1 2 1 60 30 1 5 1 60 10 1 5 180 1080 1080 16 128 180 1080 180 16 128 320 1920 1920 16 128 320 1920 320 16 128 True False gtk-save-as True False gtk-save-as True False gtk-save-as False 5 Preset Properties center dialog True False 6 True True True False 12 12 True False True True True False True False gtk-add 6 False False 0 False False 0 True False 10 2 5 5 True False 0 Short name: GTK_FILL GTK_FILL True False 0 Version: 7 8 GTK_FILL GTK_FILL True False 0 Author email: 6 7 GTK_FILL GTK_FILL True False 0 Author name: 5 6 GTK_FILL GTK_FILL True False 0 Model: 3 4 GTK_FILL GTK_FILL True False 0 Make: 2 3 GTK_FILL GTK_FILL True False 0 Description: 1 2 GTK_FILL GTK_FILL True False 0 Preset name: 4 5 GTK_FILL GTK_FILL True True True False False True True 1 2 GTK_FILL True True True False False True True 1 2 1 2 GTK_FILL True True True False False True True 1 2 2 3 GTK_FILL True True True False False True True 1 2 3 4 GTK_FILL True True True False False True True 1 2 4 5 GTK_FILL True True True False False True True 1 2 5 6 GTK_FILL True True True False False True True 1 2 6 7 GTK_FILL True True True False False True True 1 2 7 8 GTK_FILL True False 0 Container: 8 9 GTK_FILL GTK_FILL True False 1 2 8 9 GTK_FILL True False 0 Extension: 9 10 GTK_FILL GTK_FILL True True False False True True 1 2 9 10 GTK_FILL True True 1 True False General False True False 12 7 2 5 5 True False 0 Video codec: GTK_FILL GTK_FILL True False 1 2 GTK_FILL True False 0 Codec options: 1 2 GTK_FILL GTK_FILL True False 2 True True True False False True True True True 0 True True True False True False gtk-help False True 1 1 2 1 2 GTK_FILL True False 0 Width: 2 3 GTK_FILL GTK_FILL True False 5 True True True False False True True adjustment_width_min False True 0 True False to False True 1 True True True False False True True adjustment_width_max False True 2 1 2 2 3 GTK_FILL GTK_FILL True False 0 Framerate: 4 5 GTK_FILL GTK_FILL True False 0 Height: 3 4 GTK_FILL GTK_FILL True False 5 True True True False False True True adjustment_height_min False True 0 True False to False True 1 True True True False False True True adjustment_height_max False True 2 1 2 3 4 GTK_FILL GTK_FILL True False 0 Effect: 5 6 GTK_FILL GTK_FILL True False 1 2 5 6 GTK_FILL True False 5 True True True False False True True adjustment_framerate_min 2 False True 0 True False to False True 1 True True True False False True True adjustment_framerate_max 2 False True 2 1 2 4 5 GTK_FILL GTK_FILL 1 True False Video Options 1 False True False 12 5 2 5 5 True False 0 Audio codec: GTK_FILL GTK_FILL True False 1 2 GTK_FILL True False 0 Codec options: 1 2 GTK_FILL GTK_FILL True False 2 True True True False False True True True True 0 True True True False True False gtk-help False True 1 1 2 1 2 GTK_FILL True False 0 Channels: 2 3 GTK_FILL GTK_FILL True False 5 True True 1 True False False True True adjustment_channels_min True False True 0 True False to False True 1 True True 1 True False False True True adjustment_channels_max True False True 2 1 2 2 3 GTK_FILL GTK_FILL 2 True False Audio Options 2 False True True 0 True False 5 end Export True True True False image_save_as2 False False 1 gtk-close True True True False True False False 2 False True 1 arista-0.9.7/ui/icon-small.svg0000644000175000017500000010673211576026167015560 0ustar dandan00000000000000 image/svg+xml arista-0.9.7/ui/add.ui0000644000175000017500000003247111575155451014064 0ustar dandan00000000000000 350 350 False 5 Create Conversion center True False 6 True False 2 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 3 2 5 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 Source: GTK_FILL True False 0 Destination: 1 2 GTK_FILL True False 0 Search: 2 3 GTK_FILL GTK_FILL True True True False False True True 1 2 2 3 True False select-folder Select A Destination... 1 2 1 2 GTK_FILL GTK_FILL False True 0 True True automatic automatic True True True True 1 True True 0 True False True True True Add a new preset False True False gtk-add False True 0 True True True Delete preset False True False gtk-delete False True 1 True False end gtk-cancel True True True False True False False 0 Create True True True False False False 1 True True end 2 True False False True 2 3 True True True View or edit preset False True False gtk-info False True 4 False True 1 arista-0.9.7/ui/props.ui0000644000175000017500000002013011576211121014450 0ustar dandan00000000000000 350 5 Source Properties center normal False True vertical 2 True vertical True 0 none True 12 True 2 2 4 5 True False Select Subtitles 1 2 True 0 Subtitles to render: True 0 Font to render: 1 2 True True True 1 2 1 2 True <b>Subtitles</b> True False 0 True 0 none True 12 Force deinterlacing of source True True False True True <b>Deinterlacing</b> True False 1 1 True end gtk-close True True True True False False 1 False end 0 button1 arista-0.9.7/ui/icon-badge.svg0000644000175000017500000013744611576026254015515 0ustar dandan00000000000000 image/svg+xml arista-0.9.7/ui/icon.svg0000644000175000017500000010672711576026113014445 0ustar dandan00000000000000 image/svg+xml arista-0.9.7/ui/prefs.ui0000644000175000017500000004214211576244756014457 0ustar dandan00000000000000 1 15 4 1 False 5 Arista Preferences center normal True False 2 True False end gtk-close True True True False True False False 0 False True end 0 True True True False 5 6 True False 0 none True False 6 6 12 Search for optical media and capture devices True True False False True True True False <b>Sources</b> True False True 0 True False 0 none True False 6 6 12 True False 6 Show live preview during transcoding True True False False True True True True 0 True False True False 0 5 Live preview framerate: False True 0 True True False False True True adjustment1 False True 1 True True 1 True False <b>Live Preview</b> True False True 1 True False 0 none True False 6 6 12 True False 6 True False 0 0 All device presets that ship with Arista Transcoder can be reset to their original settings. Warning: this will potentially overwrite user modifications. True True 0 True False Reset Presets True True True False False True end 1 True True 1 True False <b>Device Preset Reset</b> True True True 2 True False General False True True 1 button1 arista-0.9.7/ui/logo.svg0000644000175000017500000100071411576146025014450 0ustar dandan00000000000000 image/svg+xml arista-0.9.7/ui/main.ui0000644000175000017500000005220311576733237014260 0ustar dandan00000000000000 True False gtk-add 1 True False gtk-go-down True False gtk-connect 1 False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Arista Transcoder center True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False _File True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK _Create Conversion... True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True image1 False _Get New Presets... True False False True image2 False _Install Device Preset... True False False True image5 False True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK gtk-quit True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False _Edit True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK gtk-preferences True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False _View True True False True False False Show _Toolbar True True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False _Help True True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK gtk-about True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK False True True False True 0 True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK True False GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Add a file to be transcoded False True Create Conversion gtk-add False True True False Download new presets from the web False Get Presets True gtk-go-down False True True False Preferences False Preferences True gtk-preferences False True False True 1 True False True False 0 none True False 320 180 True False True True 0 True False True False True Idle True True 5 0 gtk-media-pause True True True False True False True 1 gtk-media-stop True True True False True False True 2 False True 5 end 1 True False 5 <b>Live Preview</b> True True True 5 0 True True 2 arista-0.9.7/ui/about.ui0000644000175000017500000000434311517343530014434 0ustar dandan00000000000000 5 center normal Arista Transcoder 0.9.7 Copyright 2008 - 2011 Daniel G. Taylor A multimedia transcoder for the GNOME desktop. http://www.transcoder.org/ Arista homepage Arista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html Daniel G. Taylor <dan@programmer-art.org> Arista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/arista Daniel G. Taylor <dan@programmer-art.org> Sibrand Hoekstra <sibrand@gmail.com> Various icons made by Tango project contributors icon.svg True 2 True end False end 0 arista-0.9.7/ui/codec.ui0000644000175000017500000000557411575410270014406 0ustar dandan00000000000000 400 300 False 6 Codec Help center dialog True False 6 True False end gtk-close True True True False True False False 1 False True end 0 True True automatic automatic in True True 1 arista-0.9.7/PKG-INFO0000644000175000017500000000552211577653227013460 0ustar dandan00000000000000Metadata-Version: 1.1 Name: arista Version: 0.9.7 Summary: An easy multimedia transcoder for GNOME Home-page: http://www.transcoder.org/ Author: Daniel G. Taylor Author-email: dan@programmer-art.org License: UNKNOWN Download-URL: http://programmer-art.org/media/releases/arista-transcoder/arista-0.9.7.tar.gz Description: Overview ======== An easy to use multimedia transcoder for the GNOME Desktop. Arista focuses on being easy to use by making the complex task of encoding for various devices simple. Pick your input, pick your target device, choose a file to save to and go. Arista has been in development since early 2008 as a side project and was just recently polished to make it release-worthy. The 0.8 release is the first release available to the public. Please see http://github.com/danielgtaylor/arista for information on helping out. Features --------- * Presets for Android, iPod, computer, DVD player, PSP, and more * Live preview to see encoded quality * Automatically discover available DVD drives and media * Rip straight from DVD media easily * Automatically discover and record from Video4Linux devices * Support for H.264, WebM, FLV, Ogg, DivX and more * Batch processing of entire directories easily * Simple terminal client for scripting * Nautilus extension for right-click file conversion Requirements --------------- Arista is written in Python and requires the bindings for GTK+ 2.16 or newer, GStreamer, GConf, GObject, Cairo, and udev. If you are an Ubuntu user this means you need to be using at least Ubuntu 9.04 (Jaunty). The GStreamer plugins required depend on the presets available, but at this time you should have gst-plugins-good, gst-plugins-bad, gst-plugins-ugly, and gst-ffmpeg. If you are on Ubuntu don't forget to install the multiverse packages. Note: WebM support requires at least GStreamer's gst-plugins-bad-0.10.19. Keywords: gnome gtk gstreamer transcode multimedia Platform: Platform Independent Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Console Classifier: Environment :: X11 Applications :: GTK Classifier: Environment :: X11 Applications :: Gnome Classifier: Intended Audience :: End Users/Desktop Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL) Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Topic :: Multimedia :: Sound/Audio :: Conversion Classifier: Topic :: Multimedia :: Video :: Conversion Classifier: Topic :: Utilities Requires: gtk(>=2.16) Requires: gst(>=10.22) Requires: gconf Requires: cairo Requires: udev Provides: arista arista-0.9.7/LICENSE0000644000175000017500000006350211506140057013352 0ustar dandan00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! arista-0.9.7/arista-nautilus.py0000644000175000017500000001267411567744471016071 0ustar dandan00000000000000""" Arista Transcoder Nautilus Extension ==================================== Adds the ability to create conversions of media files directly in your file browser. Installation ------------ In order to use this extension, it must be installed either to the global nautilus extensions directory or ~/.nautilus/python-extensions/ for each user that wishes to use it. Note that this script will not run outside of Nautilus! License ------- Copyright 2011 Daniel G. Taylor This file is part of Arista. Arista is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the License, or (at your option) any later version. Arista is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with Arista. If not, see . """ import arista; arista.init() import gettext import nautilus import os _ = gettext.gettext SUPPORTED_FORMATS = [ # Found in /usr/share/mime "audio/ac3", "audio/AMR", "audio/AMR-WB", "audio/annodex", "audio/basic", "audio/midi", "audio/mp2", "audio/mp4", "audio/mpeg", "audio/ogg", "audio/prs.sid", "audio/vnd.rn-realaudio", "audio/x-adpcm", "audio/x-aifc", "audio/x-aiff", "audio/x-aiffc", "audio/x-ape", "audio/x-flac", "audio/x-flac+ogg", "audio/x-gsm", "audio/x-it", "audio/x-m4b", "audio/x-matroska", "audio/x-minipsf", "audio/x-mod", "audio/x-mpegurl", "audio/x-ms-asx", "audio/x-ms-wma", "audio/x-musepack", "audio/x-psf", "audio/x-psflib", "audio/x-riff", "audio/x-s3m", "audio/x-scpls", "audio/x-speex", "audio/x-speex+ogg", "audio/x-stm", "audio/x-tta", "audio/x-voc", "audio/x-vorbis+ogg", "audio/x-wav", "audio/x-wavpack", "audio/x-wavpack-correction", "audio/x-xi", "audio/x-xm", "audio/x-xmf", "video/3gpp", "video/annodex", "video/dv", "video/isivideo", "video/mp2t", "video/mp4", "video/mpeg", "video/ogg", "video/quicktime", "video/vivo", "video/vnd.rn-realvideo", "video/wavelet", "video/x-anim", "video/x-flic", "video/x-flv", "video/x-matroska", "video/x-mng", "video/x-ms-asf", "video/x-msvideo", "video/x-ms-wmv", "video/x-nsv", "video/x-ogm+ogg", "video/x-sgi-movie", "video/x-theora+ogg", ] class MediaConvertExtension(nautilus.MenuProvider): """ An extension to provide an extra right-click menu for media files to convert them to any installed device preset. """ def __init__(self): # Apparently required or some versions of nautilus crash! pass def get_file_items(self, window, files): """ This method is called anytime one or more files are selected and the right-click menu is invoked. If we are looking at a media file then let's show the new menu item! """ # Check if this is actually a media file and it is local for f in files: if f.get_mime_type() not in SUPPORTED_FORMATS: return if not f.get_uri().startswith("file://"): return # Create the new menu item, with a submenu of devices each with a # submenu of presets for that particular device. menu = nautilus.MenuItem('Nautilus::convert_media', _('Convert for device'), _('Convert this media using a device preset')) devices = nautilus.Menu() menu.set_submenu(devices) presets = arista.presets.get().items() for shortname, device in sorted(presets, lambda x,y: cmp(x[1].name, y[1].name)): item = nautilus.MenuItem("Nautilus::convert_to_%s" % shortname, device.name, device.description) presets = nautilus.Menu() item.set_submenu(presets) for preset_name, preset in device.presets.items(): preset_item = nautilus.MenuItem( "Nautilus::convert_to_%s_%s" % (shortname, preset.name), preset.name, "%s: %s" % (device.name, preset.name)) preset_item.connect("activate", self.callback, [f.get_uri()[7:] for f in files], shortname, preset.name) presets.append_item(preset_item) devices.append_item(item) return menu, def callback(self, menu, files, device_name, preset_name): """ Called when a menu item is clicked. Start a transcode job for the selected device and preset, and show the user the progress. """ command = "arista-gtk --simple -d %s -p \"%s\" %s &" % (device_name, preset_name, " ".join(["\"%s\"" % f for f in files])) os.system(command) arista-0.9.7/presets/0000755000175000017500000000000011577653227014044 5ustar dandan00000000000000arista-0.9.7/presets/apple.json0000644000175000017500000001262011576657255016045 0ustar dandan00000000000000{ "version": "1.1", "description": "H.264/AAC for Apple iPad / iPod / iPhone", "author": { "name": "Daniel G. Taylor", "email": "dan@programmer-art.org" }, "default": "iPhone / iPod Touch", "make": "Apple", "presets": [ { "vcodec": { "passes": [ "pass=qual quantizer=21 me=umh subme=6 ref=3 profile=baseline threads=0" ], "container": "qtmux", "name": "x264enc", "height": [ 240, 720 ], "width": [ 320, 1280 ], "rate": [ 1, 30 ] }, "container": "qtmux", "name": "iPad", "extension": "m4v", "icon": "file://ipad.svg", "acodec": { "passes": [ "bitrate=128000 profile=LC" ], "container": "qtmux", "name": "faac", "depth": [ 8, 24 ], "channels": [ 1, 2 ], "width": [ 8, 24 ], "rate": [ 8000, 96000 ] } }, { "vcodec": { "passes": [ "pass=qual quantizer=21 me=umh subme=6 ref=1 profile=baseline threads=0" ], "container": "qtmux", "name": "x264enc", "height": [ 240, 480 ], "width": [ 320, 640 ], "rate": [ 1, 30 ] }, "container": "qtmux", "name": "iPod Classic", "extension": "m4v", "icon": "file://ipod-video.svg", "acodec": { "passes": [ "bitrate=128000 profile=LC" ], "container": "qtmux", "name": "faac", "depth": [ 8, 24 ], "channels": [ 1, 2 ], "width": [ 8, 24 ], "rate": [ 8000, 96000 ] } }, { "vcodec": { "passes": [ "pass=qual quantizer=21 me=umh subme=6 ref=2 profile=baseline threads=0" ], "container": "qtmux", "name": "x264enc", "height": [ 240, 480 ], "width": [ 320, 640 ], "rate": [ 1, 30 ] }, "container": "qtmux", "name": "iPhone / iPod Touch", "extension": "m4v", "icon": "file://ipod-iphone.svg", "acodec": { "passes": [ "bitrate=128000 profile=LC" ], "container": "qtmux", "name": "faac", "depth": [ 8, 24 ], "channels": [ 1, 2 ], "width": [ 8, 24 ], "rate": [ 8000, 96000 ] } }, { "vcodec": { "passes": [ "pass=qual quantizer=21 me=umh subme=6 ref=1 profile=baseline threads=0" ], "container": "qtmux", "name": "x264enc", "height": [ 240, 240 ], "width": [ 320, 376 ], "rate": [ 1, 30 ] }, "container": "qtmux", "name": "iPod Nano", "extension": "m4v", "icon": "file://ipod-nano.svg", "acodec": { "passes": [ "bitrate=128000 profile=LC" ], "container": "qtmux", "name": "faac", "depth": [ 8, 24 ], "channels": [ 1, 2 ], "width": [ 8, 24 ], "rate": [ 8000, 96000 ] } } ], "model": "iOS", "icon": "file://ipod-touch.svg" } arista-0.9.7/presets/ps3.svg0000644000175000017500000006673411506140057015272 0ustar dandan00000000000000 image/svg+xml Mairín Duffy Jakub Steiner Sony PLaystation 3 arista-0.9.7/presets/computer.json0000644000175000017500000001246711575714662016606 0ustar dandan00000000000000{ "make": "Generic", "model": "Computer", "description": "WebM, H.264/AAC and Theora/Vorbis for the computer", "author": { "name": "Daniel G. Taylor", "email": "dan@programmer-art.org" }, "version": "1.9", "icon": "file://computer.svg", "default": "WebM", "presets": [ { "name": "Live Input H.264", "description": "Constant bitrate fast H.264 / AAC in MP4", "container": "mp4mux", "extension": "mp4", "icon": "file://computer-live.svg", "vcodec": { "passes": [ "pass=cbr bitrate=2048 subme=4 threads=0" ], "container": "mp4mux", "name": "x264enc", "height": [ 240, 1080 ], "width": [ 320, 1920 ], "rate": [ 1, 30 ] }, "acodec": { "passes": [ "bitrate=192000" ], "container": "mp4mux", "name": "faac", "depth": [ 8, 24 ], "channels": [ 1, 6 ], "width": [ 8, 24 ], "rate": [ 8000, 96000 ] } }, { "name": "H.264", "description": "H.264/AAC in MP4 for the computer", "container": "mp4mux", "extension": "mp4", "vcodec": { "passes": [ "pass=qual quantizer=21 me=umh subme=6 ref=3 threads=0" ], "container": "mp4mux", "name": "x264enc", "height": [ 240, 1080 ], "width": [ 320, 1920 ], "rate": [ 1, 30 ] }, "acodec": { "passes": [ "bitrate=192000" ], "container": "mp4mux", "name": "faac", "depth": [ 8, 24 ], "channels": [ 1, 6 ], "width": [ 8, 24 ], "rate": [ 8000, 96000 ] } }, { "vcodec": { "passes": [ "border=0 quality=40 keyframe-freq=30" ], "container": "matroskamux", "name": "theoraenc", "height": [ 240, 1080 ], "width": [ 320, 1920 ], "rate": [ 1, 30 ] }, "container": "matroskamux", "name": "Theora", "description": "Theora/Vorbis in Ogg for the computer", "extension": "mkv", "acodec": { "passes": [ "quality=0.5" ], "container": "matroskamux", "name": "vorbisenc", "depth": [ 8, 24 ], "channels": [ 1, 2 ], "width": [ 8, 32 ], "rate": [ 8000, 96000 ] } }, { "name": "WebM", "description": "WebM for the computer", "extension": "webm", "container": "webmmux", "icon": "file://computer-webm.svg", "vcodec": { "name": "vp8enc", "container": "webmmux", "width": [ 120, 1920 ], "height": [ 120, 1080 ], "rate": [ 1, 60 ], "passes": [ "quality=6 threads=%(threads)s speed=2" ] }, "acodec": { "name": "vorbisenc", "container": "webmmux", "width": [ 8, 32 ], "depth": [ 8, 24 ], "rate": [ 8000, 96000 ], "channels": [ 1, 2 ], "passes": [ "quality=0.4" ] } } ] } arista-0.9.7/presets/android-galaxy-s.png0000644000175000017500000005630311576025000017701 0ustar dandan00000000000000PNG  IHDRL\sRGBbKGD pHYs  tIME)4v IDATx̽weU/ss[9tUguTjuKjYlKl{<ޘ <Ə 00<| l#K,YZsW^k8,W߽U{+oPeֈ[ҩ" VD/է/("xt +בk *$?Cb=W7ߵsDQЈHV߲0+04f^BaklsܜWK3 +GZa19Ăb)[6mj/' %Pk=5i~W~u;Fi=VT*ĚH|_K~]xyIDADZaDk-Ze$dhtC(RJkD"RJ0ZRV!Dd2rhW ^CDDtEOO'B_?Ǐ;zHZ5I""b٢3#֦O4OcRs$/!DKy!*҄x흻o:zT?!8⇶ow68qz ?GG]ć>|7]eU۶uwuet $&16$I5q$IEQQIb5&IcXk}߯V(Z 2sS"$I7D7uO{WśW Qt%:afKJ8L̇=4"H O>=د|玝/;uZoDV9 0( 0 8I0(( (8$I1"E7GUӍ>F" ({3lklAq x'mmWhG}70e$DD5c9[nٟ7ߑ #knZv^ H1!vttEa`ezfcZ"&cI6EX;NOO/VwIqz˭=?~[} 4~gMDQe2P+L?~>;$ TjsV/euw&i7Vc..."RE|l6Rh4ZJ-ad Xul&'ITdJ~sIW>rtj|R:AQo3sv$aPC`B\&<oXAD&<DJtկ N zzzz3l.rDJ+DhJ(aDuyaI^5.iB l. gOV*~o;`qJ9!Bp/_(*m7⍷:ͺ] (SABAPkv֭[׭[g(#q33ӫX3Aĕd8}W3xªYMӸi5cD$;2t ߕ+^x]sDžkLjF:::ׯX)W$q>4xa׮q_ZZ5:<(ADEJ;:J5+qHQsWs(KJIHk~KA$5Vss9311W526꺎1[[ۭwﺦ ƚ\>bT&P33j.@"* Ri%jahjψ@D$a"$I54 &X4m7YUӗNJ^WZp^B0"~[jKRiipMJ Ǝ; IbR WQPJ[^}PTmGEl___^V##o|)ŋc7o|xk!D^.h ":A櫯͜Ϝ9UV \.eaQF&;oSDoDV=*6\} A"٥%+ ---J)c !>b(jTпWX] cnytxdLkZZJ#SSrp6(Bskok&II㜡AqlV. .,,ZdS{jk}/ūHז嵚1CG:;Ϝ=}Ա8}߿7Xˈ~+}unY TYc01IqEqKKKsss844he"26:fEΝ;`_<s.k"^?5f;::/J%?GqTniD$N9a[d#:0YyMZZL꣗Lr} ;WvXkFGr_kVږmQjE[nMWMuX[)رQ,3$N8888ޒ(ZOlM$I$~DaDcTkjJW2PWl LRs4Ò$1* bkF$ !!"AB$Яakwqlbfzr`lbX8( IB6ŧ_kB-O_^lYհ(M/OkL2r[oNPШ}X1\r>XN (%qrw}u j(sB< 7mwwYk7ʕJ&.FaljֺT*!6 %i_}۽>QyW0thTJHjRcC0_Of̶R|~őw۾'NlHu|ر=~P#Hs/}Z\?fi@^09a☈\- c/T*qЏ$I./Zct8Uط49!qqĈEQ4֕-9bQ_|2{~(ǙF^9GcGN?~qa 7h4jea&E&V3OL"<7mMMMٷWDz~[ޡ &6@5Ѓ5=BeDLŒ `ŃCs\ ¢ Q1lk9b?ӏCa6e(X\~/>Q>_"yfŊEIJ4xWo Cob|rhBܶ}Dl%26@]UI(f@DaZNȡ( &`'0,KJsL\n1ƞ;w"7>p$+@ģ'[*KJib纎vH.0 Z 5{fDcÎB8oyǏt7B?W1 h;nmgΜmkm=l P*"`I5Uڃ!ȀF4bJo_*ٙi)/vvyo?x?b+FO,X%uw~R\󩧞޵kǾ AabBk-"{/߯؟h`1Q |?GcR HXrZL_Gqx' [k9rIbHHFKWࡇڸqűycl__B/o.6ZXWiw ٙ ԼB*Ok֎Ga@ HֲeKHTЎ~1hIA'BˌZ Y+P"D& C1Cx ,.,lظswqBE]uVy)&3$Ic˅oa @3gF/[\6 E\u'2Yu]h락]RP(8J"@FJLNN@(2qqfU^ERqTYSdmV[lZ5Fb={8rMYf"b1֒"Ԁtvs"K6M}=om$nQΝ;}䩓A_>31z ? 6}D"~`~oaM_ٲد=Y A,L4CoRpXz;kLhAAxWyDc,"DJIrݒɌƊIBg'|"Ytì2'7gGYC Yi+B048?>;R?AؿRbKIQ Ij̙3FCk"mq~#( mt4Bdak-!)PD䢥^n &c,r,30Î]?ưr\ A+.kiܗ8.ldJT l@9D,,޻o-<J[pֻRiaЦ7ÞYoi)5 ?{,`ATlbZ#&\gZZ)]s0A] !, P0Hh+d(-#шH EER w9(bq4,.ԮѢ4-NrbK)V''"EaO!V& o8B2yVۻߴ ҘM:"L KGfH+ V[f%+Zf1 9:&"Ɨ e,I&DY<Tq$ժRYaiqqzAmTƈjY|T7ĕJ99l_4FYV.u1tzdM$f#gAaT,//\BxãC|_v4e\@tMT5D2&=]=?u{ozꁣOkjiRj"olqU9tfۉpn~^,n^IU ⦤\jt8 r9N-/hZ*Ι`s+5@f+I̶w 嶶8jzQ~/uE&hAH|V2wDI)CHƘ ͝"kͺAN(%߆q`ҕ- ֘ζ(1%R!"ZZ s+e8VFE|$`H NL\C Za'q0a`b!M &BґĮj)G_^I0zБ}#LdT*䊋KQDQݰ6JS%b($P*roopõ\sl:{ݞkm[ϻ~u}O_e)mipt4 *Y:s11g[i'?FWBnY.z3DDXJEaL5TgX\\ ͍,/-x^^^$؄0[kʕJ\r\ߨ>s[oPOMMVHpć7ʕ\>6YU |&\#Ъ n qtKɐX,1qd䲬Iˋ e‰˕񵙠f`d'&';ڇ('F~EvK 8E&QQG|f[(|[7WnWKQl*|{{[},u#ÜiU$QؠD$Y7 =ל$jmZQksHK! 3^}U}vRj…|.dljfnA$q| 7 Z5~ZR*ë}B_gon`dth޽.=|kmۯz晧.2,iq7wÝowƇNBu`-0޲esڷ3ܩ3'='Gfc3JD}_|xMA){i7iQt5_F ի"[:0D6?yX\ިarTyEIl,MeD3#5#"VgfgrٜvԳDDO)O8"QCX, ϟ?zl%  =a66('NF61bFG?(v&=akQ$- 6Ν;#N=JB q J+ljw80ZMk :}~㖱G)E--zk&$޺eˋwss51OYĚ$=X,ƉQ$I2 UDse) Xˤ\aTHFEۆFq%@҂Y i !FQ6+D`j-LV'2Zj4E24+)(̐nݵ"8~{?G];/[ZrTa ^jp H26(Fgᄁ=xJ5 2\.ID=NY^vvvZ1 (NZ+ך+UKkiFrTFs\. c"LtHJfI)B"EQjR^)M}|@l¢纎㸎38x\8[R?_jӄbʽdN󎣣(RZ)RQyg 0 R,#]6s]}kbK)۾)erQ1 + :iMH4]" 4jiC?7n>s̮G'qǦ^oDqF/VD' %BPegsDI.;}L6a5bevzɸ a'QUҢ]"f)iڗOq+J",ڵ$0D+@rTqY*R1V$  _:R;N!vZZ F䦛\@% X>~ѱb))Ftt.kHn pLMYaЌһqp:)Xa˨ р܆mw> 0kp Pzd5e LD$eB ^ű٫HfRT(FDQJ|U(PFG֐C~DA6Ƥê%.3^iH)6)+qB:c \6S(WcCi"BJ; Ҳc1m*K0JS "XN#"DD8C X}iABQL b0.2Y_ }u ZJQutt4WDو0!DQ68u>{j׎ϟ?wTZB-aD "+BZV> XlR-R)lٲ%M6UK :[)^{ z#>,(,[lmZ/n{sjX2tA]w=˓q$\q#+{ܖu|dl:뺥LR'?_leE/$Nct"bV ILooIk'lLbUC~Wd>!*Lqo(vNߩiMI+3sO90 |/5qDFFF=ʖGch:@kM7ݔsl6BL>B9ۢ;6FYc?#^{'?ɹ9 t)oٻ'&旧o h܂~N O:waf0*m3sv^mkqu׽|4Gqp)cny0Aԗ]^^ۚ|7V85"_NƳ߸u@$5bK~GIejt9[T*lR)'nNFr' j?ӑ%X;?k7]Rшxaa)ک87mm ;yzkfn!o}=;6zm-gBmiac_gur." 3Oٮh"Sm$&ZJwo䙹2TTy c ϗ('DV$z{Bu1!Iмm'&/WT h~zn"j$ žxvH_h~iηߒ8 xz߸7җìŹL_ߪ7tbm{8l:K*I¥J>S/g$:ݒwffbP[s$,V^pˠfF$H4==󦷼Bp['O㍵br2M.?:. rJvCa'ġ .&qdjz*gم| b_p%V%2J.TDşٿ\w |\۲RlUeKΞ]=z6l޶kӎݺax ˔U27 3kFԵrjx|JGχѓ疯}.%v$ 6 IvD0Z5^/Â7SAa>yl>>>^ !0 In^o-1XalAHCurWx`&I(Rk߸qU, gub_zxOOOHǃrç&. /n֊Z!3.e [[[$hݺuT $N({ YhdR 0̱䴣 /ZU-Q5 L(KUkCGLb?=shރ~o8;33=9aw?rt]8N^׿$ (6ݷϝ9庙b!8_Se*007$n5o4W>0KRT! ՂɈΞ]#,MٓvJy:%!鬵Zdi~hppo`'s=qFoanw3kD1l0Z4s\ϲFAȲMcR6'}ߦ-[.nظj5xLJwwOѸpBX(so##ymFjf}5Qa~w5Ii+t*ՄDv,_ A)B" nm r\0|ҢMT4+M(H5{oNnmm=~prٙ(8j+!Mb&DFH{&)X̂2ѝ듛v._237<4cxǶl:sz;n>  kNyϻd\Ґv":j!:"4B!Ph""!((HZ{3[Xށ,p}?^64@@f0Z@箳3Kn}WAB?U{h9°(򖷌 מDNԶƕa=云0ϯYDظXÇƹ YֺVI$wپ}1>3 :@Fr"h]J|AJ::BDXBp~|v|F|ɀHIgfh(RpbX| +g:W75zt*O>5ȇD+6ƴZϢv)!R^uʉ/]{n)RɓJqj5ӴkݴirE+wAt tI@r.P $CP8@&dApv$b1:A(LL,r: V9CΒZJ z뾛 A_'E[B򶷾Gn'?:PXqXq6o<95鬀`apMZIldD 6fje(MͳdrrB/GQ&֐XB"/Y-"#X9&fp0X ׳ֿPCp% N=H3V\ND,0h h{Ka;9 D%^~?|>u+oiZfK8`1)Um<$/]#XkNl6Yh|lt}z;vy_s5܃}}7~Sϐ ­t^KqrRcxYIuâRJz69)(gfbg{ 5G.Zzғan,MkYc h~=3x!: (K3h,$fNyIa|P 4~}wxd211)^ͷ])ڧ̾M,#C 1( t0x>y]s/6)z&ܣ`u5dܦzW$/*@k B,z+C+L2a)Q\_:[xWQJ U0h{}?x$_ܢ+;tJ2Dξ}wXYYyӮ&ό1Z-Ink{_U^AxN=H3$\)R3A+,nE9c!&@Qy8f\עXUւk"r3@^ˍ"O:A$Iv+IDATR6v/?WUHcMm&ξyzQJU*,M$}6̊xPxbϷC`DW z@{30BPjGARz|^o(kfN (R+ @0 iv!?CE$ɪ`Tr$oYjKL[R)$M,5\s5=A|xVeKb3 2!CF"j\ "T$B@"ڧ6+A_9`w$p,/*p΅amߖ_G|QY?!'fHH7ĉQ./-?vj˕0 Fey{>ը D"]I%@O< (7b{v #zq:otJkf,2BTJ++趾@ 8E Xu`"ϗ׀JŅccKIeDH$KSw}W$y QiqfP,$L vOZ@Ul#mt-9g[f.YT]/)J7B=`E/sI*At@Q !)! r'pR\J Geg]7I| 7\9Q'O'…μ0;F {ep ,銉R= {PHrL, zh,;L2H#KYD%1 2Fr~P538BX&GJ ǹ0 %s^>z,o:{ް}jsϾJa q}4~tXШO280RF#ǟ|ط)g.^Brg&˲4Kh||l=d kKXfDKL$ctEtr6'j,$["Z4U!JRi,/QIKD#싐P*7vh1M@!$P'V+ / .YHt|a樕f{w[v|t«粣W߰= ű 6\|f|*"`'Dz@D++/ԫ* ->ѡ#QջuΔZ xCZcG9V À0$`>tR$АF( Bo!$1`^@5@Z+`X[}8cb+R1FP ;`YtQsaËt1  ݱjj4%\H|^a+Lӂޝ_^܇~O'>)[. YQf޳g' vGK~C 4Yݓ( Yk_xME@kb_hzg/2 lIB{6m۾cGTTgCY8ࠓ5O93C9-ζ&K9!0 kE,Q,WGMNojO\SlemA!:酅ι۷JЀ;t6%2V F[ 8㬵 B, u!'patlsSseA%2Lf,"Ao=vx bmAVJQx'GƗj%$Uę,4wW{%Of`PVS7s7m-\쮬NYgR?_?ꉥVĂDw5 zڭܛgJr`NYg?_g  ԇs\Z)cL8_~H3usnWsR@&`ts86I/B5@ܞֹ3P*<3YbLV&&&M-[VbT`/=||n&CJEd)To-o7 ;AgŤF:ӭ駶o)7gV 02|ucn|KAIrVPVeSSSsH]#A}'Ǟzi2Ūe-,,LNL:Y.dեf#1useqq\ԂUg8UJa8ϳ$M7o+?4 8rD$BTC}azP峫C ()I%LƤl5kIl{.QZs2#fK֭[8i-t9IZ);s7#wrVfiy(üAs殛;LǏ|6o)^)W8W"A0 k5&߼y/SrcгaqV![)I]QS7Ͽ9z,CiDa@y>3JP$iU`޼\pCRq:)hapӊ>pDDK,y c3~39ghWƠ ^!@rJ-,, b <.g II ."s_Uffy}BϯE  "\QW@"B1c:AbMы[w+O9r/.7s5]x=]:gA^>qRƤ2yf]KU!QM=t6ydT J$jڕ=#70e.aJlj(:CVXp7|<(Df@$,k,ZoC-"PH1xiMz$5b cl6/dL02=J} eڟR֢JSO|AѤB%"#:6r%kIq)ܘűf:rv(Gb$ͨP^,s\BVNzI{--cLQFĞ_O7rEhS kȞ]8DRPo[s_CJ />؄.R@%(_|/b3Ʒq۷~D$\Q;fDh40DٳccC&(f Rc:XU,8nghd֚ol([&lٲsJU kt;wξRWG)} y+3"0sřɝCW09RpWdg+͉+zm6r*&K AVy-UahB4";wjgݶcvY̲0>ǎ喛 `@ě޸pc|m?_!2JR^TN>Iƹt2K7xKҞ)C/}\.w:m۶qv/VDƕ֤EZMP c~ӟER*qy떽C`ǖڦGV.S TM!ͦrٸy4dIDҤl~Ny?M;z5)5v;wvύ{NO[y}'oۇbvj͟\/MLku{"$P}}e tUjVkF~8)1s@Jdɚ޺_$rCU: JRw;vᣏW1"bҚӺ>PynVG@Zп_o|WuO=dZr~mP7^xݯ =4ϲ( 6DdΝnE 5O$~6K^.LJ',0P*jAIWDX*E wy]wƤˉ&~?z$z۽NE"%R5=<껖ڃ mֵܛ.^jj>ۀ^`$MZgiv׷0446!]?Vu= u (X.>Zv5>>c]\:~??vɣI[:F&sssXKP`˚Mv/dY zA: ]M_J/)3J1 Tf;fceu<7d\_2֓;. <==;491ңzyy{9w{uFO|sc7t Nt;m y%lDϺ ^C tO`w^HH(Y{!˾-SnEݻw8~X8VTREQ6K\]%|AD D2=6 :MScE)kJDߘ^B?=tm۶3R)*JyqUUb y l Ji|~"<[kg*ـ^MX ETYۭc4 t;Kwuwmp7cV4OzG`A9kX8BZcH ":v~SgvDW pΡHp{u~eAwww0\0~/: "}/ɟ1,ZgqlZkɍ"^1ߘ_ 1 [kzruҤHժ0 sYm۱#2"d}ڸn%O5zǣ׆:){Y3|o-Uyg?GQsO~SSSb5Wu.g)EƸG=Xys^o9R@1K" ?漞hhh ر}ؘBBT/?ƽ,z7DED }#9P4x` *'PJy^*^{vd?bV333쬵R89ב$R>(BhQD)X=XW\HD G Ccra1yirZK>}ɚ8x΃ad1z|b %^@@Z'IENDB`arista-0.9.7/presets/android-nexus-one.svg0000644000175000017500000003706111506140057020113 0ustar dandan00000000000000 image/svg+xml December 2007 Philipp Zabel device phone magician arista-0.9.7/presets/computer-webm.svg0000644000175000017500000002152311506140057017336 0ustar dandan00000000000000 image/svg+xml arista-0.9.7/presets/ipod-touch.svg0000644000175000017500000005664111506140057016634 0ustar dandan00000000000000 image/svg+xml Portable Media - iPhone February 2007 Jonathan Zuniga media device iphone phone arista-0.9.7/presets/ipad.svg0000644000175000017500000014011111576024467015475 0ustar dandan00000000000000 image/svg+xml arista-0.9.7/presets/web-webm.svg0000644000175000017500000002152311506140057016255 0ustar dandan00000000000000 image/svg+xml arista-0.9.7/presets/droidx.png0000644000175000017500000003027611506140057016033 0ustar dandan00000000000000PNG  IHDR\rf IDATxۏ$Ǖ޿U=3!9PhDRې@ŖV/~aDYz _ "ѰK zdr A Za 9L߻2#""3:3+*u~KTU/N8A A50;D@D FLj# K ,1"Ĉ# K ,1 hk!իWŬ0+D̛^u9 DrppڵkwN>K)=pcf0310dϙC$H}cٵpM`ee8s pt:auu5+CX03͗+,߰m̸pB^νȈ4dooN3zc f:G)c 8 8Qr<XYYAEEEDy1iEeC!k\Zqhn{YYtno()4=Q>c)RZgHY9MiZ;." #->_ײ}wSxc\D!ƘYaleGS|Ehi׆_Î ],eMI3N"0@)n ce9,FPYbDF5g?VWWq[|ض1.]G}q\}lookkkcODƠ_jS~EX__o&~mܹs>,(*qFS>#M >ܽ^/s$ֺ0Pvȿ|z7A,l}P<4M(F` kuUǵ<)Ϻ E7m&"0AƬi^eY T1"s@BQ}Tu?t" Ĥfau!/6poW|:~En*/ ( 4*F`DF&-^}e&2u˺9,XgNa~8eT5}\iF |Y"ҰI!T@d]vaF2NO r>0ha@Y_Ǔ# 4NbDZdܛi{ukfAsw E r>X@C/Ap1Bhye;{1L,G<pG-KQn(F&++4(F`"mK&@ߤLM1z,U5oYpXe1j 1Xpnaqm49npQ=.uBfsݶYN%"-bkV38lgGEJLRٶ"FO?a2fu `GX6c;IUvyQo:pY/ܧ{e-x EVoěo :|a71"O$ֆ`s6DƤ͛n8(ailn~ٶ^}10n7za7qE#`k c;;;}5jݿnN^(B&Fhunʾg[%I2.""co~RÂaHJ)(&jPV&[IP0G`L&q3M[(ш'O"0&QK]cX/(jcT oiSD`ݢ1go2LY"3I&b!_A8P=(SNI32МDEfMy4ta218X_OUJ0D6bոaυ 0"rK9D8L[\Wxc2mAC< α ʼv"0&4bVM2kLN"0& (;m b'~ɰv`6C2"0&Qe DrD$y NޗMm>/ވB^vDƤrl$),8\[ eB1iKRh֝'DN"Ę̣._0+0fAgD`Pd=7A\=/@`C2\4 _y50D  2p~0(b>r-3k. 2"0m<Eydkt o3Wd 1= (dL.F{o, ,Max3.as\mރa)13TÜAx 2>PAʸ\2d9kۼ`DSDUaŽQaѰ`1gXC&{S f*l,X"Ìlc`3Tס`hfq=̶(g]Aa{>\ l>G`L?߻a3^v#&V`Y2OֆNX#>D.> Իa6h@ %X#=10֭+mƦ (H1IQr۸]lCuދvc|hv1hgf7 1Rͮ$)}-/ pjZ'x"[g1Βu 2g :? #GYIAkh[=cc nݺ;;;S/;;;u?gyׯ_I{"]¾ }&p>q/q>c\ PhdV D0"&AEDƠ?9~*cRw={׮]Õ+WpY{Hd"9o߀llnVf4^?9%n QL 0"F(uN_WD;WJ… XYY>ۧ(@8 `_ۉ?szh@g :=&AQZ߰ c DffFǵ+LD&`J^Ѽ"@`{{DR ?1,< ,>F`3m@BkpGlD`H 2 "5:/\j$(Mfޮ"W]^^(4pڝڎ4 :M` ATEy# ù\W C]dA`E޷ɥ<3Lg~bD(J `R` HEFqǙ?| qִ<r}v6{ ɼgr 54!F@Z"2)3qYn5#@8.h?Dz v$7VB? &ձa %2P $DnJ`LT=&W&w+0 E(d>>,%|@&D`N@E@oE!2 ]Re@!.rh(d߬Oe= C[yFku8+5{[_dc|޿\0PĈR xe3 g¥:O(h6y#{F@75 K`_vB ``"ƀݎrӇ hieY_Fkn 7qb60[2eA2pÅ5_g2R.+ 1r׍lO4"RD4>D8rFQvbFf"8u7D>πGv ڪ}ȶso%)rK :Hqw'b+g7F~ & z >&jR'&c L*11ZJg@Ef1gQ@UN;؂j Yy ؎Sz|lW04oyursut kخlQOޑ~v$v/ ~n2PaHte)TX\^DZd1E݂`Vn{#CPq [ue*[Sk0?45Yes?cXD r; QFwAFD1# "BI4jv,9$8v7n/M,v~0:5ʻ} ~e^<܈AETa(JDz9sqZ똬%YT^ٲ`΀}_PG5hWUs(.0# EʵFd4 "n\O "d A0 :p8qd\R3J}_V>O?og5hh!vӉ#B (wRDz@" "yjJ9tK`4b{շ>Zgp1'lldcRk( `)ADsݩ/ ?ۇOL˃;A+RRYm;wРutc境F<&DJNPweEE5ÚMțgU& ޏW0`Ob(e'"CMN 't zLDM4RL0A8N6В#0#olF<7O4 vmlB5n}x Q-◿%VVV6p]|xK@ 'cGq ľ)M@*ȜIElԽEL Fy#s{_#3齍3z@j?;a{{vxK<8>O  l[?ulllGGG>kɆ}n=`ӈIJAr Li_\+,QKv^؄ `X=spt8<<;#^/AJy=1R{D؄&X&s>{RMI֌D$w1ٳ0 {.M1f= ܴ`aYD"w l꾗ƭ,V~z=\<03ΟfF&{x | _e>?Я"dv+n} P @h& )% 6;ȍQRnt@n|jxWoO=yGG"ů7np".;b] XBDC|l޿ "`qQne` Ú٤{4"Lv ]7ܳ\bN$HI#w? ?7N~Z<`7x,~;GuTnoPHSGl>Ǖn/ ?Ӊv5H$1T}pj?v ׅi|zdžm/4s!LH(@@8>s|wqƪd䵾ɖBv_xLKڀ,}~ޗ8@1"-2@|00ܧQٶw5z:Xl.v&>"h&<۞`lr! W)fdA{ Oy69 o+ÇsFOY~yj@R(D@8₀8} sFl#`+΢8_އmo~.;7rUqbnA C] D P@S&8Rv7/yIDATـ p8q}cs3כMf{ >Rw)H%l`vM*~^#hpS瓎2& mJ7فIi} ù}z d#&ϻevyv?'K |,2H" :laX.!3/%='g뵃2M .ga0@L 0660[8@}=-_CGp9gy؝/ !0TmZvv&"~_68"wѺ>vl/E.CID#dat'[U=;y%@b|YEφ""4 UEGHCn 2, ڱp Ol/闝E ~AQʐ4 1 2DzB!3#>d<k=E\ߏ< >hBp۰yL3+V|4_3zP|d`-D2ұn $olp'Xd~`>ll0i# gkMP]0/{yS@0'-4\ h凋eghiBeRФ5kBX>kPFgpfc@0`ϐ%! 3m@ܗ޶Yl[Yo$]߯+q {/ ?LعeVTQ<0RζkXl5G`PJ!cDQ=8FAAك`ixۥzm<:VWWtv+,R*"cL_YZg-z~!"Mj&n7n[vI!IeaT#"qn)%T&޸$)|&Ir^_W^ۋ=T _w]quq ̮1{{{888ȶ^LULjC`Lܹ3"C"8O7ߪmhZJ<4kE&3=YPOh)NkVN?kѨ)*Ќϱbe{xat﷈(~Eѷ޽{qT` ~˗/?>3 tcPJemg FѧPJe2zW(Ǡ,܋?ܼy{E::epڵMwz8<a}ߪ;w~qppgsܹsx~Eѷ_%0N<3/yրped>w: ^C"Ĉ# K ,1"Ĉ# K, O&.2w(;><λ_SWuwkK "]ߚu!0i\|nӟ i\۝u 0O)nߺ=bas.Ԛ_:V`g|t<<7_ _QY=άC%Ƙ_[X__u͗~-{*m}1qE?@S4h* k +}s|- t@FLoOz`cpΝ^c}czuh7^~/t:;C'+y8{ X +@[ s> #N1 u ܯ/FD}uuW>9ұ[?o.- .g:]սYuO-ڷz7!&g@Do}Qne_v8I>ݻO|(Q>b99#;QSgeu9Y^YgUݻum1X)Z&*f>pa#IZfm"8oS8W_mb(6 70ahqƍNWUԭۅJ)rJ0+}oC n3(Ly}#кv΅003^yVNWuE /\8 z jEW={Qd% f/ا0(_UpUW=‹/X̪苩S{WAQ4>F= 6LaCnY*W\a7Q>&_H^? ̹:jؽ]fu#*_9ccc3 ߁0{^xᅑ-*{w[ouaSo| )R:*Yv̰}ʾF Е&Brҥq/3ԡfv olM>%؍7R&e_JU݈Nw9o[S)ŏ?x3u~zfAr3a8UH^xo:SZc_./_fFڿnP+47xcC*smlf۩JdžeZ|aQhnzjY`h($ .P3~aEANE @p#AB>IENDB`arista-0.9.7/presets/dvd.json0000644000175000017500000000756611576403401015514 0ustar dandan00000000000000{ "version": "1.2", "description": "DivX or MPEG2 for DVD players", "author": { "name": "Daniel G. Taylor", "email": "dan@programmer-art.org" }, "default": "DivX Home Theater", "make": "Generic", "presets": [ { "vcodec": { "passes": [ "format=9 bitrate=4000" ], "container": "ffmux_dvd", "name": "mpeg2enc", "height": [ 240, 576 ], "width": [ 320, 720 ], "rate": [ 24, 24 ] }, "container": "ffmux_dvd", "name": "NTSC DVD", "extension": "mpg", "acodec": { "passes": [ "bitrate=192" ], "container": "ffmux_dvd", "name": "twolame", "depth": [ 8, 24 ], "channels": [ 1, 2 ], "width": [ 8, 24 ], "rate": [ 8000, 96000 ] } }, { "vcodec": { "passes": [ "pass=quant quantizer=5 max-bframes=0 trellis=true" ], "container": "avimux", "name": "xvidenc", "height": [ 240, 480 ], "width": [ 320, 720 ], "rate": [ 1, 30 ] }, "container": "avimux", "name": "DivX Home Theater", "extension": "avi", "acodec": { "passes": [ "bitrate=160" ], "container": "avimux", "name": "lame", "depth": [ 8, 24 ], "channels": [ 1, 2 ], "width": [ 8, 24 ], "rate": [ 8000, 96000 ] } }, { "vcodec": { "passes": [ "format=9 bitrate=4000" ], "container": "ffmux_dvd", "name": "mpeg2enc", "height": [ 240, 576 ], "width": [ 320, 720 ], "rate": [ 25, 25 ] }, "container": "ffmux_dvd", "name": "PAL DVD", "extension": "mpg", "acodec": { "passes": [ "bitrate=192" ], "container": "ffmux_dvd", "name": "twolame", "depth": [ 8, 24 ], "channels": [ 1, 2 ], "width": [ 8, 24 ], "rate": [ 8000, 96000 ] } } ], "model": "DVD Player", "icon": "file://dvd.svg" } arista-0.9.7/presets/computer.svg0000644000175000017500000002751711506140057016417 0ustar dandan00000000000000 image/svg+xml Apple Cinema Display May 2007 F.Bellaiche <frederic.bellaiche@gmail.com> arista-0.9.7/presets/nokia-nseries.json0000644000175000017500000001233711567745426017516 0ustar dandan00000000000000{ "version": "1.2", "description": "Presets for Nokia N Series devices", "author": { "name": "Daniel G. Taylor", "email": "dan@programmer-art.org" }, "default": "N900 H.264", "make": "Nokia", "presets": [ { "vcodec": { "passes": [ "pass=1 bitrate=300000 ! video/x-xvid, format=(fourcc)DIVX", "pass=2 bitrate=300000 ! video/x-xvid, format=(fourcc)DIVX" ], "container": "avimux", "name": "xvidenc", "height": [ 208, 208 ], "width": [ 352, 352 ], "rate": [ 15, 24 ] }, "container": "avimux", "name": "N770", "extension": "avi", "acodec": { "passes": [ "bitrate=96" ], "container": "avimux", "name": "lame", "depth": [ 8, 24 ], "channels": [ 1, 2 ], "width": [ 8, 24 ], "rate": [ 8000, 96000 ] } }, { "vcodec": { "passes": [ "bitrate=400 me=umh subme=6 cabac=0 threads=0" ], "container": "qtmux", "name": "x264enc", "height": [ 224, 224 ], "width": [ 400, 400 ], "rate": [ 15, 24 ] }, "container": "qtmux", "name": "N800 / N810", "extension": "m4v", "acodec": { "passes": [ "bitrate=96000 profile=LC" ], "container": "qtmux", "name": "faac", "depth": [ 8, 24 ], "channels": [ 1, 2 ], "width": [ 8, 24 ], "rate": [ 8000, 96000 ] } }, { "vcodec": { "passes": [ "pass=qual quantizer=23 me=umh subme=6 cabac=0 threads=0 profile=baseline" ], "container": "qtmux", "name": "x264enc", "width": [ 120, 848 ], "height": [ 120, 480 ], "rate": [ 1, 30 ] }, "container": "qtmux", "name": "N900 H.264", "extension": "m4v", "icon": "file://nokia-n900.svg", "acodec": { "passes": [ "bitrate=128000 profile=LC" ], "container": "qtmux", "name": "faac", "depth": [ 8, 24 ], "channels": [ 1, 2 ], "width": [ 8, 24 ], "rate": [ 8000, 96000 ] } }, { "name": "N900 MPEG4", "author": { "name": "Abimanyu G", "email": "me@abimanyu.in" }, "icon": "file://nokia-n900.svg", "extension": "mp4", "container": "qtmux", "vcodec": { "name": "xvidenc", "container": "qtmux", "width": [ 120, 848 ], "height": [ 120, 480 ], "rate": [ 1, 30 ], "passes": [ "pass=quant quantizer=5 max-bframes=0 trellis=true" ] }, "acodec": { "name": "faac", "container": "qtmux", "width": [ 8, 32 ], "depth": [ 8, 24 ], "rate": [ 8000, 96000 ], "channels": [ 1, 2 ], "passes": [ "bitrate=131072 profile=LC" ] } } ], "model": "N Series", "icon": "file://nokia-nseries.svg" } arista-0.9.7/presets/psp.svg0000644000175000017500000007203311506140057015354 0ustar dandan00000000000000 image/svg+xml Jakub Steiner http://jimmac.musichall.cz Sony PSP psp playstation portable sony gaming game console arista-0.9.7/presets/web.svg0000644000175000017500000014213511576024540015335 0ustar dandan00000000000000 image/svg+xml Globe Jakub Steiner Tuomas Kuosmanen http://jimmac.musichall.cz globe international web www internet network arista-0.9.7/presets/dvd.svg0000644000175000017500000005673311506140057015340 0ustar dandan00000000000000 image/svg+xml Drive - CD-ROM Jakub Steiner cdrom cd-rom optical drive http://jimmac.musichall.cz arista-0.9.7/presets/android-g1.png0000755000175000017500000000762611506140057016475 0ustar dandan00000000000000PNG  IHDR szz pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FIDATxڴMoTUNmiІ4$q7b_q  EMHB[oys\3vjf|'>w9/{~1??OX&IQGG9))%RJi sKT&T*^rI(eRaBSV?fkkkW^1AR$IR*1h Woʰ֚$I@V#1==)74::Ow\-!{K(%BJ)j5nܸgÖPJ"͢Fk݀Rk&a㜥ej`ó[3΢̙3tuqIYM=1!{,qc=1?AlK{/^m[#py1ǽɧ-ph `YtnJa|gB(}6Dax(Xd8wUտm<&ZS8at&o ?p$4x~#zn[?KiPKZKxl ZⲦq.2nڰX|S~S[7 &~e[I]mi[1cZQp3d!la[/F'b2 xA%Ӌ?zEV w9o mRͲ}iKꗏ=1jIP.Rq@k PV͛5a(6].)KQP(022k<R\>#ER=ZWJY\@R(p! MS)H) ÐF9cXY^-+perl'B+%MS!(6˱Jڵ QBY".o299[CCjYhyxE JnIV϶  kmecSOG0ZkGPJ!`llPǎq]*LGɓ'_,//B`Ah9T,`nn.^M|ޥi:~_Nhs)exBT"c3sڵ[L&nT^VIENDB`arista-0.9.7/presets/android.json0000644000175000017500000001773211575666075016374 0ustar dandan00000000000000{ "make": "Generic", "model": "Android", "description": "Presets for various Android devices", "version": "1.7", "author": { "name": "Daniel G. Taylor", "email": "dan@programmer-art.org" }, "default": "Samsung Galaxy S", "icon": "file://android.svg", "presets": [ { "name": "Nexus One / Desire", "container": "mp4mux", "extension": "mp4", "icon": "file://android-nexus-one.svg", "vcodec": { "name": "x264enc", "container": "mp4mux", "width": [ 320, 800 ], "height": [ 240, 480 ], "rate": [ 1, 30 ], "passes": [ "pass=qual quantizer=21 me=umh subme=6 ref=3 cabac=0 threads=0 profile=baseline" ] }, "acodec": { "name": "faac", "container": "mp4mux", "width": [ 8, 24 ], "depth": [ 8, 24 ], "rate": [ 8000, 96000 ], "channels": [ 1, 2 ], "passes": [ "bitrate=128000 profile=LC" ] } }, { "name": "Droid / Milestone", "container": "mp4mux", "extension": "mp4", "icon": "file://android-droid.png", "vcodec": { "name": "x264enc", "container": "mp4mux", "width": [ 320, 854 ], "height": [ 240, 480 ], "rate": [ 1, 30 ], "passes": [ "pass=qual quantizer=21 me=umh subme=6 ref=3 cabac=0 threads=0 profile=baseline" ] }, "acodec": { "name": "faac", "container": "mp4mux", "width": [ 8, 24 ], "depth": [ 8, 24 ], "rate": [ 8000, 96000 ], "channels": [ 1, 2 ], "passes": [ "bitrate=128000 profile=LC" ] } }, { "name": "Galaxy Spica / GT-I5700 / Galaxy Lite", "author": { "name": "Christian Kakesa", "email": "christian.kakesa@gmail.com" }, "container": "mp4mux", "extension": "mp4", "icon": "file://android-spica.png", "vcodec": { "name": "x264enc", "container": "mp4mux", "width": [ 320, 720 ], "height": [ 240, 480 ], "rate": [ 1, 30 ], "passes": [ "pass=qual quantizer=21 me=umh subme=6 ref=3 interlaced=false cabac=0 threads=0 profile=baseline" ] }, "acodec": { "name": "faac", "container": "mp4mux", "width": [ 8, 16 ], "depth": [ 8, 16 ], "rate": [ 8000, 44100 ], "channels": [ 1, 2 ], "passes": [ "bitrate=128000 profile=LC" ] } }, { "name": "G1 / Dream", "container": "mp4mux", "extension": "mp4", "icon": "file://android-g1.png", "vcodec": { "name": "x264enc", "container": "mp4mux", "width": [ 320, 854 ], "height": [ 240, 480 ], "rate": [ 1, 30 ], "passes": [ "pass=qual quantizer=21 me=umh subme=6 ref=3 cabac=0 threads=0 profile=baseline" ] }, "acodec": { "name": "faac", "container": "mp4mux", "width": [ 8, 24 ], "depth": [ 8, 24 ], "rate": [ 8000, 96000 ], "channels": [ 1, 2 ], "passes": [ "bitrate=128000 profile=LC" ] } }, { "name": "Droid X", "author": { "name": "Vick", "email": "vick.satar@gmail.com" }, "extension": "mp4", "container": "mp4mux", "icon": "file://droidx.png", "vcodec": { "name": "x264enc", "container": "mp4mux", "width": [ 320, 1280 ], "height": [ 240, 720 ], "rate": [ 1, 30 ], "passes": [ "pass=qual quantizer=18 subme=6 cabac=0 threads=0 profile=baseline" ] }, "acodec": { "name": "faac", "container": "mp4mux", "width": [ 8, 24 ], "depth": [ 8, 24 ], "rate": [ 8000, 96000 ], "channels": [ 1, 2 ], "passes": [ "bitrate=131072 profile=LC" ] } }, { "name": "Samsung Galaxy S", "author": { "name": "Pierre Pericard", "email": "pierre.pericard@gmail.com" }, "extension": "mp4", "icon": "file://android-galaxy-s.png", "container": "mp4mux", "vcodec": { "name": "x264enc", "container": "mp4mux", "width": [ 120, 800 ], "height": [ 120, 480 ], "rate": [ 1, 30 ], "passes": [ "pass=qual quantizer=21 me=umh subme=6 ref=3 cabac=0 threads=0 profile=baseline" ] }, "acodec": { "name": "faac", "container": "mp4mux", "width": [ 8, 32 ], "depth": [ 8, 24 ], "rate": [ 8000, 96000 ], "channels": [ 1, 2 ], "passes": [ "bitrate=327680" ] } } ] } arista-0.9.7/presets/nokia-nseries.svg0000644000175000017500000025734611576025206017342 0ustar dandan00000000000000 image/svg+xml arista-0.9.7/presets/android-spica.png0000644000175000017500000000440311506140057017250 0ustar dandan00000000000000PNG  IHDR00WsRGBbKGD pHYs  tIME eIDATho\{sΌg;v k@d5!PRҢMy@Ajy@U%D*T-BxWR!TQ(UDi J\lv̹kbRy9g掠O)v޽{Z3==-o~EOڽ{R=!4#bwc*= VRʹم#G^4ywC{N8pe()Q2_ 8R*e;hh4i4-NzK':q+>#?^^y m Zֈ$q )Zm,Ni6Z-4en̛/®+C֢0]E1Z1(Ȳ4t:Z-6++ =444q{X!Z#@ycAks=EZ9EIӔNCedYJeV]P0YGpy:y..]B%BkQW5Jf#CT+}L$᷿ql+;LEl\*!z)e{v>D>$ID@D*%bb1q U{w@裦j !BBu1S߼ud}:ݳ""("$2Hc{ ;hmT,$%yQ "$AH^Oי#VVr`^ѬAB9 b"X"很 ɓ'ٸqss,dίk@@! v˔2>#׍RיgX )ViID X R9[t={ЦWf`lޓeA@x JlP%-ϫ?>yG<I Ǖ$N R/ Ǵ|R{C]=7. CCUj6K ¢SK$x<y sSiƜY[ǗGKyJ zbBȕK+-euA 5}rjEeQK2g "ISIhu lЌԇ5)dzϞ|Z`m#;XԤ lak ׯwgYg2s!YMmpͤR)˘g(9(# =-Yomb%Х1Fc`w}wyKS?;w#_-?d 4I{X?֋5vMlj5Yho#/זB,m6x;crxb tcP³=|H: z3G4aW:|vJD`AfP[A"B$m "Vh!+"KySP4=D{}96+*hB0xк> i,/G旿y=^9B|g Y!P TERx,>8n{v'eS)߷:q_UZc$0?%]PX\=6~h=NTLZaqR )%*K czV$ey^b`h\ 14pF닔Jŕ"sT)@ RZ$I>06>N-O=3WMG/..CJyZcV[cttZk_uN8uSSS7mJG}{RT/,,?z Ql믿UG[\5\5|z'IENDB`arista-0.9.7/presets/ipod-iphone.svg0000644000175000017500000010362711506140057016771 0ustar dandan00000000000000 image/svg+xml iPhone February 2007 Jonathan Zuniga device media iphone arista-0.9.7/presets/web.json0000644000175000017500000000737211575716217015522 0ustar dandan00000000000000{ "make": "Generic", "model": "Web Browser", "description": "Media for World Wide Web", "version": "1.4", "author": { "name": "Ferran Basora Roca", "email": "fcsonline@gmail.com" }, "icon": "file://web.svg", "default": "WebM", "presets": [ { "name": "Flash Video", "description": "H.264/AAC in FLV for the web", "extension": "flv", "icon": "file://web-flv.png", "container": "flvmux", "vcodec": { "name": "x264enc", "container": "flvmux", "width": [ 120, 1280 ], "height": [ 120, 720 ], "rate": [ 1, 30 ], "passes": [ "pass=qual quantizer=23 subme=6 cabac=0 threads=0" ] }, "acodec": { "name": "faac", "container": "flvmux", "width": [ 8, 24 ], "depth": [ 8, 24 ], "rate": [ 8000, 96000 ], "channels": [ 1, 2 ], "passes": [ "bitrate=131072 profile=LC" ] } }, { "name": "H.264", "description": "H.264/AAC in MP4 for the web", "extension": "mp4", "container": "mp4mux faststart=1", "vcodec": { "name": "x264enc", "container": "mp4mux faststart=1", "width": [ 120, 1280 ], "height": [ 120, 720 ], "rate": [ 1, 30 ], "passes": [ "pass=qual quantizer=23 subme=6 cabac=0 threads=0" ] }, "acodec": { "name": "faac", "container": "mp4mux faststart=1", "width": [ 8, 24 ], "depth": [ 8, 24 ], "rate": [ 8000, 96000 ], "channels": [ 1, 2 ], "passes": [ "bitrate=131072 profile=LC" ] } }, { "name": "WebM", "description": "WebM for the web", "extension": "webm", "container": "webmmux", "icon": "file://web-webm.svg", "vcodec": { "name": "vp8enc", "container": "webmmux", "width": [ 120, 1280 ], "height": [ 120, 720 ], "rate": [ 1, 30 ], "passes": [ "quality=5.75 threads=%(threads)s speed=2" ] }, "acodec": { "name": "vorbisenc", "container": "webmmux", "width": [ 8, 32 ], "depth": [ 8, 24 ], "rate": [ 8000, 96000 ], "channels": [ 1, 2 ], "passes": [ "quality=0.3" ] } } ] } arista-0.9.7/presets/computer-live.svg0000644000175000017500000020550611576025161017355 0ustar dandan00000000000000 image/svg+xml Camera / Video Jakub Steiner http://jimmac.musichall.cz/ camera camcorder video cam arista-0.9.7/presets/web-flv.png0000644000175000017500000000427211506140057016101 0ustar dandan00000000000000PNG  IHDR00WIDATh[]Wk}Iͨ%Ik/J&'Kmk_B(Q X2*R նTD1T`dfuZ{9S\pf.[Zo[ RWƭ}ww.HD) Bi\ɯ d-Ex:/ɒ{6n&B9#+P;d:^Ycmn_E@3Eф"]̫%u^½A1A40h8⹊Q61/\GŜ E&5c(B!81 89ו-0 :=R>_/,cwlʎz|Bk-؝u\*,J#<㠬E(UHst)䘠*“F d2a2BZEN}w Wi#`@U2Lk% h[gK]~uߧ9s(ݞjTDr*+/e/uXhܶks -dBlEQv}, $d:~O׊|&ljnڗkH}&(B҄T4:⻟L[B:\Fީz odXF4j&Z=M*qQfW vcQfF*n#.jkQV%xV(YΝF(d5޻]x0ƕ"MS^8Bq)ZlSRԈ1ѤӋp 6k v,1p@ǟ~4D1Z[X}vY "=N&$2f_e+J)C7ht.$@͐sםFgցʦ7.r7quoXhqe^XqS"h)y鏆sfoD)K,Pd8b9nCQQ<Ӹ2YH $X@^GRX=qG=ٕNI80=^WXINUX ΊHEy<ӟ|~4]Ҡbw C2`Ӑ@-(bo?&t ͗,y"`b ?oQij|_╣㌆}6QT'uU j˔֔,0#a R<äLEՉuNbv+X 1HZElբvHZaoa_LjK,ӣ'9^x[3ҨlJp,P)(٘[$1U\6{Or\>L~Vd٧Q+,䷂(P>s?G;*g^,/h {o~vqi_]ep4)8{Ve[BWXrd$wLbu}fU''SQvS MX>g $BQXoM瀗?Edb4y` d$zPD!~9?f__Iw.`f!IENDB`arista-0.9.7/presets/playstation.json0000644000175000017500000000570211576431717017307 0ustar dandan00000000000000{ "version": "1.2", "description": "H.264/AAC for Playstation", "author": { "name": "Daniel G. Taylor", "email": "dan@programmer-art.org" }, "default": "PS3", "make": "Sony", "presets": [ { "vcodec": { "passes": [ "profile=main speed-preset=slower bitrate=576 vbv-buf-capacity=500 pass=qual cabac=true dct8x8=false ref=3 bframes=3 b-pyramid=false weightb=true trellis=true me=umh subme=6 psy-tune=film threads=0" ], "container": "mp4mux", "name": "x264enc", "height": [ 128, 272 ], "width": [ 320, 480 ], "rate": [ "30000 / 1001", "30000 / 1001" ] }, "container": "mp4mux", "name": "PSP", "extension": "mp4", "icon": "file://psp.svg", "acodec": { "passes": [ "bitrate=131072 profile=LC" ], "container": "mp4mux", "name": "faac", "depth": [ 8, 16 ], "channels": [ 1, 2 ], "width": [ 8, 16 ], "rate": [ 48000, 48000 ] } }, { "vcodec": { "passes": [ "pass=cbr bitrate=1536 me=umh subme=6 ref=2 threads=0" ], "container": "qtmux", "name": "x264enc", "height": [ 240, 1080 ], "width": [ 320, 1920 ], "rate": [ 1, 30 ] }, "container": "qtmux", "name": "PS3", "extension": "mp4", "icon": "file://ps3.svg", "acodec": { "passes": [ "bitrate=196000 profile=LC" ], "container": "qtmux", "name": "faac", "depth": [ 8, 24 ], "channels": [ 1, 2 ], "width": [ 8, 24 ], "rate": [ 8000, 96000 ] } } ], "model": "Playstation", "icon": "file://ps3.svg" } arista-0.9.7/presets/nokia-n900.svg0000644000175000017500000001241011506140057016330 0ustar dandan00000000000000 arista-0.9.7/presets/ipod-nano.svg0000644000175000017500000010465411506140057016443 0ustar dandan00000000000000 image/svg+xml Portable Media - iPod Nano White October 2005 Ryan Collier (pseudo) http://www.tango-project.org http://www.pseudocode.org media device ipod MENU R arista-0.9.7/presets/ipod-video.svg0000644000175000017500000011763211576024620016622 0ustar dandan00000000000000 image/svg+xml Portable Media - iPod Video Black December 2005 Ryan Collier (pseudo) http://www.tango-project.org http://www.pseudocode.org device media ipod MENU R arista-0.9.7/presets/android-droid.png0000644000175000017500000000362711506140057017261 0ustar dandan00000000000000PNG  IHDR00W^IDATh՚MoSk'1VpD H 3V,0"H,,vTݵC,&--IdLb;80%>-VG:?yngkkN={ӧO̟1WVÇ.;w.H<ܤ e@AR,91AJ033Cl(ZSBY!DJl,K΄Z (_z%m)?24 vww'~nUq3ҤnsttT#sR>1H);z^r8Kª'ZWiof۷o'zf9JeRkO.sJEQP%sss?ՁzAz 8a9EAIɊ^x1gggGi ݛTw(qvCT &2EnÈv:jZ-6T>݉YMFey D0/^ j߸O9o:K(S' .]'.9'NN.VB{077Rz/[*Wp> wf3Gx5׮]x/\!q|әnGc=B4*T!_>=B(wsJc Z!dq*ʲ$c2Ѩt!suqp玳ӥn4MR$ɩq8_EQY>vJ%1zGO;>N< @91ךDrr6R g!˲|0x6d#$~?>r;(gՃ$IRvrj5vwwRzu{^|5lnnNZ,SĸN>D4^O'p//?cltA52qn%DE@)ɛ7oRUjK-->{w"di[X Yz{wIwѺ8F*Jl4~ ̟_`EQ[8}*J)6w+ ll >-e!~c$ b@e4M 8<DNލu `: I>y|2EYRw],w`Žq/|dyyyzR |C7xxICEBPQ}뉘(B$5#:m0 @J1$sL|/c J6WGN5J*Td"UjuK uR !V-N̏`Ooq)ƘSd$ <]<(~ d)ф @ 84AH"N/Chh `{;b[blɑd #(;V9q0n[EfrIENDB`arista-0.9.7/presets/android.svg0000644000175000017500000000766311506140057016201 0ustar dandan00000000000000 image/svg+xml arista-0.9.7/AUTHORS0000644000175000017500000000005211506140057013404 0ustar dandan00000000000000Daniel G. Taylor arista-0.9.7/arista/0000755000175000017500000000000011577653227013642 5ustar dandan00000000000000arista-0.9.7/arista/inputs/0000755000175000017500000000000011577653227015164 5ustar dandan00000000000000arista-0.9.7/arista/inputs/haldisco.py0000755000175000017500000002442711567743754017344 0ustar dandan00000000000000#!/usr/bin/env python """ Arista Input Device Discovery ============================= A set of tools to discover DVD-capable devices and Video4Linux devices that emit signals when disks that contain video are inserted or webcames / tuner cards are plugged in using DBus+HAL. License ------- Copyright 2008 - 2011 Daniel G. Taylor This file is part of Arista. Arista is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the License, or (at your option) any later version. Arista is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with Arista. If not, see . """ import gettext import gobject import dbus from dbus.mainloop.glib import DBusGMainLoop DBusGMainLoop(set_as_default=True) _ = gettext.gettext class InputSource(object): """ A simple object representing an input source. """ def __init__(self, udi, interface): """ Create a new input device. @type udi: string @param udi: The HAL device identifier for this device. @type interface: dbus.Interface @param interface: The Hal.Device DBus interface for this device. """ self.udi = udi self.interface = interface self.product = self.interface.GetProperty("info.product") @property def nice_label(self): """ Get a nice label for this device. @rtype: str @return: The label, in this case the product name """ return self.product class DVDDevice(InputSource): """ A simple object representing a DVD-capable device. """ def __init__(self, udi, interface): """ Create a new DVD device. @type udi: string @param udi: The HAL device identifier for this device. @type interface: dbus.Interface @param interface: The Hal.Device DBus interface for this device. """ super(DVDDevice, self).__init__(udi, interface) self.video = False self.video_udi = "" self.label = "" @property def path(self): """ Get the path to this device in the filesystem. @rtype: str @return: Path to device """ return self.interface.GetProperty("block.device") @property def media(self): """ Check whether media is in the device. @rtype: bool @return: True if media is present in the device. """ return self.interface.GetProperty("storage.removable.media_available") @property def nice_label(self, label=None): """ Get a nice label that looks like "The Big Lebowski" if a video disk is found, otherwise the model name. @type label: string @param label: Use this label instead of the disk label. @rtype: string @return: The nicely formatted label. """ if not label: label = self.label if label: words = [word.capitalize() for word in label.split("_")] return " ".join(words) else: return self.product class V4LDevice(InputSource): """ A simple object representing a Video 4 Linux device. """ @property def path(self): """ Get the path to this device in the filesystem. @rtype: str @return: Path to device """ return self.interface.GetProperty("video4linux.device") @property def version(self): """ Get the Video 4 Linux version of this device. @rtype: str @return: The version, either '1' or '2' """ return self.interface.GetProperty("video4linux.version") class InputFinder(gobject.GObject): """ An object that will find and monitor DVD-capable devices on your machine and emit signals when video disks are inserted / removed. Signals: - disc-found(InputFinder, DVDDevice, label) - disc-lost(InputFinder, DVDDevice, label) - v4l-capture-found(InputFinder, V4LDevice) - v4l-capture-lost(InputFinder, V4LDevice) """ __gsignals__ = { "disc-found": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT)), "disc-lost": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT)), "v4l-capture-found": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)), "v4l-capture-lost": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)), } def __init__(self): """ Create a new DVDFinder and attach to the DBus system bus to find device information through HAL. """ self.__gobject_init__() self.bus = dbus.SystemBus() self.hal_obj = self.bus.get_object("org.freedesktop.Hal", "/org/freedesktop/Hal/Manager") self.hal = dbus.Interface(self.hal_obj, "org.freedesktop.Hal.Manager") self.drives = {} self.capture_devices = {} udis = self.hal.FindDeviceByCapability("storage.cdrom") for udi in udis: dev_obj = self.bus.get_object("org.freedesktop.Hal", udi) dev = dbus.Interface(dev_obj, "org.freedesktop.Hal.Device") if dev.GetProperty("storage.cdrom.dvd"): #print "Found DVD drive!" block = dev.GetProperty("block.device") self.drives[block] = DVDDevice(udi, dev) udis = self.hal.FindDeviceByCapability("volume.disc") for udi in udis: dev_obj = self.bus.get_object("org.freedesktop.Hal", udi) dev = dbus.Interface(dev_obj, "org.freedesktop.Hal.Device") if dev.PropertyExists("volume.disc.is_videodvd"): if dev.GetProperty("volume.disc.is_videodvd"): block = dev.GetProperty("block.device") label = dev.GetProperty("volume.label") if self.drives.has_key(block): self.drives[block].video = True self.drives[block].video_udi = udi self.drives[block].label = label udis = self.hal.FindDeviceByCapability("video4linux") for udi in udis: dev_obj = self.bus.get_object("org.freedesktop.Hal", udi) dev = dbus.Interface(dev_obj, "org.freedesktop.Hal.Device") if dev.QueryCapability("video4linux.video_capture"): device = dev.GetProperty("video4linux.device") self.capture_devices[device] = V4LDevice(udi, dev) self.hal.connect_to_signal("DeviceAdded", self.device_added) self.hal.connect_to_signal("DeviceRemoved", self.device_removed) def device_added(self, udi): """ Called when a device has been added to the system. If the device is a volume with a video DVD the "video-found" signal is emitted. """ dev_obj = self.bus.get_object("org.freedesktop.Hal", udi) dev = dbus.Interface(dev_obj, "org.freedesktop.Hal.Device") if dev.PropertyExists("block.device"): block = dev.GetProperty("block.device") if self.drives.has_key(block): if dev.PropertyExists("volume.disc.is_videodvd"): if dev.GetProperty("volume.disc.is_videodvd"): label = dev.GetProperty("volume.label") self.drives[block].video = True self.drives[block].video_udi = udi self.drives[block].label = label self.emit("disc-found", self.drives[block], label) elif dev.PropertyExists("video4linux.device"): device = dev.GetProperty("video4linux.device") capture_device = V4LDevice(udi, dev) self.capture_devices[device] = capture_device self.emit("v4l-capture-found", capture_device) def device_removed(self, udi): """ Called when a device has been removed from the signal. If the device is a volume with a video DVD the "video-lost" signal is emitted. """ for block, drive in self.drives.items(): if drive.video_udi == udi: drive.video = False drive.udi = "" label = drive.label drive.label = "" self.emit("disc-lost", drive, label) break for device, capture in self.capture_devices.items(): if capture.udi == udi: self.emit("v4l-capture-lost", self.capture_devices[device]) del self.capture_devices[device] break gobject.type_register(InputFinder) if __name__ == "__main__": # Run a test to print out DVD-capable devices and whether or not they # have video disks in them at the moment. import gobject gobject.threads_init() def found(finder, device, label): print device.path + ": " + label def lost(finder, device, label): print device.path + ": " + _("Not mounted.") finder = InputFinder() finder.connect("disc-found", found) finder.connect("disc-lost", lost) for device, drive in finder.drives.items(): print drive.nice_label + ": " + device for device, capture in finder.capture_devices.items(): print capture.nice_label + ": " + device loop = gobject.MainLoop() loop.run() arista-0.9.7/arista/inputs/udevdisco.py0000644000175000017500000001663211567743766017542 0ustar dandan00000000000000#!/usr/bin/env python """ Arista Input Device Discovery ============================= A set of tools to discover DVD-capable devices and Video4Linux devices that emit signals when disks that contain video are inserted or webcames / tuner cards are plugged in using udev. http://github.com/nzjrs/python-gudev/blob/master/test.py http://www.kernel.org/pub/linux/utils/kernel/hotplug/gudev/GUdevDevice.html License ------- Copyright 2008 - 2011 Daniel G. Taylor This file is part of Arista. Arista is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the License, or (at your option) any later version. Arista is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with Arista. If not, see . """ import gettext import gobject import gudev _ = gettext.gettext class InputSource(object): """ A simple object representing an input source. """ def __init__(self, device): """ Create a new input device. @type device: gudev.Device @param device: The device that we are using as an input source """ self.device = device @property def nice_label(self): """ Get a nice label for this device. @rtype: str @return: The label, in this case the product name """ return self.path @property def path(self): """ Get the device block in the filesystem for this device. @rtype: string @return: The device block, such as "/dev/cdrom". """ return self.device.get_device_file() class DVDDevice(InputSource): """ A simple object representing a DVD-capable device. """ @property def media(self): """ Check whether media is in the device. @rtype: bool @return: True if media is present in the device. """ return self.device.has_property("ID_FS_TYPE") @property def nice_label(self): if self.device.has_property("ID_FS_LABEL"): label = self.device.get_property("ID_FS_LABEL") return " ".join([word.capitalize() for word in label.split("_")]) else: return self.device.get_property("ID_MODEL") class V4LDevice(InputSource): """ A simple object representing a Video 4 Linux device. """ @property def nice_label(self): return self.device.get_sysfs_attr("name") @property def version(self): """ Get the video4linux version of this device. """ if self.device.has_property("ID_V4L_VERSION"): return self.device.get_property("ID_V4L_VERSION") else: # Default to version 2 return "2" class InputFinder(gobject.GObject): """ An object that will find and monitor DVD-capable devices on your machine and emit signals when video disks are inserted / removed. Signals: - disc-found(InputFinder, DVDDevice, label) - disc-lost(InputFinder, DVDDevice, label) - v4l-capture-found(InputFinder, V4LDevice) - v4l-capture-lost(InputFinder, V4LDevice) """ __gsignals__ = { "disc-found": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT)), "disc-lost": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT)), "v4l-capture-found": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)), "v4l-capture-lost": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)), } def __init__(self): """ Create a new DVDFinder and attach to the udev system to listen for events. """ self.__gobject_init__() self.client = gudev.Client(["video4linux", "block"]) self.drives = {} self.capture_devices = {} for device in self.client.query_by_subsystem("video4linux"): block = device.get_device_file() self.capture_devices[block] = V4LDevice(device) for device in self.client.query_by_subsystem("block"): if device.has_property("ID_CDROM"): block = device.get_device_file() self.drives[block] = DVDDevice(device) self.client.connect("uevent", self.event) def event(self, client, action, device): """ Handle a udev event. """ return { "add": self.device_added, "change": self.device_changed, "remove": self.device_removed, }.get(action, lambda x,y: None)(device, device.get_subsystem()) def device_added(self, device, subsystem): """ Called when a device has been added to the system. """ print device, subsystem if subsystem == "video4linux": block = device.get_device_file() self.capture_devices[block] = V4LDevice(device) self.emit("v4l-capture-found", self.capture_devices[block]) def device_changed(self, device, subsystem): """ Called when a device has changed. If the change represents a disc being inserted or removed, fire the disc-found or disc-lost signals respectively. """ if subsystem == "block" and device.has_property("ID_CDROM"): block = device.get_device_file() dvd_device = self.drives[block] media_changed = dvd_device.media != device.has_property("ID_FS_TYPE") dvd_device.device = device if media_changed: if dvd_device.media: self.emit("disc-found", dvd_device, dvd_device.nice_label) else: self.emit("disc-lost", dvd_device, dvd_device.nice_label) def device_removed(self, device, subsystem): """ Called when a device has been removed from the system. """ pass gobject.type_register(InputFinder) if __name__ == "__main__": # Run a test to print out DVD-capable devices and whether or not they # have video disks in them at the moment. import gobject gobject.threads_init() def found(finder, device, label): print device.path + ": " + label def lost(finder, device, label): print device.path + ": " + _("Not mounted.") finder = InputFinder() finder.connect("disc-found", found) finder.connect("disc-lost", lost) for device, drive in finder.drives.items(): print drive.nice_label + ": " + device for device, capture in finder.capture_devices.items(): print capture.nice_label + " V4Lv" + str(capture.version) + ": " + device loop = gobject.MainLoop() loop.run() arista-0.9.7/arista/inputs/__init__.py0000644000175000017500000000250411576736412017273 0ustar dandan00000000000000#!/usr/bin/env python """ Arista Input Device Discovery ============================= This module provides methods to discover video-capable devices and disks using various backends. License ------- Copyright 2008 - 2011 Daniel G. Taylor This file is part of Arista. Arista is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the License, or (at your option) any later version. Arista is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with Arista. If not, see . """ import gettext import logging _ = gettext.gettext log = logging.getLogger("inputs") try: from udevdisco import * except ImportError: log.debug(_("Falling back to HAL device discovery")) try: from haldisco import * except: log.exception(_("Couldn't import udev- or HAL-based device discovery!")) raise arista-0.9.7/arista/queue.py0000644000175000017500000001660111576741234015337 0ustar dandan00000000000000#!/usr/bin/env python """ Arista Queue Handling ===================== A set of tools to handle creating a queue of transcodes and running them one after the other. License ------- Copyright 2008 - 2011 Daniel G. Taylor This file is part of Arista. Arista is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the License, or (at your option) any later version. Arista is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with Arista. If not, see . """ import gettext import logging import threading import time import gobject import gst from .transcoder import Transcoder _ = gettext.gettext _log = logging.getLogger("arista.queue") class QueueEntry(object): """ An entry in the queue. """ def __init__(self, options): """ @type options: arista.transcoder.TranscoderOptions @param options: The input options (uri, subs) to process """ self.options = options # Set when QueueEntry.stop() was called so you can react accordingly self.force_stopped = False def __repr__(self): return _("Queue entry %(infile)s -> %(preset)s -> %(outfile)s" % { "infile": self.options.uri, "preset": self.options.preset, "outfile": self.options.output_uri, }) def stop(self): """ Stop this queue entry from processing. """ if hasattr(self, "transcoder") and self.transcoder.pipe: self.transcoder.pipe.send_event(gst.event_new_eos()) self.transcoder.start() self.force_stopped = True class TranscodeQueue(gobject.GObject): """ A generic queue for transcoding. This object acts as a list of QueueEntry items with a couple convenience methods. A timeout in the gobject main loop continuously checks for new entries and starts them as needed. """ __gsignals__ = { "entry-added": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)), # QueueEntry "entry-discovered": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT, # QueueEntry gobject.TYPE_PYOBJECT, # info gobject.TYPE_PYOBJECT)), # is_media "entry-pass-setup": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)), # QueueEntry "entry-start": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)), # QueueEntry "entry-error": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT, # QueueEntry gobject.TYPE_PYOBJECT,)), # errorstr "entry-complete": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)), # QueueEntry } def __init__(self, check_interval = 500): """ Create a new queue, setup locks, and register a callback. @type check_interval: int @param check_interval: The interval in milliseconds between checking for new queue items """ self.__gobject_init__() self._queue = [] self.running = True self.pipe_running = False self.enc_pass = 0 gobject.timeout_add(check_interval, self._check_queue) def __getitem__(self, index): """ Safely get an item from the queue. """ item = self._queue[index] return item def __setitem__(self, index, item): """ Safely modify an item in the queue. """ self._queue[index] = item def __delitem__(self, index): """ Safely delete an item from the queue. """ if index == 0 and self.pipe_running: self.pipe_running = False del self._queue[index] def __len__(self): """ Safely get the length of the queue. """ return len(self._queue) def __repr__(self): """ Safely get a representation of the queue and its items. """ return _("Transcode queue: ") + repr(self._queue) def insert(self, pos, entry): """ Insert an entry at an arbitrary position. """ self._queue.insert(pos, entry) def append(self, options): """ Append a QueueEntry to the queue. """ # Sanity check of input options if not options.uri or not options.preset or not options.output_uri: raise ValueError("Invalid input options %s" % str(options)) self._queue.append(QueueEntry(options)) self.emit("entry-added", self._queue[-1]) def remove(self, entry): """ Remove a QueueEntry from the queue. """ self._queue.remove(entry) def _check_queue(self): """ This method is invoked periodically by the gobject mainloop. It watches the queue and when items are added it will call the callback and watch over the pipe until it completes, then loop for each item so that each encode is executed after the previous has finished. """ item = None if len(self._queue) and not self.pipe_running: item = self._queue[0] if item: _log.debug(_("Found item in queue! Queue is %(queue)s" % { "queue": str(self) })) item.transcoder = Transcoder(item.options) item.transcoder.connect("complete", self._on_complete) def discovered(transcoder, info, is_media): self.emit("entry-discovered", item, info, is_media) if not is_media: self.emit("entry-error", item, _("Not a recognized media file!")) self._queue.pop(0) self.pipe_running = False def pass_setup(transcoder): self.emit("entry-pass-setup", item) if transcoder.enc_pass == 0: self.emit("entry-start", item) def error(transcoder, errorstr): self.emit("entry-error", item, errorstr) self._queue.pop(0) self.pipe_running = False item.transcoder.connect("discovered", discovered) item.transcoder.connect("pass-setup", pass_setup) item.transcoder.connect("error", error) self.pipe_running = True return True def _on_complete(self, transcoder): """ An entry is complete! """ self.emit("entry-complete", self._queue[0]) self._queue.pop(0) self.pipe_running = False arista-0.9.7/arista/presets.py0000644000175000017500000005426111576245363015706 0ustar dandan00000000000000#!/usr/bin/env python """ Arista Presets ============== Objects for handling devices, presets, etc. Example Use ----------- Presets are automatically loaded when the module is initialized. >>> import arista.presets >>> arista.presets.get() { "name": Device, ... } If you have other paths to load, use: >>> arista.presets.load("file") >>> arista.presets.load_directory("path") License ------- Copyright 2008 - 2011 Daniel G. Taylor This file is part of Arista. Arista is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the License, or (at your option) any later version. Arista is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with Arista. If not, see . """ try: import json except ImportError: import simplejson as json import gettext import shutil import logging import os import subprocess import sys import tarfile import urllib2 import gobject import gst import gst.pbutils import utils _ = gettext.gettext _presets = {} _log = logging.getLogger("arista.presets") class Fraction(gst.Fraction): """ An object for storing a fraction as two integers. This is a subclass of gst.Fraction that allows initialization from a string representation like "1/2". """ def __init__(self, value = "1"): """ @type value: str @param value: Either a single number or two numbers separated by a '/' that represent a fraction """ parts = str(value).split("/") if len(parts) == 1: gst.Fraction.__init__(self, int(value), 1) elif len(parts) == 2: gst.Fraction.__init__(self, int(parts[0]), int(parts[1])) else: raise ValueError(_("Not a valid integer or fraction: %(value)s!") % { "value": value, }) class Author(object): """ An author object that stores a name and an email. """ def __init__(self, name = "", email = ""): """ @type name: str @param name: The author's full name @type email: str @param email: The email address of the author """ self.name = name self.email = email def __repr__(self): return (self.name or self.email) and "%s <%s>" % (self.name, self.email) or "" class Device(object): """ A device holds information about a product and several presets for that product. This includes the make, model, version, etc. """ def __init__(self, make = "Generic", model = "", description = "", author = None, version = "", presets = None, icon = "", default = ""): """ @type make: str @param make: The make of the product, e.g. Apple @type model: str @param model: The model of the product, e.g. iPod @type description: str @param description: A user-friendly description of these presets @type author: Author @param author: The author of these presets @type version: str @param version: The version of these presets (not the product) @type presets: dict @param presets: A dictionary of presets where the keys are the preset names @type icon: str @param icon: A URI to an icon. Only file:// and stock:// are allowed, where stock refers to a GTK stock icon @type default: str @param default: The default preset name to use (if blank then the first available preset is used) """ self.make = make self.model = model self.description = description if author is not None: self.author = author else: self.author = Author() self.version = version self.presets = presets and presets or {} self.icon = icon self.default = default self.filename = None def __repr__(self): return "%s %s" % (self.make, self.model) @property def name(self): """ Get a friendly name for this device. @rtype: str @return: Either the make and model or just the model of the device for generic devices """ if self.make == "Generic": return self.model else: return "%s %s" % (self.make, self.model) @property def short_name(self): """ Return the short name of this device preset. """ return ".".join(os.path.basename(self.filename).split(".")[:-1]) @property def default_preset(self): """ Get the default preset for this device. If no default has been defined, the first preset that was loaded is returned. If no presets have been defined an exception is raised. @rtype: Preset @return: The default preset for this device @raise ValueError: No presets have been defined for this device """ if self.default in self.presets: preset = self.presets[self.default] elif len(self.presets): preset = self.presets.values()[0] else: raise ValueError(_("No presets have been defined for " \ "%(name)s") % { "name": self.name }) return preset @property def json(self): data = { "make": self.make, "model": self.model, "description": self.description, "author": { "name": self.author.name, "email": self.author.email, }, "version": self.version, "icon": self.icon, "default": self.default, "presets": [], } for name, preset in self.presets.items(): rates = [] for x in preset.acodec.rate[0], preset.acodec.rate[1], preset.vcodec.rate[0], preset.vcodec.rate[1]: if isinstance(x, gst.Fraction): if x.denom == 1: rates.append("%s" % x.num) else: rates.append("%s/%s" % (x.num, x.denom)) else: rates.append("%s" % x) data["presets"].append({ "name": preset.name, "description": preset.description, "author": { "name": preset.author.name, "email": preset.author.email, }, "container": preset.container, "extension": preset.extension, "icon": preset.icon, "version": preset.version, "acodec": { "name": preset.acodec.name, "container": preset.acodec.container, "rate": [rates[0], rates[1]], "passes": preset.acodec.passes, "width": preset.acodec.width, "depth": preset.acodec.depth, "channels": preset.acodec.channels, }, "vcodec": { "name": preset.vcodec.name, "container": preset.vcodec.container, "rate": [rates[2], rates[3]], "passes": preset.vcodec.passes, "width": preset.vcodec.width, "height": preset.vcodec.height, "transform": preset.vcodec.transform, }, }) return json.dumps(data, indent=4) def save(self): """ Save this device and its presets to a file. The device.filename must be set to a valid path or an error will be thrown. """ open(self.filename, "w").write(self.json) def export(self, filename): """ Export this device and all presets to a file. Creates a bzipped tarball of the JSON and all associated images that can be easily imported later. """ # Make sure all changes are saved self.save() # Gather image files images = set() for name, preset in self.presets.items(): if preset.icon: images.add(preset.icon[7:]) files = " ".join([os.path.basename(self.filename)] + list(images)) cwd = os.getcwd() os.chdir(os.path.dirname(self.filename)) subprocess.call("tar -cjf %s %s" % (filename, files), shell=True) os.chdir(cwd) @staticmethod def from_json(data): parsed = json.loads(data) device = Device(**{ "make": parsed.get("make", "Generic"), "model": parsed.get("model", ""), "description": parsed.get("description", ""), "author": Author( name = parsed.get("author", {}).get("name", ""), email = parsed.get("author", {}).get("email", ""), ), "version": parsed.get("version", ""), "icon": parsed.get("icon", ""), "default": parsed.get("default", ""), }) for preset in parsed.get("presets", []): acodec = preset.get("acodec", {}) vcodec = preset.get("vcodec", {}) device.presets[preset.get("name", "")] = Preset(**{ "name": preset.get("name", ""), "description": preset.get("description", device.description), "author": Author( name = preset.get("author", {}).get("name", device.author.name), email = preset.get("author", {}).get("email", device.author.email), ), "container": preset.get("container", ""), "extension": preset.get("extension", ""), "version": preset.get("version", device.version), "icon": preset.get("icon", device.icon), "acodec": AudioCodec(**{ "name": acodec.get("name", ""), "container": acodec.get("container", ""), "rate": [int(x) for x in acodec.get("rate", [])], "passes": acodec.get("passes", []), "width": acodec.get("width", []), "depth": acodec.get("depth", []), "channels": acodec.get("channels", []), }), "vcodec": VideoCodec(**{ "name": vcodec.get("name", ""), "container": vcodec.get("container", ""), "rate": [Fraction(x) for x in vcodec.get("rate", [])], "passes": vcodec.get("passes", []), "width": vcodec.get("width", []), "height": vcodec.get("height", []), "transform": vcodec.get("transform", ""), }), "device": device, }) return device class Preset(object): """ A preset representing audio and video encoding options for a particular device. """ def __init__(self, name = "", container = "", extension = "", acodec = None, vcodec = None, device = None, icon = None, version = None, description = None, author = None): """ @type name: str @param name: The name of the preset, e.g. "High Quality" @type container: str @param container: The container element name, e.g. ffmux_mp4 @type extension: str @param extension: The filename extension to use, e.g. mp4 @type acodec: AudioCodec @param acodec: The audio encoding settings @type vcodec: VideoCodec @param vcodec: The video encoding settings @type device: Device @param device: A link back to the device this preset belongs to """ self.name = name self.description = description self.author = author self.container = container self.extension = extension self.acodec = acodec self.vcodec = vcodec self.device = device self.version = version self.icon = icon def __repr__(self): return "%s %s" % (self.name, self.container) @property def pass_count(self): """ @rtype: int @return: The number of passes in this preset """ return max(len(self.vcodec.passes), len(self.acodec.passes)) @property def slug(self): """ @rtype: str @return: A slug based on the preset name safe to use as a filename or in links """ slug = ".".join(os.path.basename(self.device.filename).split(".")[:-1]) + "-" + self.name.lower() return slug.replace(" ", "_").replace("'", "").replace("/", "") def check_elements(self, callback, *args): """ Check the elements used in this preset. If they don't exist then let GStreamer offer to install them. @type callback: callable(preset, success, *args) @param callback: A method to call when the elements are all available or installation failed @rtype: bool @return: True if required elements are available, False otherwise """ elements = [ # Elements defined in external files self.container, self.acodec.name, self.vcodec.name, # Elements used internally "decodebin2", "videobox", "ffmpegcolorspace", "videoscale", "videorate", "ffdeinterlace", "audioconvert", "audiorate", "audioresample", "tee", "queue", ] missing = [] missingdesc = "" for element in elements: if not gst.element_factory_find(element): missing.append(gst.pbutils.missing_element_installer_detail_new(element)) if missingdesc: missingdesc += ", %s" % element else: missingdesc += element if missing: _log.info("Attempting to install elements: %s" % missingdesc) if gst.pbutils.install_plugins_supported(): def install_done(result, null): if result == gst.pbutils.INSTALL_PLUGINS_INSTALL_IN_PROGRESS: # Ignore start of installer message pass elif result == gst.pbutils.INSTALL_PLUGINS_SUCCESS: callback(self, True, *args) else: _log.error("Unable to install required elements!") callback(self, False, *args) context = gst.pbutils.InstallPluginsContext() gst.pbutils.install_plugins_async(missing, context, install_done, "") else: _log.error("Installing elements not supported!") gobject.idle_add(callback, self, False, *args) else: gobject.idle_add(callback, self, True, *args) class Codec(object): """ Settings for encoding audio or video. This object defines options common to both audio and video encoding. """ def __init__(self, name=None, container=None, passes=None): """ @type name: str @param name: The name of the encoding GStreamer element, e.g. faac @type container: str @param container: A container to fall back to if only audio xor video is present, e.g. for plain mp3 audio you may not want to wrap it in an avi or mp4; if not set it defaults to the preset container """ self.name = name and name or "" self.container = container and container or "" self.passes = passes and passes or [] self.rate = (Fraction(), Fraction()) def __repr__(self): return "%s %s" % (self.name, self.container) class AudioCodec(Codec): """ Settings for encoding audio. """ def __init__(self, name=None, container=None, rate=None, passes=None, width=None, depth=None, channels=None): Codec.__init__(self, name=name, container=container, passes=passes) self.rate = rate and rate or (8000, 96000) self.width = width and width or (8, 24) self.depth = depth and depth or (8, 24) self.channels = channels and channels or (1, 6) class VideoCodec(Codec): """ Settings for encoding video. """ def __init__(self, name=None, container=None, rate=None, passes=None, width=None, height=None, transform=None): Codec.__init__(self, name=name, container=container, passes=passes) self.rate = rate and rate or (Fraction("1"), Fraction("60")) self.width = width and width or (2, 1920) self.height = height and height or (2, 1080) self.transform = transform def load(filename): """ Load a filename into a new Device. @type filename: str @param filename: The file to load @rtype: Device @return: A new device instance loaded from the file """ device = Device.from_json(open(filename).read()) device.filename = filename _log.debug(_("Loaded device %(device)s (%(presets)d presets)") % { "device": device.name, "presets": len(device.presets), }) return device def load_directory(directory): """ Load an entire directory of device presets. @type directory: str @param directory: The path to load @rtype: dict @return: A dictionary of all the loaded devices """ global _presets for filename in os.listdir(directory): if filename.endswith("json"): try: _presets[filename[:-5]] = load(os.path.join(directory, filename)) except Exception, e: _log.warning("Problem loading %s! %s" % (filename, str(e))) return _presets def get(): """ Get all loaded device presets. @rtype: dict @return: A dictionary of Device objects where the keys are the short name for the device """ return _presets def version_info(): """ Generate a string of version information. Each line contains "name, version" for a particular preset file, where name is the key found in arista.presets.get(). This is used for checking for updates. """ info = "" for name, device in _presets.items(): info += "%s, %s\n" % (name, device.version) return info def extract(stream): """ Extract a preset file into the user's local presets directory. @type stream: a file-like object @param stream: The opened bzip2-compressed tar file of the preset @rtype: list @return: The installed device preset shortnames ["name1", "name2", ...] """ local_path = os.path.expanduser(os.path.join("~", ".arista", "presets")) if not os.path.exists(local_path): os.makedirs(local_path) tar = tarfile.open(mode="r|bz2", fileobj=stream) _log.debug(_("Extracting %(filename)s") % { "filename": hasattr(stream, "name") and stream.name or "data stream", }) tar.extractall(path=local_path) return [x[:-5] for x in tar.getnames() if x.endswith(".json")] def fetch(location, name): """ Attempt to fetch and install a preset. Presets are always installed to ~/.arista/presets/. @type location: str @param location: The location of the preset @type name: str @param name: The name of the preset to fetch, without any extension @rtype: list @return: The installed device preset shortnames ["name1", "name2", ...] """ if not location.endswith("/"): location = location + "/" path = location + name + ".tar.bz2" _log.debug(_("Fetching %(location)s") % { "location": path, }) updated = [] try: f = urllib2.urlopen(path) updated += extract(f) except Exception, e: _log.warning(_("There was an error fetching and installing " \ "%(location)s: %(error)s") % { "location": path, "error": str(e), }) return updated def reset(overwrite=False, ignore_initial=False): # Automatically load presets global _presets _presets = {} load_path = utils.get_write_path("presets") if ignore_initial or not os.path.exists(os.path.join(load_path, ".initial_complete")): # Do initial population of presets from system install / cwd if not os.path.exists(load_path): os.makedirs(load_path) # Write file to say we have done this open(os.path.join(load_path, ".initial_complete"), "w").close() # Copy actual files for path in utils.get_search_paths(): full = os.path.join(path, "presets") if full != load_path and os.path.exists(full): for f in os.listdir(full): # Do not overwrite existing files if overwrite or not os.path.exists(os.path.join(load_path, f)): shutil.copy2(os.path.join(full, f), load_path) load_directory(load_path) reset() arista-0.9.7/arista/transcoder.py0000644000175000017500000007222511576667053016371 0ustar dandan00000000000000#!/usr/bin/env python """ Arista Transcoder ================= A class to transcode files given a preset. License ------- Copyright 2009 - 2011 Daniel G. Taylor This file is part of Arista. Arista is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the License, or (at your option) any later version. Arista is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with Arista. If not, see . """ import gettext import logging import os import os.path import sys import time # Default to 2 CPUs as most seem to be dual-core these days CPU_COUNT = 2 try: import multiprocessing try: CPU_COUNT = multiprocessing.cpu_count() except NotImplementedError: pass except ImportError: pass import gobject import gst import discoverer _ = gettext.gettext _log = logging.getLogger("arista.transcoder") # ============================================================================= # Custom exceptions # ============================================================================= class TranscoderException(Exception): """ A generic transcoder exception to be thrown when something goes wrong. """ pass class TranscoderStatusException(TranscoderException): """ An exception to be thrown when there is an error retrieving the current status of an transcoder. """ pass class PipelineException(TranscoderException): """ An exception to be thrown when the transcoder fails to construct a working pipeline for whatever reason. """ pass # ============================================================================= # Transcoder Options # ============================================================================= class TranscoderOptions(object): """ Options pertaining to the input/output location, presets, subtitles, etc. """ def __init__(self, uri = None, preset = None, output_uri = None, ssa = False, subfile = None, subfile_charset = None, font = "Sans Bold 16", deinterlace = None, crop = None): """ @type uri: str @param uri: The URI to the input file, device, or stream @type preset: Preset @param preset: The preset to convert to @type output_uri: str @param output_uri: The URI to the output file, device, or stream @type subfile: str @param subfile: The location of the subtitle file @type subfile_charset: str @param subfile_charset: Subtitle file character encoding, e.g. 'utf-8' or 'latin-1' @type font: str @param font: Pango font description @type deinterlace: bool @param deinterlace: Force deinterlacing of the input data @type crop: int tuple @param crop: How much should be cropped on each side (top, right, bottom, left) """ self.reset(uri, preset, output_uri, ssa,subfile, subfile_charset, font, deinterlace, crop) def reset(self, uri = None, preset = None, output_uri = None, ssa = False, subfile = None, subfile_charset = None, font = "Sans Bold 16", deinterlace = None, crop = None): """ Reset the input options to nothing. """ self.uri = uri self.preset = preset self.output_uri = output_uri self.ssa = ssa self.subfile = subfile self.subfile_charset = subfile_charset self.font = font self.deinterlace = deinterlace self.crop = crop # ============================================================================= # The Transcoder # ============================================================================= class Transcoder(gobject.GObject): """ The transcoder - converts media between formats. """ __gsignals__ = { "discovered": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT, # info gobject.TYPE_PYOBJECT)), # is_media "pass-setup": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, tuple()), "pass-complete": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, tuple()), "message": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT, # bus gobject.TYPE_PYOBJECT)), # message "complete": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, tuple()), "error": (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)), # error } def __init__(self, options): """ @type options: TranscoderOptions @param options: The options, like input uri, subtitles, preset, output uri, etc. """ self.__gobject_init__() self.options = options self.pipe = None self.enc_pass = 0 self._percent_cached = 0 self._percent_cached_time = 0 if options.uri.startswith("dvd://") and len(options.uri.split("@")) < 2: # This is a DVD and no title is yet selected... find the best # candidate by searching for the longest title! self.options.uri += "@0" self.dvd_infos = [] def _got_info(info, is_media): self.dvd_infos.append([discoverer, info]) parts = self.options.uri.split("@") fname = parts[0] title = int(parts[1]) if title >= 8: # We've checked 8 titles, let's give up and pick the # most likely to be the main feature. longest = 0 self.info = None for disco, info in self.dvd_infos: if info.length > longest: self.discoverer = disco self.info = info longest = info.length if not self.info: self.emit("error", _("No valid DVD title found!")) return self.options.uri = self.info.filename _log.debug(_("Longest title found is %(filename)s") % { "filename": self.options.uri, }) self.emit("discovered", self.info, self.info.is_video or self.info.is_audio) if self.info.is_video or self.info.is_audio: try: self._setup_pass() except PipelineException, e: self.emit("error", str(e)) return self.start() return self.options.uri = fname + "@" + str(title + 1) self.discoverer = discoverer.Discoverer(options.uri) self.discoverer.connect("discovered", _got_info) self.discoverer.discover() self.discoverer = discoverer.Discoverer(options.uri) self.discoverer.connect("discovered", _got_info) self.discoverer.discover() else: def _got_info(info, is_media): self.info = info self.emit("discovered", info, is_media) if info.is_video or info.is_audio: try: self._setup_pass() except PipelineException, e: self.emit("error", str(e)) return self.start() self.info = None self.discoverer = discoverer.Discoverer(options.uri) self.discoverer.connect("discovered", _got_info) self.discoverer.discover() @property def infile(self): """ Provide access to the input uri for backwards compatibility after moving to TranscoderOptions for uri, subtitles, etc. @rtype: str @return: The input uri to process """ return self.options.uri @property def preset(self): """ Provide access to the output preset for backwards compatibility after moving to TranscoderOptions. @rtype: Preset @return: The output preset """ return self.options.preset def _get_source(self): """ Return a file or dvd source string usable with gst.parse_launch. This method uses self.infile to generate its output. @rtype: string @return: Source to prepend to gst-launch style strings. """ if self.infile.startswith("dvd://"): parts = self.infile.split("@") device = parts[0][6:] title = 1 if len(parts) > 1: try: title = int(parts[1]) except: title = 1 if self.options.deinterlace is None: self.options.deinterlace = True return "dvdreadsrc device=\"%s\" title=%d ! decodebin2 name=dmux" % (device, title) elif self.infile.startswith("v4l://") or self.infile.startswith("v4l2://"): filename = self.infile elif self.infile.startswith("file://"): filename = self.infile else: filename = "file://" + os.path.abspath(self.infile) return "uridecodebin uri=\"%s\" name=dmux" % filename def _setup_pass(self): """ Setup the pipeline for an encoding pass. This configures the GStreamer elements and their setttings for a particular pass. """ # Get limits and setup caps self.vcaps = gst.Caps() self.vcaps.append_structure(gst.Structure("video/x-raw-yuv")) self.vcaps.append_structure(gst.Structure("video/x-raw-rgb")) self.acaps = gst.Caps() self.acaps.append_structure(gst.Structure("audio/x-raw-int")) self.acaps.append_structure(gst.Structure("audio/x-raw-float")) # ===================================================================== # Setup video, audio/video, or audio transcode pipeline # ===================================================================== # Figure out which mux element to use container = None if self.info.is_video and self.info.is_audio: container = self.preset.container elif self.info.is_video: container = self.preset.vcodec.container and \ self.preset.vcodec.container or \ self.preset.container elif self.info.is_audio: container = self.preset.acodec.container and \ self.preset.acodec.container or \ self.preset.container mux_str = "" if container: mux_str = "%s name=mux ! queue !" % container # Decide whether or not we are using a muxer and link to it or just # the file sink if we aren't (for e.g. mp3 audio) if mux_str: premux = "mux." else: premux = "sink." src = self._get_source() cmd = "%s %s filesink name=sink " \ "location=\"%s\"" % (src, mux_str, self.options.output_uri) if self.info.is_video and self.preset.vcodec: # ================================================================= # Update limits based on what the encoder really supports # ================================================================= element = gst.element_factory_make(self.preset.vcodec.name, "vencoder") # TODO: Add rate limits based on encoder sink below for cap in element.get_pad("sink").get_caps(): for field in ["width", "height"]: if cap.has_field(field): value = cap[field] if isinstance(value, gst.IntRange): vmin, vmax = value.low, value.high else: vmin, vmax = value, value cur = getattr(self.preset.vcodec, field) if cur[0] < vmin: cur = (vmin, cur[1]) setattr(self.preset.vcodec, field, cur) if cur[1] > vmax: cur = (cur[0], vmax) setattr(self.preset.vcodec, field, cur) # ================================================================= # Calculate video width/height, crop and add black bars if necessary # ================================================================= vcrop = "" crop = [0, 0, 0, 0] if self.options.crop: crop = self.options.crop vcrop = "videocrop top=%i right=%i bottom=%i left=%i ! " % \ (crop[0], crop[1], crop[2], crop[3]) wmin, wmax = self.preset.vcodec.width hmin, hmax = self.preset.vcodec.height owidth = self.info.videowidth - crop[1] - crop[3] oheight = self.info.videoheight - crop[0] - crop[2] try: if self.info.videocaps[0].has_key("pixel-aspect-ratio"): owidth = int(owidth * float(self.info.videocaps[0]["pixel-aspect-ratio"])) except KeyError: # The videocaps we are looking for may not even exist, just ignore pass width, height = owidth, oheight # Scale width / height to fit requested min/max if owidth < wmin: width = wmin height = int((float(wmin) / owidth) * oheight) elif owidth > wmax: width = wmax height = int((float(wmax) / owidth) * oheight) if height < hmin: height = hmin width = int((float(hmin) / oheight) * owidth) elif height > hmax: height = hmax width = int((float(hmax) / oheight) * owidth) # Add any required padding # TODO: Remove the extra colorspace conversion when no longer # needed, but currently xvidenc and possibly others will fail # without it! vbox = "" if width < wmin and height < hmin: wpx = (wmin - width) / 2 hpx = (hmin - height) / 2 vbox = "videobox left=%i right=%i top=%i bottom=%i ! ffmpegcolorspace ! " % \ (-wpx, -wpx, -hpx, -hpx) elif width < wmin: px = (wmin - width) / 2 vbox = "videobox left=%i right=%i ! ffmpegcolorspace ! " % \ (-px, -px) elif height < hmin: px = (hmin - height) / 2 vbox = "videobox top=%i bottom=%i ! ffmpegcolorspace ! " % \ (-px, -px) # FIXME Odd widths / heights seem to freeze gstreamer if width % 2: width += 1 if height % 2: height += 1 for vcap in self.vcaps: vcap["width"] = width vcap["height"] = height # ================================================================= # Setup video framerate and add to caps # ================================================================= rmin = self.preset.vcodec.rate[0].num / \ float(self.preset.vcodec.rate[0].denom) rmax = self.preset.vcodec.rate[1].num / \ float(self.preset.vcodec.rate[1].denom) orate = self.info.videorate.num / float(self.info.videorate.denom) if orate > rmax: num = self.preset.vcodec.rate[1].num denom = self.preset.vcodec.rate[1].denom elif orate < rmin: num = self.preset.vcodec.rate[0].num denom = self.preset.vcodec.rate[0].denom else: num = self.info.videorate.num denom = self.info.videorate.denom for vcap in self.vcaps: vcap["framerate"] = gst.Fraction(num, denom) # ================================================================= # Properly handle and pass through pixel aspect ratio information # ================================================================= for x in range(self.info.videocaps.get_size()): struct = self.info.videocaps[x] if struct.has_field("pixel-aspect-ratio"): # There was a bug in xvidenc that flipped the fraction # Fixed in svn on 12 March 2008 # We need to flip the fraction on older releases! par = struct["pixel-aspect-ratio"] if self.preset.vcodec.name == "xvidenc": for p in gst.registry_get_default().get_plugin_list(): if p.get_name() == "xvid": if p.get_version() <= "0.10.6": par.num, par.denom = par.denom, par.num for vcap in self.vcaps: vcap["pixel-aspect-ratio"] = par break # FIXME a bunch of stuff doesn't seem to like pixel aspect ratios # Just force everything to go to 1:1 for now... for vcap in self.vcaps: vcap["pixel-aspect-ratio"] = gst.Fraction(1, 1) # ================================================================= # Setup the video encoder and options # ================================================================= vencoder = "%s %s" % (self.preset.vcodec.name, self.preset.vcodec.passes[self.enc_pass] % { "threads": CPU_COUNT, }) deint = "" if self.options.deinterlace: deint = " ffdeinterlace ! " transform = "" if self.preset.vcodec.transform: transform = self.preset.vcodec.transform + " ! " sub = "" if self.options.subfile: charset = "" if self.options.subfile_charset: charset = "subtitle-encoding=\"%s\"" % \ self.options.subfile_charset # Render subtitles onto the video stream sub = "textoverlay font-desc=\"%(font)s\" name=txt ! " % { "font": self.options.font, } cmd += " filesrc location=\"%(subfile)s\" ! subparse " \ "%(subfile_charset)s ! txt." % { "subfile": self.options.subfile, "subfile_charset": charset, } if self.options.ssa is True: # Render subtitles onto the video stream sub = "textoverlay font-desc=\"%(font)s\" name=txt ! " % { "font": self.options.font, } cmd += " filesrc location=\"%(infile)s\" ! matroskademux name=demux ! ssaparse ! txt. " % { "infile": self.infile, } vmux = premux if container in ["qtmux", "webmmux", "ffmux_dvd", "matroskamux"]: if premux.startswith("mux"): vmux += "video_%d" cmd += " dmux. ! queue ! ffmpegcolorspace ! videorate !" \ "%s %s %s %s videoscale ! %s ! %s%s ! tee " \ "name=videotee ! queue ! %s" % \ (deint, vcrop, transform, sub, self.vcaps.to_string(), vbox, vencoder, vmux) if self.info.is_audio and self.preset.acodec and \ self.enc_pass == len(self.preset.vcodec.passes) - 1: # ================================================================= # Update limits based on what the encoder really supports # ================================================================= element = gst.element_factory_make(self.preset.acodec.name, "aencoder") fields = {} for cap in element.get_pad("sink").get_caps(): for field in ["width", "depth", "rate", "channels"]: if cap.has_field(field): if field not in fields: fields[field] = [0, 0] value = cap[field] if isinstance(value, gst.IntRange): vmin, vmax = value.low, value.high else: vmin, vmax = value, value if vmin < fields[field][0]: fields[field][0] = vmin if vmax > fields[field][1]: fields[field][1] = vmax for name, (amin, amax) in fields.items(): cur = getattr(self.preset.acodec, field) if cur[0] < amin: cur = (amin, cur[1]) setattr(self.preset.acodec, field, cur) if cur[1] > amax: cur = (cur[0], amax) setattr(self.preset.acodec, field, cur) # ================================================================= # Prepare audio capabilities # ================================================================= for attribute in ["width", "depth", "rate", "channels"]: current = getattr(self.info, "audio" + attribute) amin, amax = getattr(self.preset.acodec, attribute) for acap in self.acaps: if amin < amax: acap[attribute] = gst.IntRange(amin, amax) else: acap[attribute] = amin # ================================================================= # Add audio transcoding pipeline to command # ================================================================= aencoder = self.preset.acodec.name + " " + \ self.preset.acodec.passes[ \ len(self.preset.vcodec.passes) - \ self.enc_pass - 1 \ ] % { "threads": CPU_COUNT, } amux = premux if container in ["qtmux", "webmmux", "ffmux_dvd", "matroskamux"]: if premux.startswith("mux"): amux += "audio_%d" cmd += " dmux. ! queue ! audioconvert ! " \ "audiorate tolerance=100000000 ! " \ "audioresample ! %s ! %s ! %s" % \ (self.acaps.to_string(), aencoder, amux) # ===================================================================== # Build the pipeline and get ready! # ===================================================================== self._build_pipeline(cmd) self.emit("pass-setup") def _build_pipeline(self, cmd): """ Build a gstreamer pipeline from a given gst-launch style string and connect a callback to it to receive messages. @type cmd: string @param cmd: A gst-launch string to construct a pipeline from. """ _log.debug(cmd.replace("(", "\\(").replace(")", "\\)")\ .replace(";", "\;")) try: self.pipe = gst.parse_launch(cmd) except gobject.GError, e: raise PipelineException(_("Unable to construct pipeline! ") + \ str(e)) bus = self.pipe.get_bus() bus.add_signal_watch() bus.connect("message", self._on_message) def _on_message(self, bus, message): """ Process pipe bus messages, e.g. start new passes and emit signals when passes and the entire encode are complete. @type bus: object @param bus: The session bus @type message: object @param message: The message that was sent on the bus """ t = message.type if t == gst.MESSAGE_EOS: self.state = gst.STATE_NULL self.emit("pass-complete") if self.enc_pass < self.preset.pass_count - 1: self.enc_pass += 1 self._setup_pass() self.start() else: self.emit("complete") self.emit("message", bus, message) def start(self, reset_timer=True): """ Start the pipeline! """ self.state = gst.STATE_PLAYING if reset_timer: self.start_time = time.time() def pause(self): """ Pause the pipeline! """ self.state = gst.STATE_PAUSED def stop(self): """ Stop the pipeline! """ self.state = gst.STATE_NULL def get_state(self): """ Return the gstreamer state of the pipeline. @rtype: int @return: The state of the current pipeline. """ if self.pipe: return self.pipe.get_state()[1] else: return None def set_state(self, state): """ Set the gstreamer state of the pipeline. @type state: int @param state: The state to set, e.g. gst.STATE_PLAYING """ if self.pipe: self.pipe.set_state(state) state = property(get_state, set_state) def get_status(self): """ Get information about the status of the encoder, such as the percent completed and nicely formatted time remaining. Examples - 0.14, "00:15" => 14% complete, 15 seconds remaining - 0.0, "Uknown" => 0% complete, uknown time remaining Raises EncoderStatusException on errors. @rtype: tuple @return: A tuple of percent, time_rem """ duration = max(self.info.videolength, self.info.audiolength) if not duration or duration < 0: return 0.0, _("Unknown") try: pos, format = self.pipe.query_position(gst.FORMAT_TIME) except gst.QueryError: raise TranscoderStatusException(_("Can't query position!")) except AttributeError: raise TranscoderStatusException(_("No pipeline to query!")) percent = pos / float(duration) if percent <= 0.0: return 0.0, _("Unknown") if self._percent_cached == percent and time.time() - self._percent_cached_time > 5: self.pipe.post_message(gst.message_new_eos(self.pipe)) if self._percent_cached != percent: self._percent_cached = percent self._percent_cached_time = time.time() total = 1.0 / percent * (time.time() - self.start_time) rem = total - (time.time() - self.start_time) min = rem / 60 sec = rem % 60 try: time_rem = _("%(min)d:%(sec)02d") % { "min": min, "sec": sec, } except TypeError: raise TranscoderStatusException(_("Problem calculating time " \ "remaining!")) return percent, time_rem status = property(get_status) arista-0.9.7/arista/discoverer.py0000644000175000017500000003635411576142747016373 0ustar dandan00000000000000# -*- Mode: Python -*- # vi:si:et:sw=4:sts=4:ts=4 # discoverer.py # (c) 2005 Edward Hervey # Discovers multimedia information on files # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ Class and functions for getting multimedia information about files Modified to support dvd://device@title style URIs using dvdreadsrc. Modified to support v4l://device style URIs using v4lsrc. Modified to support v4l2://device style URIs using v4l2src. Modified to use uridecodebin instead of decodebin """ import gettext import logging import os.path import gobject import gst from gst.extend.pygobject import gsignal _ = gettext.gettext _log = logging.getLogger("arista.discoverer") class Discoverer(gst.Pipeline): """ Discovers information about files. This class is event-based and needs a mainloop to work properly. Emits the 'discovered' signal when discovery is finished. The 'discovered' callback has one boolean argument, which is True if the file contains decodable multimedia streams. """ __gsignals__ = { 'discovered' : (gobject.SIGNAL_RUN_FIRST, None, (gobject.TYPE_BOOLEAN, )) } mimetype = None audiocaps = {} videocaps = {} videowidth = 0 videoheight = 0 videorate = 0 audiofloat = False audiorate = 0 audiodepth = 0 audiowidth = 0 audiochannels = 0 audiolength = 0L videolength = 0L is_video = False is_audio = False otherstreams = [] finished = False sinknumber = 0 tags = {} def __init__(self, filename, max_interleave=1.0): """ filename: str; absolute path of the file to be discovered. max_interleave: int or float; the maximum frame interleave in seconds. The value must be greater than the input file frame interleave or the discoverer may not find out all input file's streams. The default value is 1 second and you shouldn't have to change it, changing it mean larger discovering time and bigger memory usage. """ gobject.GObject.__init__(self) self.filename = filename self.mimetype = None self.audiocaps = {} self.videocaps = {} self.videowidth = 0 self.videoheight = 0 self.videorate = gst.Fraction(0,1) self.audiofloat = False self.audiorate = 0 self.audiodepth = 0 self.audiowidth = 0 self.audiochannels = 0 self.audiolength = 0L self.videolength = 0L self.is_video = False self.is_audio = False self.otherstreams = [] self.finished = False self.tags = {} self._success = False self._nomorepads = False self._timeoutid = 0 self._max_interleave = max_interleave self.dbin = None if filename.startswith("dvd://"): parts = filename.split("@") if len(parts) > 1: # Specific chapter was requested, so we need to use a different # source to manually specify the title to decode. self.src = gst.element_factory_make("dvdreadsrc") self.src.set_property("device", parts[0][6:]) self.src.set_property("title", int(parts[1])) self.dbin = gst.element_factory_make("decodebin2") self.add(self.src, self.dbin) self.src.link(self.dbin) self.typefind = self.dbin.get_by_name("typefind") self.typefind.connect("have-type", self._have_type_cb) self.dbin.connect("new-decoded-pad", self._new_decoded_pad_cb) self.dbin.connect("no-more-pads", self._no_more_pads_cb) elif filename.startswith("v4l://"): pass elif filename.startswith("v4l2://"): pass elif filename.startswith("file://"): pass else: filename = "file://" + os.path.abspath(filename) if not self.dbin: # No custom source was setup, so let's use the uridecodebin! self.dbin = gst.element_factory_make("uridecodebin") self.dbin.set_property("uri", filename) self.add(self.dbin) self.dbin.connect("element-added", self._element_added_cb) self.dbin.connect("pad-added", self._new_decoded_pad_cb) self.dbin.connect("no-more-pads", self._no_more_pads_cb) @property def length(self): return max(self.videolength, self.audiolength) def _element_added_cb(self, bin, element): try: typefind = element.get_by_name("typefind") if typefind: self.typefind = typefind self.typefind.connect("have-type", self._have_type_cb) try: element.connect("unknown-type", self._unknown_type_cb) except TypeError: # Element doesn't support unknown-type signal? pass except AttributeError: # Probably not the decodebin, just ignore pass def _timed_out_or_eos(self): if (not self.is_audio and not self.is_video) or \ (self.is_audio and not self.audiocaps) or \ (self.is_video and not self.videocaps): self._finished(False) else: self._finished(True) def _finished(self, success=False): self.debug("success:%d" % success) self._success = success self.bus.remove_signal_watch() if self._timeoutid: gobject.source_remove(self._timeoutid) self._timeoutid = 0 gobject.idle_add(self._stop) return False def _stop(self): self.debug("success:%d" % self._success) self.finished = True self.set_state(gst.STATE_READY) self.debug("about to emit signal") self.emit('discovered', self._success) def _bus_message_cb(self, bus, message): if message.type == gst.MESSAGE_EOS: self.debug("Got EOS") self._timed_out_or_eos() elif message.type == gst.MESSAGE_TAG: for key in message.parse_tag().keys(): self.tags[key] = message.structure[key] elif message.type == gst.MESSAGE_ERROR: self.debug("Got error") self._finished() def discover(self): """Find the information on the given file asynchronously""" _log.debug(_("Discovering %(filename)s") % { "filename": self.filename }) self.debug("starting discovery") if self.finished: self.emit('discovered', False) return self.bus = self.get_bus() self.bus.add_signal_watch() self.bus.connect("message", self._bus_message_cb) # 3s timeout self._timeoutid = gobject.timeout_add(3000, self._timed_out_or_eos) self.info("setting to PLAY") if not self.set_state(gst.STATE_PLAYING): self._finished() def _time_to_string(self, value): """ transform a value in nanoseconds into a human-readable string """ ms = value / gst.MSECOND sec = ms / 1000 ms = ms % 1000 min = sec / 60 sec = sec % 60 return "%2dm %2ds %3d" % (min, sec, ms) def print_info(self): """prints out the information on the given file""" if not self.finished or not (self.is_audio or self.is_video): return print _("Mime Type :\t"), self.mimetype if not self.is_video and not self.is_audio: return print _("Length :\t"), self._time_to_string(max(self.audiolength, self.videolength)) print _("\tAudio:"), self._time_to_string(self.audiolength), _("\n\tVideo:"), self._time_to_string(self.videolength) if self.is_video and self.videorate: print _("Video :") print _("\t%(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps") % { "width": self.videowidth, "height": self.videoheight, "rate_num": self.videorate.num, "rate_den": self.videorate.denom } if self.tags.has_key("video-codec"): print _("\tCodec :"), self.tags.pop("video-codec") if self.is_audio: print _("Audio :") if self.audiofloat: print _("\t%(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float)") % { "channels": self.audiochannels, "rate": self.audiorate, "width": self.audiowidth } else: print _("\t%(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int)") % { "channels": self.audiochannels, "rate": self.audiorate, "depth": self.audiodepth } if self.tags.has_key("audio-codec"): print _("\tCodec :"), self.tags.pop("audio-codec") for stream in self.otherstreams: if not stream == self.mimetype: print _("Other unsuported Multimedia stream :"), stream if self.tags: print _("Additional information :") for tag in self.tags.keys(): print "%20s :\t" % tag, self.tags[tag] def _no_more_pads_cb(self, dbin): self.info("no more pads") self._nomorepads = True def _unknown_type_cb(self, dbin, pad, caps): self.debug("unknown type : %s" % caps.to_string()) # if we get an unknown type and we don't already have an # audio or video pad, we are finished ! self.otherstreams.append(caps.to_string()) if not self.is_video and not self.is_audio: self.finished = True self._finished() def _have_type_cb(self, typefind, prob, caps): self.mimetype = caps.to_string() def _notify_caps_cb(self, pad, args): caps = pad.get_negotiated_caps() if not caps: pad.info("no negotiated caps available") return pad.info("caps:%s" % caps.to_string()) # the caps are fixed # We now get the total length of that stream q = gst.query_new_duration(gst.FORMAT_TIME) pad.info("sending position query") if pad.get_peer().query(q): format, length = q.parse_duration() pad.info("got position query answer : %d:%d" % (length, format)) else: length = -1 gst.warning("position query didn't work") # We store the caps and length in the proper location if "audio" in caps.to_string(): self.audiocaps = caps self.audiolength = length try: pos = 0 cap = caps[pos] while not cap.has_key("rate"): pos += 1 cap = caps[pos] self.audiorate = cap["rate"] self.audiowidth = cap["width"] self.audiochannels = cap["channels"] except IndexError: pass if "x-raw-float" in caps.to_string(): self.audiofloat = True else: self.audiodepth = caps[0]["depth"] if self._nomorepads and ((not self.is_video) or self.videocaps): self._finished(True) elif "video" in caps.to_string(): self.videocaps = caps self.videolength = length try: pos = 0 cap = caps[pos] while not cap.has_key("width"): pos += 1 cap = caps[pos] self.videowidth = cap["width"] self.videoheight = cap["height"] self.videorate = cap["framerate"] except IndexError: pass if self._nomorepads and ((not self.is_audio) or self.audiocaps): self._finished(True) def _new_decoded_pad_cb(self, dbin, pad, extra=None): # Does the file contain got audio or video ? caps = pad.get_caps() gst.info("caps:%s" % caps.to_string()) if "audio" in caps.to_string(): self.is_audio = True elif "video" in caps.to_string(): self.is_video = True else: self.warning("got a different caps.. %s" % caps.to_string()) return #if is_last and not self.is_video and not self.is_audio: # self.debug("is last, not video or audio") # self._finished(False) # return # we connect a fakesink to the new pad... pad.info("adding queue->fakesink") fakesink = gst.element_factory_make("fakesink", "fakesink%d-%s" % (self.sinknumber, "audio" in caps.to_string() and "audio" or "video")) self.sinknumber += 1 queue = gst.element_factory_make("queue") # we want the queue to buffer up to the specified amount of data # before outputting. This enables us to cope with formats # that don't create their source pads straight away, # but instead wait for the first buffer of that stream. # The specified time must be greater than the input file # frame interleave for the discoverer to work properly. queue.props.min_threshold_time = int(self._max_interleave * gst.SECOND) queue.props.max_size_time = int(2 * self._max_interleave * gst.SECOND) queue.props.max_size_bytes = 0 # If durations are bad on the buffers (common for video decoders), we'll # never reach the min_threshold_time or max_size_time. So, set a # max size in buffers, and if reached, disable the min_threshold_time. # This ensures we don't fail to discover with various ffmpeg # demuxers/decoders that provide bogus (or no) duration. queue.props.max_size_buffers = int(100 * self._max_interleave) def _disable_min_threshold_cb(queue): queue.props.min_threshold_time = 0 queue.disconnect(signal_id) signal_id = queue.connect('overrun', _disable_min_threshold_cb) self.add(fakesink, queue) queue.link(fakesink) sinkpad = fakesink.get_pad("sink") queuepad = queue.get_pad("sink") # ... and connect a callback for when the caps are fixed sinkpad.connect("notify::caps", self._notify_caps_cb) if pad.link(queuepad): pad.warning("##### Couldn't link pad to queue") queue.set_state(gst.STATE_PLAYING) fakesink.set_state(gst.STATE_PLAYING) gst.info('finished here') arista-0.9.7/arista/utils.py0000644000175000017500000001377311574672265015367 0ustar dandan00000000000000#!/usr/bin/env python """ Arista Utilities ================ A set of utility methods to do various things inside of Arista. License ------- Copyright 2009 - 2011 Daniel G. Taylor This file is part of Arista. Arista is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the License, or (at your option) any later version. Arista is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with Arista. If not, see . """ import gettext import logging import os import re import sys _ = gettext.gettext RE_ENDS_NUM = re.compile(r'^.*(?P[0-9]+)$') def get_search_paths(): """ Get a list of paths that are searched for installed resources. @rtype: list @return: A list of paths to search in the order they will be searched """ return [ # Current path, useful for development: os.getcwd(), # User home directory: os.path.expanduser(os.path.join("~", ".arista")), # User-installed: os.path.join(sys.prefix, "local", "share", "arista"), # System-installed: os.path.join(sys.prefix, "share", "arista"), # The following allows stuff like virtualenv to work! os.path.join(os.path.join(os.path.dirname(os.path.dirname(__file__)), "share", "arista")), ] def get_path(*parts, **kwargs): """ Get a path, searching first in the current directory, then the user's home directory, then sys.prefix, then sys.prefix + "local". >>> get_path("presets", "computer.json") '/usr/share/arista/presets/computer.json' >>> get_path("presets", "my_cool_preset.json") '/home/dan/.arista/presets/my_cool_preset.json' @type parts: str @param parts: The parts of the path to get that you would normally send to os.path.join @type default: bool @param default: A default value to return rather than raising IOError @rtype: str @return: The full path to the relative path passed in @raise IOError: The path cannot be found in any location """ path = os.path.join(*parts) for search in get_search_paths(): full = os.path.join(search, path) if os.path.exists(full): return full else: if "default" in kwargs: return kwargs["default"] raise IOError(_("Can't find %(path)s in any known prefix!") % { "path": path, }) def get_write_path(*parts, **kwargs): """ Get a path that can be written to. This uses the same logic as get_path above, but instead of checking for the existence of a path it checks to see if the current user has write accces. >>>> get_write_path("presets", "foo.json") '/home/dan/.arista/presets/foo.json' @type parts: str @param parts: The parts of the path to get that you would normally send to os.path.join @type default: bool @param default: A default value to return rather than raising IOError @rtype: str @return: The full path to the relative path passed in @raise IOError: The path cannot be written to in any location """ path = os.path.join(*parts) for search in get_search_paths()[1:]: full = os.path.join(search, path) # Find part of path that exists test = full while not os.path.exists(test): test = os.path.dirname(test) if os.access(test, os.W_OK): if not os.path.exists(os.path.dirname(full)): os.makedirs(os.path.dirname(full)) return full else: if "default" in kwargs: return kwargs["default"] raise IOError(_("Can't find %(path)s that can be written to!") % { "path": path, }) def generate_output_path(filename, preset, to_be_created=[], device_name=""): """ Generate a new output filename from an input filename and preset. @type filename: str @param filename: The input file name @type preset: arista.presets.Preset @param preset: The preset being encoded @type to_be_created: list @param to_be_created: A list of filenames that will be created and should not be overwritten, useful if you are processing many items in a queue @type device_name: str @param device_name: Device name to appent to output filename, e.g. myvideo-ipod.m4v @rtype: str @return: A new unique generated output path """ name, ext = os.path.splitext(filename) # Is this a special URI? Let's just use the basename then! if name.startswith("dvd://") or name.startswith("v4l://") or name.startswith("v4l2://"): name = os.path.basename(name) if device_name: name += "-" + device_name default_out = name + "." + preset.extension while os.path.exists(default_out) or default_out in to_be_created: parts = default_out.split(".") name, ext = ".".join(parts[:-1]), parts[-1] result = RE_ENDS_NUM.search(name) if result: value = result.group("number") name = name[:-len(value)] number = int(value) + 1 else: number = 1 default_out = "%s%d.%s" % (name, number, ext) return default_out arista-0.9.7/arista/__init__.py0000644000175000017500000000271411517371011015735 0ustar dandan00000000000000#!/usr/bin/env python """ Arista Transcoder Library ========================= A set of tools to transcode files for various devices and presets using gstreamer. Usage ----- >>> import arista >>> arista.init() >>> arista.presets.get() {'name': Device(), ...} License ------- Copyright 2008 - 2011 Daniel G. Taylor This file is part of Arista. Arista is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the License, or (at your option) any later version. Arista is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with Arista. If not, see . """ import gettext _ = gettext.gettext def init(): """ Initialize the arista module. You MUST call this method after importing. """ import discoverer import inputs import presets import queue import transcoder import utils __version__ = _("0.9.7") __author__ = _("Daniel G. Taylor ") arista-0.9.7/arista-transcode0000755000175000017500000003602511576246223015547 0ustar dandan00000000000000#!/usr/bin/python # -*- coding: UTF-8 -*- """ Arista Transcoder (command-line client) ======================================= An audio/video transcoder based on simple device profiles provided by plugins. This is the command-line version. License ------- Copyright 2008 - 2011 Daniel G. Taylor This file is part of Arista. Arista is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 2.1 of the License, or (at your option) any later version. Arista is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with Arista. If not, see . """ import gettext import locale import logging import os import signal import sys import time from optparse import OptionParser import gobject # FIXME: Stupid hack, see the other fixme comment below! if __name__ != "__main__": import gst import arista _ = gettext.gettext # Initialize threads for gstreamer gobject.threads_init() status_time = None status_msg = "" transcoder = None loop = None interrupted = False def print_status(enc, options): """ Print the current status to the terminal with the estimated time remaining. """ global status_msg global interrupted percent = 0.0 if interrupted or not enc: return True if enc.state == gst.STATE_NULL and interrupted: gobject.idle_add(loop.quit) return False elif enc.state != gst.STATE_PLAYING: return True try: percent, time_rem = enc.status if not options.quiet: msg = _("Encoding... %(percent)i%% (%(time)s remaining)") % { "percent": int(percent * 100), "time": time_rem, } sys.stdout.write("\b" * len(status_msg)) sys.stdout.write(msg) sys.stdout.flush() status_msg = msg except arista.transcoder.TranscoderStatusException, e: print str(e) return (percent < 100) def entry_start(queue, entry, options): if not options.quiet: print _("Encoding %(filename)s for %(device)s (%(preset)s)") % { "filename": os.path.basename(entry.options.uri), "device": options.device, "preset": options.preset or _("default"), } gobject.timeout_add(500, print_status, entry.transcoder, options) def entry_pass_setup(queue, entry, options): if not options.quiet: if entry.transcoder.enc_pass > 0: print # blank line info = entry.transcoder.info preset = entry.transcoder.preset if (info.is_video and len(preset.vcodec.passes) > 1) or \ (info.is_audio and len(preset.vcodec.passes) > 1): print _("Starting pass %(pass)d of %(total)d") % { "pass": entry.transcoder.enc_pass + 1, "total": entry.transcoder.preset.pass_count, } def entry_complete(queue, entry, options): if not options.quiet: print entry.transcoder.stop() if len(queue) == 1: # We are the last item! gobject.idle_add(loop.quit) def entry_error(queue, entry, errorstr, options): if not options.quiet: print _("Encoding %(filename)s for %(device)s (%(preset)s) failed!") % { "filename": os.path.basename(entry.options.uri), "device": options.device, "preset": options.preset or _("default"), } print errorstr entry.transcoder.stop() if len(queue) == 1: # We are the last item! gobject.idle_add(loop.quit) def check_interrupted(): """ Check whether we have been interrupted by Ctrl-C and stop the transcoder. """ if interrupted: try: source = transcoder.pipe.get_by_name("source") source.send_event(gst.event_new_eos()) except: # Something pretty bad happened... just exit! gobject.idle_add(loop.quit) return False return True def signal_handler(signum, frame): """ Handle Ctr-C gracefully and shut down the transcoder. """ global interrupted print print _("Interrupt caught. Cleaning up... (Ctrl-C to force exit)") interrupted = True signal.signal(signal.SIGINT, signal.SIG_DFL) if __name__ == "__main__": parser = OptionParser(usage = _("%prog [options] infile [infile infile ...]"), version = _("Arista Transcoder " + arista.__version__)) parser.add_option("-i", "--info", dest = "info", action = "store_true", default = False, help = _("Show information about available devices " \ "[false]")) parser.add_option("-S", "--subtitle", dest = "subtitle", default = None, help = _("Subtitle file to render")) parser.add_option("-e", "--ssa", dest = "ssa", action = "store_true", default = False, help = _("Render embedded SSA subtitles")) parser.add_option("--subtitle-encoding", dest = "subtitle_encoding", default = None, help = _("Subtitle file encoding")) parser.add_option("-f", "--font", dest = "font", default = "Sans Bold 16", help = _("Font to use when rendering subtitles")) parser.add_option("-c", "--crop", dest = "crop", default = None, nargs=4, type=int, help = _("Amount of pixels to crop before transcoding " \ "Specify as: Top Right Bottom Left, default: None")) parser.add_option("-p", "--preset", dest = "preset", default = None, help = _("Preset to encode to [default]")) parser.add_option("-d", "--device", dest = "device", default = "computer", help = _("Device to encode to [computer]")) parser.add_option("-o", "--output", dest = "output", default = None, help = _("Output file name [auto]"), metavar = "FILENAME") parser.add_option("-s", "--source-info", dest = "source_info", action = "store_true", default = False, help = _("Show information about input file and exit")) parser.add_option("-q", "--quiet", dest = "quiet", action = "store_true", default = False, help = _("Don't show status and time remaining")) parser.add_option("-v", "--verbose", dest = "verbose", action = "store_true", default = False, help = _("Show verbose (debug) output")) parser.add_option("--install-preset", dest = "install", action = "store_true", default=False, help = _("Install a downloaded device preset file")) parser.add_option("--reset-presets", dest = "reset", action = "store_true", default=False, help = _("Reset presets to factory defaults")) options, args = parser.parse_args() logging.basicConfig(level = options.verbose and logging.DEBUG \ or logging.INFO, format = "%(name)s [%(lineno)d]: " \ "%(levelname)s %(message)s") # FIXME: OMGWTFBBQ gstreamer hijacks sys.argv unless we import AFTER we use # the optionparser stuff above... # This seems to be fixed http://bugzilla.gnome.org/show_bug.cgi?id=425847 # but in my testing it is NOT. Leaving hacks for now. import gst arista.init() from arista.transcoder import TranscoderOptions lc_path = arista.utils.get_path("locale", default = "") if lc_path: if hasattr(gettext, "bindtextdomain"): gettext.bindtextdomain("arista", lc_path) if hasattr(locale, "bindtextdomain"): locale.bindtextdomain("arista", lc_path) if hasattr(gettext, "bind_textdomain_codeset"): gettext.bind_textdomain_codeset("arista", "UTF-8") if hasattr(locale, "bind_textdomain_codeset"): locale.bind_textdomain_codeset("arista", "UTF-8") if hasattr(gettext, "textdomain"): gettext.textdomain("arista") if hasattr(locale, "textdomain"): locale.textdomain("arista") devices = arista.presets.get() if options.info and not args: print _("Available devices:") print longest = 0 for name in devices: longest = max(longest, len(name)) for name in sorted(devices.keys()): print _("%(name)s: %(description)s") % { "name": name.rjust(longest + 1), "description": devices[name].description, } for preset in devices[name].presets.values(): default = devices[name].default == preset.name print _("%(spacing)s- %(name)s%(description)s") % { "spacing": " " * (longest + 3), "name": default and preset.name + "*" or preset.name, "description": (preset.description != devices[name].description) and ": " + preset.description or "", } print print _("Use --info device_name preset_name for more information on a preset.") raise SystemExit() elif options.info: try: device = devices[args[0]] except KeyError: print _("Device not found!") raise SystemExit(1) preset = None if len(args) > 1: for p in device.presets: if p.startswith(args[1]): preset = device.presets[p] break else: print _("Preset not found!") raise SystemExit(1) if preset: print _("Preset info:") else: print _("Device info:") print info = [ (_("ID:"), args[0]), (_("Make:"), device.make), (_("Model:"), device.model), (_("Description:"), preset and preset.description or device.description), (_("Author:"), preset and unicode(preset.author) or unicode(device.author)), (_("Version:"), preset and preset.version or device.version), ] if not preset: info.append((_("Presets:"), ", ".join([(p.name == device.default and "*" + p.name or p.name) for (id, p) in device.presets.items()]))) else: info.append((_("Extension:"), preset.extension)) info.append((_("Container:"), preset.container)) info.append((_("Video codec:"), preset.vcodec.name)) info.append((_("Width:"), "%(min)d to %(max)d" % { "min": preset.vcodec.width[0], "max": preset.vcodec.width[1], })) info.append((_("Height:"), "%(min)d to %(max)d" % { "min": preset.vcodec.height[0], "max": preset.vcodec.height[1], })) info.append((_("Framerate:"), "%(min)s to %(max)s" % { "min": preset.vcodec.rate[0].denom == 1 and preset.vcodec.rate[0].num or "%d/%d" % (preset.vcodec.rate[0].num, preset.vcodec.rate[0].denom), "max": preset.vcodec.rate[1].denom == 1 and preset.vcodec.rate[1].num or "%d/%d" % (preset.vcodec.rate[1].num, preset.vcodec.rate[1].denom), })) info.append((_("Audio codec:"), preset.acodec.name)) info.append((_("Channels:"), "%(min)d to %(max)d" % { "min": preset.acodec.channels[0], "max": preset.acodec.channels[1], })) longest = 0 for (attr, value) in info: longest = max(longest, len(attr)) for (attr, value) in info: print "%(attr)s %(value)s" % { "attr": attr.rjust(longest + 1), "value": value.encode("utf-8"), } print raise SystemExit() elif options.source_info: if len(args) != 1: print _("You may only pass one filename for --source-info!") parser.print_help() raise SystemExit(1) def _got_info(info, is_media): discoverer.print_info() loop.quit() discoverer = arista.discoverer.Discoverer(args[0]) discoverer.connect("discovered", _got_info) discoverer.discover() print _("Discovering file info...") loop = gobject.MainLoop() loop.run() elif options.install: for arg in args: arista.presets.extract(open(arg)) elif options.reset: arista.presets.reset(overwrite=True, ignore_initial=True) print _("Reset complete") else: if len(args) < 1: parser.print_help() raise SystemExit(1) device = devices[options.device] if not options.preset: preset = device.presets[device.default] else: for (id, preset) in device.presets.items(): if preset.name == options.preset: break if options.crop: for c in options.crop: if c < 0: print _("All parameters to --crop/-c must be non negative integers. %i is negative, aborting.") % c raise SystemExit() outputs = [] queue = arista.queue.TranscodeQueue() for arg in args: if len(args) == 1 and options.output: output = options.output else: output = arista.utils.generate_output_path(arg, preset, to_be_created=outputs, device_name=options.device) outputs.append(output) opts = TranscoderOptions(arg, preset, output, ssa=options.ssa, subfile = options.subtitle, subfile_charset = options.subtitle_encoding, font = options.font, crop = options.crop) queue.append(opts) queue.connect("entry-start", entry_start, options) queue.connect("entry-pass-setup", entry_pass_setup, options) queue.connect("entry-error", entry_error, options) queue.connect("entry-complete", entry_complete, options) if len(queue) > 1: print _("Processing %(job_count)d jobs...") % { "job_count": len(queue), } signal.signal(signal.SIGINT, signal_handler) gobject.timeout_add(50, check_interrupted) loop = gobject.MainLoop() loop.run() arista-0.9.7/README.md0000644000175000017500000001100411577157411013624 0ustar dandan00000000000000Arista Transcoder 0.9.7 ======================= A simple preset-based transcoder for the GNOME Desktop and a small script for terminal-based transcoding. Settings are chosen based on output device and quality preset. * [Official website](http://www.transcoder.org/) Features -------- * Presets for Android, iPod, computer, DVD player, PSP, and more * Live preview to see encoded quality * Automatically discover available DVD drives and media * Rip straight from DVD media easily * Automatically discover and record from Video4Linux devices * Support for H.264, WebM, FLV, Ogg, DivX and more * Batch processing of entire directories easily * Simple terminal client for scripting * Nautilus extension for right-click file conversion Dependencies ------------ * python >=2.4 * python-cairo * python-gobject * python-gtk >=2.16 * python-gconf * python-gstreamer * python-gudev or python-dbus with HAL * python-nautilus (if using Nautilus extension) * python-pynotify (optional) * python-rsvg (if using KDE) * python-simplejson (if using python 2.5 or older) * gstreamer-ffmpeg * gstreamer-plugins-base * gstreamer-plugins-good * gstreamer-plugins-bad * gstreamer-plugins-ugly * python-webkit (for in-app documentation) Debian users may need to install these additional dependencies: * gstreamer0.10-lame * gstreamer0.10-plugins-really-bad Fedora users first need to enable RPM Fusion repo because they won't have dependencies for Arista (http://rpmfusion.org/). Then install these additional dependencies: * gnome-python2-rsvg * nautilus-python (if using Nautilus extension) * gstreamer-plugins-bad-nonfree Installation ------------ Installation uses python distutils. After extracting the archive, run: python setup.py install If you are using Ubuntu 9.04 (Jaunty) or later, make sure to install with: python setup.py install --install-layout=deb Don't forget to use sudo if necessary. This will install the arista python module to your python site-packages or dist-packages path, install the arista programs into sys.prefix/bin, instal the nautilus extensions into sys.prefix/lib/nautilus/extensions-2.0/python and install all data files into sys.prefix/share/arista. You can also choose to install the Nautilus extension per-user by placing it into the user's home directory under ~/.nautilus/python-extensions. Note that you must restart Nautilus for such changes to take effect! Usage ----- There are two clients available, a graphical client using GTK+ and a terminal client. The graphical client is failry self-explanatory and can be launched with: arista-gtk To use the terminal client please see: arista-transcode --help An example of using the terminal client: arista-transcode --device=apple --preset="iPhone / iPod Touch" test.avi Other useful terminal options: arista-transcode --info arista-transcode --info apple iPad There is also a Nautilus extension installed by default. You can right-click on any media file and select "Convert for device..." in the menu. This menu contains all your installed presets and will launch Arista to convert the selected file or files. Generating a Test File ---------------------- Sometimes it may be useful to generate a test file: gst-launch-0.10 videotestsrc num-buffers=500 ! x264enc ! qtmux ! filesink location=test.mp4 Trying the Latest Version ------------------------- You can try out the latest development version of Arista by grabbing and running the code from git. This lets you test issues you may have against the latest work of the developers as well as try out new features. Try running the following in a terminal: git clone git://github.com/danielgtaylor/arista.git cd arista ./arista-gtk Contributing ------------ All active development has moved to GitHub.com. Code is managed through git and new bugs should be opened in the GitHub tracker. Translations are still managed on Launchpad using a bazaar tracking branch of this git repository. The GitHub page is here: * [Github project page](http://github.com/danielgtaylor/arista) * [Translations page](https://translations.launchpad.net/arista) You can grab a copy of the source code for Arista via: git clone git://github.com/danielgtaylor/arista.git Feel free to fork on GitHub and propose updates to the main branch. You can keep your branch up to date via `git pull` The public website of this project is also open source, and can be found here: * [Website project page](http://github.com/danielgtaylor/arista-website) Feel free to fork it and contribute as well. arista-0.9.7/locale/0000755000175000017500000000000011577653227013616 5ustar dandan00000000000000arista-0.9.7/locale/sk/0000755000175000017500000000000011577653227014233 5ustar dandan00000000000000arista-0.9.7/locale/sk/LC_MESSAGES/0000755000175000017500000000000011577653227016020 5ustar dandan00000000000000arista-0.9.7/locale/sk/LC_MESSAGES/arista.mo0000644000175000017500000002164411577650635017647 0ustar dandan00000000000000jl < >N 7      ' *3 ^ s   .     ' > nN u 3 ; C (V    # N 9 (L 4u ) . /H$a19.!3:$Rw$'+'Em .# )Ga+~ $ #( L3m,0*$;` |B" *Kdm1u<\>7 );'U*} %"9K^rlw7!=KX:J)Eo9v)#)5?>u1,G`-x)7  ,"6O 7+4 :F2M0 +* F ,` / ( / 2"!U!8e!4!)!$!""1"C"J"j"D""" " #(#0#98#r#{# # # #^RQ3iUK B[ 9G?Oj#VNECdZLD$1\4 2!fb>8& +' YW"M`XF ;.=gH(h)J]I6*7/a<c-0:%@,P_S5eTA %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCouldn't import udev- or HAL-based device discovery!Daniel G. Taylor Description:Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulJob doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Subtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :You may only pass one filename for --source-info!_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-08-12 11:14+0000 Last-Translator: DAG Software Language-Team: Slovak MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d kanálov(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d kanálov(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Zvuk: Kodek : Obraz:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]Odstránenie prekladaniaŽivý náhľadZdrojeTitulkyMultimediálny transkóder pre GNOME.Ďalšie informácie :Arista nastaveniaArista TranskóderArista Transkóder Arista Transkóder GUI Arista domovská stránkaArista je vydaná pod GNU LGPL 2.1. Prosím pozrite: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista je prekladaná cez launchpad.net. Prosím pozrite: https://translations.launchpad.net/arista/trunk/+pots/aristaZvuk :Autor:Dostupné zariadenia:Nedá sa nájsť %(path)s v žiadnom známom operátoreNedá sa získať pozícia!Vyberte zdrojový priečinok...Vyberte zdrojový súbor...Prečisťovanie pamäte...Konverzia %(filename)s do %(device)s %(preset)s zlyhala! Dôvod: %(reason)sKonvertovať na zariadenieKonvertovať toto médium použitím predvoľby zariadeniaNedalo sa importovať zisťovanie zariadenia založené na udev alebo HAL!Daniel G. Taylor Popis:Predvoľba zariadenia %(name)s úspešne nainštalovaná.Zariadenie pre enkódovanie do [computer]Skúmanie %(filename)sSkúmanie informácií o súbore...Nezobrazovať status a zostávajúci časEnkódovanie %(filename)s pre %(device)s (%(preset)s)Enkódovanie %(filename)s pre %(device)s (%(preset)s) zlyhalo!Enkódovanie... %(percent)i%% (%(time)s zostáva)Chyba pri vstupe!Chyba!Rozbaľovanie %(filename)sPadanie späť do HAL zisťovanie zariadeniaSťahovanie %(location)sPísmo na renderovanie:Písmo na použitie pri renderovaní titulkovVynútiť odstránenie prekladania zdrojaBola nájdená položka v poradí! Poradie je %(queue)sVšeobecnéID:NečinnýVstup %(infile)s neobsahuje platné streamy!Nainštalovať stiahnutý súbor predvoľby zariadeniaInštalácia úspešnáPráca dokončenáDĺžka : Náhľad framerate:Načítané zariadenie %(device)s (%(presets)d presets)Najdlhší nájdený názov je %(filename)sMake:Mime Typ : Model:Neboli definované žiadne predvoľby pre %(name)sNájdený neplatný DVD názov!Nerozpoznaný mediálny súborNeplatné celé číslo alebo zlomok: %(value)s!Nepripojené.Iný nepodporovaný multimediálny stream :Názov výstupného súboruInformácie o predvoľbe:Prednastavené pre enkódovanie do [default]Predvoľby:Problém pri počítaní zostávajúceho času!Spracúva sa %(job_count)d činností...Poradie %(infile)s -> %(preset)s -> %(outfile)sHľadať optické médiá a záznamové zariadeniaVybrať titulkyZobraziť informácie o dostupných zariadeniach [false]Zobraziť informácie o vstupnom súbore a ukončiťZobraziť náhľad počas transkódovaniaUkázat veľavravný (debug) výstupJednoduché UIVlastnosti zdrojaZdroj:Súbor titulkov na renderovanieTitulky na renderovanie:Nastala chyba pri sťahovaní a inštalácii %(location)s: %(error)sPoradie transkódovania: NeznámeNeznáma verzia V4L %(version)s!Neznáma ikonka URI %(uri)sVerzia:Obraz :Smiete vydať len jeden názov súboru pre --source-info!_Úpravy_Súbor_Nápoveda_Zobraziťvýchodziearista-0.9.7/locale/fi/0000755000175000017500000000000011577653227014214 5ustar dandan00000000000000arista-0.9.7/locale/fi/LC_MESSAGES/0000755000175000017500000000000011577653227016001 5ustar dandan00000000000000arista-0.9.7/locale/fi/LC_MESSAGES/arista.mo0000644000175000017500000002206111577650640017616 0ustar dandan00000000000000q, < > 7 = E N W i '      . ) B U g z n u o w       # N o ( &  ) ."Qp$19."Qcjq$$'?GO+S'7  ."Q Wdk)+ $& >Ki#r 3,  10=*n$ #":BO 106<BHP?A(7j 4"2([m},  -6?]x ]>-P+~)1")L2i:O10bt{"$/(Dmu ~<$W S _i26* 4G | ' &  ' !-'!$U!0z!!!! !+!% "$0"U"s"""-"" "H# P# ^#!i#(####;#$ $$ $*$>`ei";A0$@^75NYX#L\ q':p3J=IMmW?aGl<6_ .1*B(c8)h[bH +]Pk/F-oV9,OE&4 DS%dgn!KfQRjZTC2 U %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]0.9.7DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't query position!Choose Directory...Choose File...Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCopyright 2008 - 2011 Daniel G. TaylorCreateDaniel G. Taylor Description:Device not found!Device preset %(name)s successfully installed.Device to encode to [computer]Discovering file info...Don't show status and time remainingEffect:Encoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!ExportExtracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralHeight:ID:Input %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Make:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNot a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSearch:Select SubtitlesShort name:Show information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :Width:You may only pass one filename for --source-info!_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2011-06-16 14:23+0000 Last-Translator: Jiri Grönroos Language-Team: Finnish MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d kanava(a) : %(rate)d Hz @ %(depth)d bittiä (int) %(channels)d kanava(a) : %(rate)d Hz @ %(width)d bittiä (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Ääni: Pakkaustapa: Kuva:%(min)d:%(sec)02d%(name)s: %(description)s%prog [valinnat] [tiedosto1 tiedosto2 tiedosto3 ...]0.9.7Lomituksen eli päällekkäisyyksien poistoEsikatseluLähteetTekstitysMediamuunnin Gnome-työpöytäympäristölleLisätietoja:Arista-asetuksetArista-multimediamuunninArista-multimediamuunnin Aristan kotisivuArista on julkaistu lisenssillä GNU LGPL 2.1. Lisätietoja lisenssistä: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlAristan käännöksiä ylläpidetään Launchpad.net-sivustolla. Lisätietoja: https://translations.launchpad.net/arista/trunk/+pots/aristaÄäni :Tekijä:Valittavissa olevat laitteet:Sijaintia ei voitu kysyä!Valitse kansio...Valitse tiedosto...Valitse lähdehakemisto...Valitse lähdetiedosto...Siivotaan...Tiedoston %(filename)s muunnos laitteelle %(device)s %(preset)s epäonnistui! Syy: %(reason)sMuunna laitteelleMuunna tämä media käyttäen laiteprofiiliaTekijänoikeus 2008 - 2011 Daniel G. TaylorLuoDaniel G. Taylor Kuvaus:Laitetta ei löytynyt!Laiteprofiili %(name)s asennettiin onnistuneesti.Laite jolle muunnetaan [tietokone]Luetaan tiedoston tietoja...Tilatietoa ja jäljellä olevaa aikaa ei näytetäTehoste:Muunnetaan %(filename)s laitteelle %(device)s (%(preset)s)Tiedoston %(filename)s muunnos laitteelle %(device)s (%(preset)s) epäonnistui!Muunnetaan... %(percent)i%% (%(time)s jäljellä)Virhe lähteessäVirhe!ViePuretaan tiedostoa %(filename)sTurvaudutaan HAL-laite-etsintäänHaetaan %(location)sKäytettävä kirjasin:Tekstitykseen käytettävä kirjasinPakota lähteen lomituksen poisto (deinterlace)Jonosta löytyi kohde! Jono on %(queue)sYleisetKorkeus:Tunniste:Muunnettava tiedosto %(infile)s ei sisällä sopivaa mediaa!Asenna ladattu laiteprofiilitiedostoAsennus onnistuiKeskeytys havaittu. Suljetaan ohjelmaa... (Ctrl-C pakottaa välittömän sulkeutumisen)Työ valmisPituus : Esikatselun päivitystaajuus:Ladattiin laite %(device)s (%(presets)d profiilia)Merkki:Mime-tyyppi : Malli:Ei muunninta jolta kysyä!Kohteelle %(name)s ei ole määritelty laiteprofiilejaTunnistamaton mediatiedosto!Arvo ei ole kokonaisluku eikä murtoluku: %(value)s!Ei liitetty.Muu vailla tukea oleva multimediavirta:Valmiin tiedoston nimi [automaattinen]Laiteprofiilin tiedot:Laiteprofiili jolle muunnetaan [oletus]Laiteprofiilit:Ongelma jäljellä olevaa aikaa laskettaessa!Suoritetaan %(job_count)d työtä...Jonossa: %(infile)s -> %(preset)s -> %(outfile)sEtsi laitteitaEtsi:Valitse tekstitysLyhyt nimi:Näytä tietoja havaituista laitteista [ei]Näytä tietoja tiedostosta ja lopetaNäytä esikatselu muunnoksen aikanaNäytä runsaasti tilatietojaPelkistetty käyttöliittymäLähteen ominaisuudetLähde:Käynnistetään kierros %(pass)d / %(total)dKäytettävä teksitystiedostoTekstitys:Yritettäessä hakea ja asentaa %(location)s havaittiin virhe: %(error)sMuunnosjono: TuntematonTuntematon V4L-versio %(version)sKuvakkeen tunniste on tuntematon %(uri)sVersio:Kuva :Leveys:Valinnalle --source-info voi antaa vain yhden tiedostonimen_Muokkaa_Tiedosto_Apua_Näkymäoletusarista-0.9.7/locale/uk/0000755000175000017500000000000011577653227014235 5ustar dandan00000000000000arista-0.9.7/locale/uk/LC_MESSAGES/0000755000175000017500000000000011577653227016022 5ustar dandan00000000000000arista-0.9.7/locale/uk/LC_MESSAGES/arista.mo0000644000175000017500000002573011577650636017652 0ustar dandan00000000000000nP <Q > 7     1 'K *s     .  / B T g ~ n u s {  (    # N* y ( 4 ) .!Po$19.2asz$$' HPT+Y'7 .(#W{ )+  8$Ej # 3,/\0m*$ &#.RjB 5>1Fx~F)Hp@   #5'O*w#*U(u&/ \ h"td512+d9p0;el^)1 [Oe5#5IEFU?, l  # L !*&!$Q!@v!C!! ""R'"Bz"0""!r##3#H#;)$e$w$ $/$8$-$(+%7T%%L%0%%&2>&q&b&6&2'SN''V'R(_j(=(!)%*)P)1`)1)0)W)'M*0u**.*)* + +[+++ ++++aTS3mWM C] 9I@Qn#XPFDh\GE$1_B4 2!jf?8& +' [Y"OdZH ;.=kJ(l)cL`K6*7/be<g-0:%A,R^U5iNV> %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCouldn't import udev- or HAL-based device discovery!Daniel G. Taylor Description:Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :You may only pass one filename for --source-info!_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2011-01-03 14:58+0000 Last-Translator: Fedik Language-Team: Ukrainian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d каналів(s) : %(rate)dГц @ %(depth)dбіт (int) %(channels)d каналів(s) : %(rate)dГц @ %(width)dбіт (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d кадрів Аудіо: Кодек : Відео:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]ДеінтерлейсингПопередій переглядДжерелоСубтитриМультимедіа транскодер для робочого столу GNOME.Додаткова інформація:Установки AristaArista ТранскодерТранскодер Arista Arista Transcoder GUI Домашня сторінка AristaArista випущений під GNU LGPL 2.1. Будь ласка, дивіться: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista переводиться через launchpad.net. Будь ласка, дивіться: https://translations.launchpad.net/arista/trunk/+pots/aristaАудіо:Автор:Доступні пристрої:Не вдалося знайти %(path)s ні в одному з відомих префіксів!Неможливо визначити позицію!Вибір вихідного каталогу...Вибір вихідного файлу...Очищення і відновлення буферівНе вдалося перетворити %(filename)s для %(device)s %(preset)s! Причина: %(reason)sКонвертувати для пристроюКонвертувати цей файл використовуючи профіль пристроюНе вдалося виконати пошук пристроїв через udev- чи HAL-!Daniel G. Taylor Опис:Профіль пристрою %(name)s успішно встановлено.Пристрій для кодування [computer]Відкриваючи %(filename)sВідкриття файлу інформація...Не показувати статус і час, що залишивсяПерекодування %(filename)s для %(device)s (%(preset)s)Помилка при кодуванні %(filename)s для %(device)s (%(preset)s)!Кодування... %(percent)i%% (лишилось %(time)s)Помика уводу!Помилка!Видобування %(filename)sБуде використано пошук пристроїв через HALОтримання %(location)sВикористовувати шрифт:Шрифт для субтитрівПримусовий деінтерлейсинг джерелаЗнайдено позицію в черзі! Черга %(queue)sЗагальнеІД:ОчікуванняВхіднийх %(infile)s не містить доступних потоків!Встановити профіль пристрою з файлуУстановка пройшла успішноКодування скасовано. Виконується очистка... (Ctrl-C для примусового виходу)Завдання виконаноТривалість : Попередній перегляд кадрів:Завантажено пристрій %(device)s (%(presets)d presets)Виявлено надто довге ім'я %(filename)sВиробник:MIME-тип : Модель:Запитуваного каналу нема!Не призначено профілі для %(name)sНе знайдено DVD заголовок!Не відомий файл медіа!Це не ціле число чи дріб: %(value)s!Не підключено.Інший непідтримуваний потік мультимедіа:Ім'я вихідного файлу [авто]Дані профілю:Профиль для кодування [default]Шаблони:Помилка розрахунку часу, що залишилось до завершення!Виконується %(job_count)d завдань...Черга %(infile)s -> %(preset)s -> %(outfile)sПошук оптичних носіїв і пристроїв захопленняВибір субтитрівПоказати інформацію про доступні пристрої [false]Показати інформацію про вхідний файл і вийтиПоказати попередній перегляд під час перекодуванняПоказати повні дані налагодженняПростий інтерфейсВластивості джерелаДжерело:Старт проходу %(pass)d із %(total)dФайл субтитрів для обробкиВикористовувати субтитри:Помилка отримання та встановлення %(location)s: %(error)sЧерга конвертування: Неможливо створити канал! НевідомоНевідома версія V4L %(version)s!Невідомий значо URI %(uri)sВерсія:Відео :Ви можете передавати тільки один файл для --source-info!_Редагувати_Файл_Довідка_Переглядтиповийarista-0.9.7/locale/en_GB/0000755000175000017500000000000011577653227014570 5ustar dandan00000000000000arista-0.9.7/locale/en_GB/LC_MESSAGES/0000755000175000017500000000000011577653227016355 5ustar dandan00000000000000arista-0.9.7/locale/en_GB/LC_MESSAGES/arista.mo0000644000175000017500000002161211577650626020177 0ustar dandan00000000000000nP <Q > 7     1 'K *s     .  / B T g ~ n u s {  (    # N* y ( 4 ) .!Po$19.2asz$$' HPT+Y'7 .(#W{ )+  8$Ej # 3,/\0m*$ &#.RjB 5>1Fx~<C>7#'=*e.!4FYpnuemu(#Nk(~4) .Baz$19.$Sel$$':BF+K'w7 .#Im s)+ * $7 \ t   # 3 ,!!N!0_!*!$!! !""# "D"\"Bq"""" "#'#0#18#j#p#v#|##aTS3mWM C] 9I@Qn#XPFDh\GE$1_B4 2!jf?8& +' [Y"OdZH ;.=kJ(l)cL`K6*7/be<g-0:%A,R^U5iNV> %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCouldn't import udev- or HAL-based device discovery!Daniel G. Taylor Description:Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :You may only pass one filename for --source-info!_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2011-02-03 16:30+0000 Last-Translator: Andi Chandler Language-Team: English (United Kingdom) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Choose Source Directory…Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCouldn't import udev- or HAL-based device discovery!Daniel G. Taylor Description:Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNo valid DVD title found!Not a recognised media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :You may only pass one filename for --source-info!_Edit_File_Help_Viewdefaultarista-0.9.7/locale/nl/0000755000175000017500000000000011577653227014227 5ustar dandan00000000000000arista-0.9.7/locale/nl/LC_MESSAGES/0000755000175000017500000000000011577653227016014 5ustar dandan00000000000000arista-0.9.7/locale/nl/LC_MESSAGES/arista.mo0000644000175000017500000002256311577650631017640 0ustar dandan00000000000000nP <Q > 7     1 'K *s     .  / B T g ~ n u s {  (    # N* y ( 4 ) .!Po$19.2asz$$' HPT+Y'7 .(#W{ )+  8$Ej # 3,/\0m*$ &#.RjB 5>1Fx~<8>u7/2)b 2,>Pd{~~ 0 'SH2?)) S9a&!(A&Ch/%4I-b 05?.nD'1 59 o u   2  '!?!5R!!!'!!+! )"5J"-""7"5">5#(t# ###'## $T'$ |$($$!$$$%= % I%S%\%b% i%aTS3mWM C] 9I@Qn#XPFDh\GE$1_B4 2!jf?8& +' [Y"OdZH ;.=kJ(l)cL`K6*7/be<g-0:%A,R^U5iNV> %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCouldn't import udev- or HAL-based device discovery!Daniel G. Taylor Description:Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :You may only pass one filename for --source-info!_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-10-02 10:12+0000 Last-Translator: cumulus007 Language-Team: Dutch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [opties] [bestand1 bestand2 bestand3 …]%prog [opties] invoer [invoer invoer …]De-interlacingActuele voorbeeldweergaveBronnenOndertitelingMultimedia transcoderen voor het GNOME-bureaublad.Extra informatie:Arista-voorkeurenArista transcoderAristra-transcoder Arista transcoder-GUI Website van AristaArista is uitgegeven onder de GNU LGPL 2.1. Lees voor meer informatie: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is vertaald met launchpad.net. Lees voor meer informatie: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Auteur:Beschikbare apparaten:Kan %(path)s niet vinden in de bekende prefixes!Kan positie niet opvragen!Bronmap kiezen…Bronbestand kiezen…Opruimen en buffers leegmaken…Conversie van %(filename)s naar %(device)s %(preset)s is mislukt! Reden: %(reason)sConverteren voor apparaatDit medium converteren voor een specifiek apparaatKon udev- of HAL-gebaseerde apparaatontdekking niet importeren!Daniel G. Taylor Omschrijving:Apparaatvoorinstelling %(name)s succesvol geïnstalleerd.Doelapparaat voor encoderen [computer]%(filename)s achterhalenBestandsinformatie achterhalen…Status en resterende tijd niet weergevenBezig met encoderen van %(filename)s voor %(device)s (%(preset)s)Encoderen van %(filename)s voor %(device)s (%(preset)s) is mislukt!Encoderen… %(percent)i%% (%(time)s resterend)Probleem met invoer!Fout!%(filename)s uitpakkenTerugvallen op HAL-apparaatontdekking%(location)s ophalenTe gebruiken lettertype:Te gebruiken lettertype voor de ondertitelingDe-interlacing van bron forcerenItem gevonden in wachtrij! Wachtrij is %(queue)sAlgemeenID:InactiefInvoer %(infile)s bevat geen geldige gegevensstromen!Een gedownload bestand met apparaatvoorinstellingen installerenInstallatie voltooidOnderbroken. Bezig met opruimen… (Ctrl-C om afsluiten te forceren)Taak uitgevoerdDuur: Beeldsnelheid van de voorbeeldweergave:%(device)s geladen (%(presets)d voorinstellingen)Gevonden bestand met de langste titel is %(filename)sMerk:MIME-type: Model:Geen pijplijn om te doorzoeken!Er zijn geen voorinstellingen bekend voor %(name)sGeen geldige dvd-titel gevonden!Mediabestand niet herkend!Breuk of heel getal onjuist: %(value)s!Niet aangekoppeld.Overige niet-ondersteunde Multimedia-gegevensstroom :Naam uitvoerbestand [auto]Informatie over voorinstelling:Te gebruiken voorinstelling [standaard]Voorinstellingen:Probleem bij berekenen van resterende tijd!%(job_count)d taken verwerken…Wachtrij-item %(infile)s -> %(preset)s -> %(outfile)sZoeken naar optische media en opnameapparatenOndertiteling selecterenInformatie weergeven over beschikbare apparaten [false]Informatie weergeven over invoerbestand, en afsluitenActuele voorbeeldweergave tijdens het transcoderen inschakelenGedetailleerde (debug) uitvoer weergevenEenvoudige UIBroneigenschappenBron:Doorgave %(pass)d van %(total)d startenTe renderen onderitelingbestandTe gebruiken ondertiteling:Er is een fout opgetreden bij het ophalen en installeren van %(location)s: %(error)sWachtrij: Niet in staat om pijplijn op te zetten! OnbekendOnbekende V4L-versie %(version)s!Onbekende pictogram-URI %(uri)sVersie:Video :U kunt slechts één bestandsnaam voor --source-info opgeven!B_ewerken_Bestand_HulpBeel_dstandaardarista-0.9.7/locale/fr/0000755000175000017500000000000011577653227014225 5ustar dandan00000000000000arista-0.9.7/locale/fr/LC_MESSAGES/0000755000175000017500000000000011577653227016012 5ustar dandan00000000000000arista-0.9.7/locale/fr/LC_MESSAGES/arista.mo0000644000175000017500000002274711577650632017643 0ustar dandan00000000000000nP <Q > 7     1 'K *s     .  / B T g ~ n u s {  (    # N* y ( 4 ) .!Po$19.2asz$$' HPT+Y'7 .(#W{ )+  8$Ej # 3,/\0m*$ &#.RjB 5>1Fx~8&:_7 '-Ao8/AT k{y}s{3# #:V^ >L7b:$&.+U@D,4 JT.o(3 BLP6X2#M4 F R =i .    : !F!b!/! !%!! "!"2")B"/l":"="#F3#Cz#.## $$ +$!5$$W$|$H$$&$%#!%!E%g%p%Ay% %%% %%aTS3mWM C] 9I@Qn#XPFDh\GE$1_B4 2!jf?8& +' [Y"OdZH ;.=kJ(l)cL`K6*7/be<g-0:%A,R^U5iNV> %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCouldn't import udev- or HAL-based device discovery!Daniel G. Taylor Description:Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :You may only pass one filename for --source-info!_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-12-11 11:44+0000 Last-Translator: Marin Language-Team: French MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d cannaux : %(rate)dHz @ %(depth)dbits (int) %(channels)d cannaux : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Vidéo:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] fichier [fichier fichier ...]DésentrelacementAperçu en directSourcesSous-titresUn convertisseur multimedia pour l´environnement GNOME.Informations supplémentairesPréférences AristaArista TranscoderArista Transcoder Arista Transcoder GUI Site internetArista est distribué sous Licence GNU LGPL 2.1 Veuillez consulter: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista est traduit grâce à launchpad.net. Veuillez consulter: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Auteur:Périphériques disponibles :Ne trouve pas %(path)s dans aucun des prefix connueNe peut pas interroger la position!Choisir un répertoire source...Choisissez un fichier source...Nettoyage et vidange des buffers...La conversion de %(filename)s en %(device)s %(preset)s a échoué ! Cause : %(reason)sConvertir pour le périphériqueConvertir ce médium à l'aide d'un périphérique prédéfiniImpossible d'importer la découverte de périphérique de type udev ou HAL !Copy text Daniel G. Taylor Copy text Description:Périphérique prédéfini %(name)s installé avec succèsPériphérique à encoder [computer]Parcours de %(filename)sLecture des informations du fichier...Ne pas afficher l'état et le temps restantConversion en cours de %(filename)s pour %(device)s (%(preset)s)L'encodage de %(filename)s pour %(device)s (%(preset)s) a échoué !Encodage... %(percent)i%% (%(time)s restant)Erreur sur l'entrée!Erreur !Extraction de %(filename)sRepli sur la découverte de périphérique HALParcours de %(location)sPolice à rendre:Police pour les sous-titresForcer le désentrelacement de la sourceObjet trouvé dans la queue! La queue est %(queue)sGénéralID:InactifL'entrée %(infile)s ne contient pas de flux correct !Installer un fichier de périphérique prédéfiniInstallation terminée avec succèsInterruption demandée. Nettoyage en cours... (Ctrl-C pour forcer la sortie)Tâche effectuéeLongueur : Cadence de l'aperçu :Préphérique %(device)s chargé (pré-réglages %(presets)d)Le titre le plus long trouvé est %(filename)sFait :Type Mime : Modèle:Aucun canal interroger!Aucun réglage par défaut n'a été défini pour %(name)sAucun titre de DVD valide !Type de fichier non reconnu !Nombre entier ou fraction pas valide:%(value)s!Pas monté.Autre flux Multimedia non supporté :Nom du fichier de sortie [auto]Info profile:Profile d'encodage pour [default]Pré réglages:Problème pour calculer le temps restant!%(job_count)d travaux en cours de traitement...Entrée de la file %(infile)s -> %(preset)s -> %(outfile)sDétecter les supports optiques et périphériques de captureSélectionner les sous-titresAffichage des informations sur les périphériques disponibles [false]Affichage des informations sur les fichiers en entrée et en sortieAfficher un aperçu en direct de la conversionAffichage verbeux (debug)UI simplePropriétés de la SourceSource :Démarrage %(pass)d sur %(total)dFichier de sous-titres pour le renduSous-titres à rendre:Erreur pendant la recherche et l'installation de %(location)s: %(error)sFile de Transcodage: Impossible de construire le pipeline! InconnuVersion %(version)s inconnue de V4LURI de l'icône inconnue: %(uri)sVersion:Vidéo :Vous devez seulement passé un nom de fichier pour --source-info!_Édition_Fichier_Aide_Affichagedéfautarista-0.9.7/locale/pt/0000755000175000017500000000000011577653227014241 5ustar dandan00000000000000arista-0.9.7/locale/pt/LC_MESSAGES/0000755000175000017500000000000011577653227016026 5ustar dandan00000000000000arista-0.9.7/locale/pt/LC_MESSAGES/arista.mo0000644000175000017500000001710511577650634017651 0ustar dandan00000000000000]<>&7e  ., [ t     n uB    (   5 #K )o    $ 1 .N }    $  ' ' / 3 +8 d 7|   .  !(>X+u $ #3+,_0*$:L#TxB !B[dlrx~7$>\7(2 [i,yu+s%<@(}! ) 0'=e&}!5-*?E[/y#*6 B6\  6  %-)F/p* %0N _71<793q'# .4G| % !+2 7 )N=K! #+I%:/9G[S@5V1CR ,WX <7 (ZTE &;.6P]OFYAMU?>HD*Q40L3$2'8BJ\"- %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)sDeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Daniel G. Taylor Description:Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Fetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Installation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Make:Mime Type : Model:No pipeline to query!No valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-11-09 00:23+0000 Last-Translator: Pedro Cunha Language-Team: Portuguese MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d canais : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Áudio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)sDesentrelaçandoPré-visualização em tempo realFontesLegendasUm transcodificador multimédia para o GNOMEInformação adicionalPreferências do AristaTranscodificador AristaCodificador Arista GUI Codificador Arista Página do AristaArista é lançado sob licença GNU LGPL 2.1. Veja por favor: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista é traduzido em launchpad.net. Veja por favor: https://translations.launchpad.net/arista/trunk/+pots/aristaÁudio :Autor:Dispositivos disponíveis:Impossível encontrar %(path)s em qualquer prefixo conhecidoNão é possível consultar a posição!Escolha a Directoria de Origem...Escolha a origem do ficheiroLimpando e esvaziando os buffersDaniel G. Taylor Descrição:Codificar para dispositivo [computador]Procurando %(filename)sProcurando informação do ficheiro...Esconder estado e tempo de esperaCodificando %(filename)s para %(device)s (%(preset)s)Codificando... %(percent)i%% (falta %(time)s)Erro de introduçãoErro!Buscando %(location)sTipo de letra para renderizarTipo de letra a utilizar ao renderizar legendasForçar desentrelaçamento da fonteEncontrado item na fila! Fila é %(queue)sGeralID:Inactivo%(infile)s introduzidos não contêm streams válidos!Instalação Bem-sucedidaInterrompido. Limpando... (Ctrl-C para forçar saída)Tarefa concluídaDuração : Pré-visualização da framerateDispositivo carregado %(device)s (%(presets)d presets)Comando Make:Tipo Mime : Modelo:Sem pipeline a inquirir!Nenhum título de DVD válido encontrado!Não é um ficheiro de multimédia reconhecido!Inteiro ou fracção anválida: %(value)s!Desmontado.Noca Strem multimédia não suportadaInformação da prédefiniçãoCodificar para prédedinição [prédefinição]Predefinições:Erro ao calcular tempo restante!Entrada de fila %(infile)s -> %(preset)s -> %(outfile)sProcurar médias ópticos e capturar dispositivosEscolher LegendasMostrar informação sobre dispisitivos disponíveis [falso]Mostrar informação sobre o ficheiro de entrada e sairMostrar pŕe-visualização durante a codificaçãoMostrar saída completa (debug)Propriedades da FonteFonte:Inicianto o passo %(pass)d de %(total)dFicheiro de legenda para renderizarLegendas para renderizarErro na busca e instalação %(location)s: %(error)sFila de codificação: Incapaz de construir pipeline! DesconhecidoVersão V4L desconhecida %(version)s!Ícone URI desconhecido %(uri)sVersão:Vídeo :_Editar_Ficheiro_Ajuda_Verpré-definidoarista-0.9.7/locale/gl/0000755000175000017500000000000011577653227014220 5ustar dandan00000000000000arista-0.9.7/locale/gl/LC_MESSAGES/0000755000175000017500000000000011577653227016005 5ustar dandan00000000000000arista-0.9.7/locale/gl/LC_MESSAGES/arista.mo0000644000175000017500000002264011577650643017630 0ustar dandan00000000000000m@ <A >~ 7     ! '; *c     .   2 D W n n~ u c k s (    # N i (| 4 ) .@_x$19."Qcj$'+$'Px7 .#"F LY`)v+ $5 MZx# 3,'08*i$ #5BJ  1CIOU[qc9;7K  4+* @ ao03<}RuFLS@o& $P<6K)- W9d()' 52Ah.5<r3=;RBh  (70% V b o /w & / # 4"! W!&c!#!!&!!1!#("7L"0""B":#/K#"{####$#&#"$;?${$=$ $($!% '%1%;:%v% ~%%% %`SR2lVL B\ 8H?Pm#WOECg[FD$1^A3 !ie>7& +' ZX"NcYG :.<jI(k)bK_J5*6/ad;f-09%@,Q]T4hMU= %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCouldn't import udev- or HAL-based device discovery!Daniel G. Taylor Description:Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :You may only pass one filename for --source-info!_Edit_File_Help_ViewdefaultProject-Id-Version: Report-Msgid-Bugs-To: POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-10-13 00:20+0000 Last-Translator: Manuel Xosé Lemos Language-Team: Galician MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d canle(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d canle(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Son: Códec : Vídeo:%(min)d:%(sec)02d%(name)s: %(description)s%prog [opcións] [ficheiro1 ficheiro2 ficheiro3 ...]%prog [opcións] infile [infile infile ...]DesentrelazadoPrevisualización en vivoFontesSubtítulosUn conversor multimedia para o escritorio Gnome.Información adicional :Preferencias de AristaArista TranscoderArista Transcoder Interface gráfica de usuario de Arista Transcoder Páxina web do AristaArista é liberado baixo do termos da licenza GNU LGPL 2.1. Consulte: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista tradúcese a través do launchpad.net. Consulte: https://translations.launchpad.net/arista/trunk/+pots/aristaSon :Autor:Dispositivos dispoñíbeis:Non é posíbel encontrar %(path)s en ningún prefixo coñecido!Non é posíbel consultar a posición!Escolla o directorio de orixe...Escolla o ficheiro de orixe...A limpar e restablecer os buffers...Fallou a conversión de %(filename)s a %(device)s %(preset)s. Motivo: %(reason)sConvertir para o dispositivoConvertir este soporte usando un axuste de dispositivoNon se puido importar a detección de dispositivos basada en udev ou en HALDaniel G. Taylor Descrición:O axuste de dispositivo %(name)s instalouse correctamenteDispositivo ao que codificar [ordenador]A descubrir %(filename)sA descubrir a información do ficheiro...Non mostrar o estado e o tempo restanteA codificar %(filename)s para %(device)s (%(preset)s)Fallou a conversión de %(filename)s para %(device)s (%(preset)s)A codificar... %(percent)i%% (restan %(time)s)Erro coa entrada!Erro!A extraer %(filename)sA obter %(location)sTipo de letra para renderizar:Tipo de letra a empregar ao renderizar os subtítulosForzar desentrelazado da fonteEncontrouse o elemento na cola! A cola é %(queue)sXeralID:InactivoO ficheiro de entrada %(infile)s non contén fluxos válidos!Instalar un ficheiro de axuste de dispositivo xa descargadoInstalación correctaInterrupción capturada. A limpar... (Ctrl-C para forzar a saída)Tarefa feitaLonxitude: Taxa de fotogramas na previsualización:Cargouse o dispositivo %(device)s (%(presets)d axustes)O título máis longo encontrado é %(filename)sFabricante:Tipo Mime : Modelo:Non hai canalización secuencial que consultar!Non se definiron axustes para %(name)sNon se encontrou ningún título de DVD válidoFicheiro multimedia non recoñecidoNúmero enteiro ou fracción non válida: %(value)s!Sen montar.Outro fluxo multimedia non soportado :Nombre do ficheiro de saída [auto]Información do axuste:Axustes para codificar a [predefinido]Axustes:Ocorreu un problema ao calcular o tempo restante!Procesando %(job_count)d tarefas...Cola de entrada %(infile)s -> %(preset)s -> %(outfile)sBuscar medios ópticos e dispositivos de capturaSeleccionar subtítulosMostrar información acerca dos dispositivos dispoñíbeis [false]Mostrar información acerca do ficheiro de entrada e saírMostrar previsualización durante a conversiónMostrar saída detallada (depurar)Interface de usuario simplePropiedades da fonteFonte:A iniciar paso %(pass)d de %(total)dFicheiro de subtítulo para renderizarSubtítulos para renderizar:Ocorreu un erro ao obter e instalar %(location)s: %(error)sCola de conversión: Imposíbel construír a canalización secuencial (pipeline)! DescoñecidoVersión %(version)s de V4L descoñecidaURI da icona %(uri)s descoñecidaVersión:Vídeo :Soamente debe pasarlle un nome de ficheiro a --source-info!_Editar_FicheiroA_xuda_Verpredefinidoarista-0.9.7/locale/ast/0000755000175000017500000000000011577653227014405 5ustar dandan00000000000000arista-0.9.7/locale/ast/LC_MESSAGES/0000755000175000017500000000000011577653227016172 5ustar dandan00000000000000arista-0.9.7/locale/ast/LC_MESSAGES/arista.mo0000644000175000017500000001647411577650630020021 0ustar dandan00000000000000X<>7MU^gy. $ 7 I \ s n u h p x (   # ) . ; Z s $ 1 .  $ : $J o '    + 7 * 4 .L {   + $ 4#=3a,0*$/Tp#B0O Wx1<>7LU^gy -)?Qd{x~ ;!  $)E o#}%&3.:i(!3+371@Ar %B( /<D5b %$ *;E-61/+[{)"<;Q q'} 9"(- 'HSE ")C$6-5AVM:1/=L *QR F UN %7,2JXI@T;GO98B>(K3.P0#&4<DW!?+ %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)sDeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Choose Source File...Cleaning up and flushing buffers...Daniel G. Taylor Description:Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding... %(percent)i%% (%(time)s remaining)Error with input!Fetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Interrupt caught. Cleaning up... (Ctrl-C to force exit)Length : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Make:Mime Type : Model:No pipeline to query!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :You may only pass one filename for --source-info!_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2009-12-02 03:34+0000 Last-Translator: Xuacu Saturio Language-Team: Asturian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Soníu: Codec : Videu:%(min)d:%(sec)02d%(name)s: %(description)sDesentrellazáuPrevisualizaciónFontesSotítulosUn conversor multimedia pal escritoriu GNOME.Información adicional:Preferencies d'AristaArista TranscoderArista Transcoder Arista Transcoder GUI Páxina web d'AristaArista úfrese baxo la llicencia GNU LGPL 2.1. Por favor visite: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista tórnase mandándose de launchpad.net. Por favor, visite: https://translations.launchpad.net/arista/trunk/+pots/aristaSoníu :Autor:Preseos disponibles:¡Nun pudo alcontrase %(path)s en dengún prefixu conocíu!Nun puede consultase la posiciónEscoyer ficheru fonte...Llimpiando y vaciando buffers...Daniel G. Taylor Descripción:Preséu al que codificar [computer]Obteniendo %(filename)sRecoyendo información del ficheru...Nun amosar l'estáu y tiempu restantesCodificando %(filename)s pa %(device)s (%(preset)s)Codificando... %(percent)i%% (falten %(time)s)¡Error cola entrada!Obteniendo %(location)sFonte pa renderizar:Fonte usada pa renderizar los sotítulosForciar desentrellazáu del orixe¡Elementu alcontráu na cola! La cola ye %(queue)sXeneralID:Inactivu¡La entrada %(infile)s nun tien fluxos válidos!Interrupción capturada. Llimpiando... (Ctrl-C para forzar colar)Llonxitú Tasa de cuadros na previsualización:Cargáu el preséu %(device)s (%(presets)d axustes predeterminaos)Marca:Tipu Mime : Modelu:¡Nun hai tubu que consultar!¡Númberu enteru o fracción nun válida: %(value)s!Nun montáu.Otros fluxos multimedia ensin sofitu:Información del preaxuste:Preaxustáu pa codificar a [default]Predefiníos:¡Problema al calcular el tiempu restante!Elementu de la cola %(infile)s -> %(preset)s -> %(outfile)sRestolar medios ópticos y preseos de capturaEscoyer sotítulosAmosar información de los preseos disponibles [false]Amosar información del ficheru d'entrada y colarAmosar previsualización durante la conversiónAmosar salida detallada (debug)Propiedáes del orixeOrixe:Entamando la pasada %(pass)d de %(total)dFicheru de sotítulos a renderizarSotítulos a renderizar:Hebo un error al obtener ya instalar %(location)s: %(error)sCola de conversión: ¡Nun pudo construyise'l tubu! DesconocíoVersión %(version)s de V4L desconocidaURI d'iconu desconocida %(uri)sVersión:Videu :¡Sólo puedes pasa-y un nome de ficheru a --source-info!_Editar_Ficheru_Aida_Verpredetermináuarista-0.9.7/locale/et/0000755000175000017500000000000011577653227014226 5ustar dandan00000000000000arista-0.9.7/locale/et/LC_MESSAGES/0000755000175000017500000000000011577653227016013 5ustar dandan00000000000000arista-0.9.7/locale/et/LC_MESSAGES/arista.mo0000644000175000017500000000274311577650631017635 0ustar dandan00000000000000%@APas)   $*06>) ITZbf my       SourcesSubtitlesArista TranscoderArista homepageAudio :Author:Daniel G. Taylor Description:Error!GeneralID:IdleMake:Model:Not mounted.Presets:Source:UnknownVersion:_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-09-06 12:20+0000 Last-Translator: lyyser Language-Team: Estonian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) AllikadSubtiitridArista TranscoderArista koduleht&HeliAutor:Daniel G. Taylor Kirjeldus:Viga!ÜldineID:JõudeValmistaja:Mudel:Pole haagitudValmisseadistused:Allikas:TundmatuVersioon:R_edaktor_Fail_Abi_Vaadevaikimisiarista-0.9.7/locale/es/0000755000175000017500000000000011577653227014225 5ustar dandan00000000000000arista-0.9.7/locale/es/LC_MESSAGES/0000755000175000017500000000000011577653227016012 5ustar dandan00000000000000arista-0.9.7/locale/es/LC_MESSAGES/arista.mo0000644000175000017500000002764411577650644017647 0ustar dandan00000000000000L ` <a > 7   & / A '[ *     . &BSl+>UneuJ R ` m {( # AL [Nf(&4MT)f   .$8!]19."4; BM$e$' & .:BF+K'w7 .#Im s)+ *$7\ t  # 3 L,Z  0*$.S oy#B'9X `  139SYa<>87w04$Yo1&#'>  ( ? zU w H!O!a!r!!!!A!"")"2"M"#h""" "S"#90#&j#F###)#$ 5$C$@L$'$$'$)$-%M%5U%G%7% &)&2& ;&G&-_&&&0&&2 '>'R'Z'u'}''4'B'!(D$( i( u('(G(0( ) ,)9)A)0_)5))1) *%$*#J* n*#{***&* +*+":+7]++0+++, ,),?H,4,0,#,---C-*K-#v--B--! . ..':.+b. ......;.&/./"7/Z/1a// /0V( JlB`,/oFpD ZQ ;RKjs3uy#7OU~}8NLvHz@Xh2nM.f9>q? E+=S-eIx{_W\1P$4Y|'rdcAkgw 6[!G&]) *m<b5%Ctia"T:^ %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Add a file to be transcodedAdd a new presetAdditional information :All device presets that ship with Arista Transcoder can be reset to their original settings. Warning: this will potentially overwrite user modifications.Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Audio OptionsAudio codec:Author email:Author name:Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Channels:Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Codec HelpCodec options:Container:Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCopyright 2008 - 2011 Daniel G. TaylorCouldn't import udev- or HAL-based device discovery!CreateCreate ConversionDaniel G. Taylor Delete presetDescription:Destination:Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingDownload new presets from the webEffect:Encoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!ExportExtension:Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sFramerate:GeneralGet PresetsHeight:ID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]PreferencesPreset PropertiesPreset info:Preset name:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sReset PresetsSearch for optical media and capture devicesSearch:Select A Destination...Select SubtitlesShort name:Show _ToolbarShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :Video OptionsVideo codec:View or edit presetWidth:You may only pass one filename for --source-info!_Edit_File_Get New Presets..._Help_Install Device Preset..._ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2011-06-19 19:34+0000 Last-Translator: Ramón Calderón Language-Team: Spanish MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio Códec Vídeo%(min)d:%(sec)02d%(name)s: %(description)s%prog [opcions] [archivo1 archivo2 archivo3 ...]%prog [opciones] enarchivo [enarchivo enarchivo ...]DesentrelazadoPrevisualizaciónFuentesSubtítulosUn conversor multimedia para el escritorio GNOME.Añadir un archivo para transcodificarAñadir una nueva preconfiguraciónInformación adicionalTodos los dispositivos que se incluyen con Arista Transcoder pueden ser devueltos a sus parámetros originales. Cuidado: esto sobreescribirá las modificaciones del usuario.Preferencias de AristaArista TranscoderArista Transcoder Arista Transcoder GUI Página web de AristaArista está liberado bajo la licencia GNU LGPL 2.1 Por favor vea: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista se traduce mediante launchpad.net. Por favor, vea: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio:Opciones de AudioCódec de audio:Correo electrónico del autor:Nombre del autor:Autor:Dispositivos disponibles:¡No se ha podido encontrar %(path)s en ningún prefijo conocido!No se puede consultar la posiciónCanales:Elija directorio fuente...Elige el archivo fuente...Limpiando y vaciando los buffers...Ayuda del CódecOpciones del códec:Contenedor:¡Falló la conversión de %(filename)s a %(device)s %(preset)s! Razón: %(reason)sConvertir para el dispositivoConvertir este medio usando un dispositivo preconfiguradoCopyright 2008 - 2011 Daniel G. Taylor¡No se pudo importar detección de dispositivos udev o basada en HAL!CrearCrear conversiónDaniel G. Taylor Eliminar preconfiguraciónDescripción:Destino:Dispositivo preestablecido %(name)s instalado satisfactoriamenteDispositivo al que codificar [computer]Obteniendo %(filename)sRecopilando información del archivo...No mostrar el estado y el tiempo restanteDescargar nuevas preconfiguraciones de la webEfecto:Codificando %(filename)s para %(device)s (%(preset)s)La conversión de %(filename)s para %(device)s (%(preset)s) ha fallado!Codificando... %(percent)i%% (tiempo restante %(time)s)¡Error en el archivo fuente!¡Error!ExportarExtensión:Extrayendo %(filename)sVolviendo a la detección de dispositivos HALObteniendo %(location)sFuente a renderizar:Tipografía a usar al renderizar los subtítulosForzar desentrelazado de fuente¡Item encontrado en la cola! La cola es %(queue)sTasa de fotogramas:GeneralObtener preconfiguracionesAltura:ID:Inactivo¡El archivo %(infile)s no contiene flujos válidos!Instalar un archivo de configuración de dispositivo ya descargadoInstalación realizada con éxitoInterrupción capturada. Limpiando... (Ctrl-C para forzar la salida)Tarea hechaLongitud Tasa de frames en la previsualización:Cargado el dispositivo %(device)s (%(presets)d ajustes predeterminados)El título más largo encontrado es %(filename)sFabricante:Mime Type : Modelo:¡No hay cauce que consultar!No se han definido configuraciones para %(name)s¡No se ha encontrado ningún título de DVD válido!Archivo de medios no reconocidoNúmero entero o fracción no válida: %(value)s!No montado.Otros flujos multimedia no soportadosNombre del archivo de salida [auto]PreferenciasPropiedades de la PreconfiguraciónInformación del preajusteNombre de la preconfiguración:Preajustado para codificar a [default]Predefinidos:¡Problema al calcular el tiempo restante!Procesando %(job_count)d tareas...Item de la cola %(infile)s -> %(preset)s -> %(outfile)sRestaurar PreconfiguracionesBuscar medios ópticos y dispositivos de capturaBuscar:Seleccione un Destino...Seleccionar subtitulosNombre corto:Mostrar Barra de _HerramientasMostrar información sobre los dispositivos disponibles [false]Mostrar información sobre el archivo fuente y salirMostrar previsualización durante la conversiónMostrar salida con mensajes (debug)Interfaz de usuario simplePropiedades de origenFuente:Comenzando la pasada %(pass)d de %(total)dArchivo de subtítulos a renderizarSubtitulos a renderizar:Ha ocurrido un error al obtener e instalar %(location)s: %(error)sCola de conversión: ¡No se pudo construir el cauce! DesconocidoVersión %(version)s de V4L desconocidaLocalización del icono desconocida %(uri)sVersión:VídeoOpciones de VídeoCódec de vídeo:Ver o editar preconfiguraciónAncho:¡Debes pasarle sólo un nombre de archivo a --source-info!_Editar_Archivo_Obtener Nuevas Preconfiguraciones_Ayuda_Instalar una Preconfiguración de Dispositivo..._Verpor defectoarista-0.9.7/locale/zh_CN/0000755000175000017500000000000011577653227014617 5ustar dandan00000000000000arista-0.9.7/locale/zh_CN/LC_MESSAGES/0000755000175000017500000000000011577653227016404 5ustar dandan00000000000000arista-0.9.7/locale/zh_CN/LC_MESSAGES/arista.mo0000644000175000017500000002151011577650637020225 0ustar dandan00000000000000l|0 <1 7n      ' * ? T h w .       n/ u   $ (7 ` v  # N  (- 4V ) .  )$B1g9.$3Xn$~'+'&N7f .# "/6)Lv+ $  #0#9 ]3~,0*!$Lq #BEWv ~1 <7  E P ^j|*; " ,+:fv fx=  6*=PQo3,)5 _(i !< OH5  &@$V{. )*  6GC  5%  /9%U {+ $ / C $P $u 4 ! ) *(!!S!u! !! !+!!"8"O"`"w"#~"!" " "9" # # (# 3# >#_RQ2UL B[8H?Ol"VECfZFD#0]A3 1 hd>7%*& YW!NbXG :-<iI'j(aK^J5)6.`c;e,/9$@k+P\S4gMT= %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCouldn't import udev- or HAL-based device discovery!Daniel G. Taylor Description:Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :You may only pass one filename for --source-info!_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2011-04-02 11:39+0000 Last-Translator: Daniel Tao Language-Team: Chinese (Simplified) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) Language: %(channels)d channels(s) : %(rate)dHz @ %(depth)d 位 (int) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps 音频: 编码器: 视频:%(min)d:%(sec)02d%(name)s: %(description)s%prog [选项] 文件1 文件2 文件3 ...%prog [选项] 输入文件 [输出文件 输出文件 ...]反交错实时预览源设备字幕为 GNOME 桌面设计的多媒体转码器额外信息:Arista 首选项Arista 解码转换器Arista 转码器 Arista 转码器界面 Arista 主页Arista 依据 GNU LGPL 2.1 发行。 请见: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista 透过 launchpad.net 来进行翻译。请查看: https://translations.launchpad.net/arista/trunk/+pots/arista音频:作者:可用的设备:在任何已知的前缀路径内找不到 %(path)s!无法查询位置!选择源目录...选择源文件...正在清理并刷新缓冲...为设备 %(device)s 转换 %(filename)s %(preset)s 失败!原因:%(reason)s转换目标设备用设备定义文件中的设定来转换该媒体无法导入 udev 或者 HAL 设备信息!Daniel G. Taylor 说明:设备预配置 %(name)s 安装成功。要编码到的设备 [computer]正在探索 %(filename)s正在探索文件信息...不要显示状态和剩余时间正在为 %(device)s 编码 %(filename)s 文件 (%(preset)s)失败:没能将文件 %(filename)s 为 %(device)s 转换为 (%(preset)s) 。正在编码... %(percent)i%% (剩余时间 %(time)s)输入有错误!错误!正在解开 %(filename)s回滚到“查找 HAL 设备”正在获取 %(location)s要绘制的字型:当绘制字幕时要使用的字型强制将来源进行反交错在队列内找到项目!队列为 %(queue)s常用配置ID:空闲%(infile)s 输入包含无效的串流!安装一个下载好的设备定义文件安装成功捕捉到中断信号。正在清理中... (使用 Ctrl-C 强制离开)任务完成长度: 实时预览帧率:已载入设备 %(device)s (%(presets)d 定义文件)找到的最长字幕是 %(filename)s制作:Mime 类型: 模块:没有管道可以查询!没有为 %(name)s 配置定义文件没找到有效的 DVD 字幕!媒体文件不能识别!不是有效的整数或片段:%(value)s!未挂载。其他未支持的多媒体串流:输出文件名 [自动]定义文件信息:定义文件计算剩余时间时发生问题!正在处理 %(job_count)d 任务...队列条目 %(infile)s -> %(preset)s -> %(outfile)s搜索光盘与视频捕捉设备选取字幕显示关于可用设备的信息 [false]显示关于输入文件的信息并离开在转码期间显示实时预览显示冗长(除错)输出简洁界面源设备属性源设备正在开始传送 %(pass)d,共 %(total)d要绘制的字幕文件要绘制的字幕:撷取与安装 %(location)s 时发生错误:%(error)s转码队列: 无法建构管道! 未知未知的 V4L 版本 %(version)s!未知的图标地址 URI %(uri)s版本:视频:您只能传递一个文件名给 --source-info 参数!编辑(_E)文件(_F)帮助(_H)视图(_V)默认值arista-0.9.7/locale/lt/0000755000175000017500000000000011577653227014235 5ustar dandan00000000000000arista-0.9.7/locale/lt/LC_MESSAGES/0000755000175000017500000000000011577653227016022 5ustar dandan00000000000000arista-0.9.7/locale/lt/LC_MESSAGES/arista.mo0000644000175000017500000000143311577650625017642 0ustar dandan00000000000000\   SourcesArista PreferencesArista homepage_Edit_File_Help_ViewProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-08-28 07:13+0000 Last-Translator: Mantas Kriaučiūnas Language-Team: Lithuanian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) ŠaltiniaiArista nustatymaiArista svetainė internete_Keisti_Failas_Pagalba_Rodymasarista-0.9.7/locale/pl/0000755000175000017500000000000011577653227014231 5ustar dandan00000000000000arista-0.9.7/locale/pl/LC_MESSAGES/0000755000175000017500000000000011577653227016016 5ustar dandan00000000000000arista-0.9.7/locale/pl/LC_MESSAGES/arista.mo0000644000175000017500000002125511577650634017642 0ustar dandan00000000000000d<\<>75 = F O a '{ *     . F _ r    n u-    (   # D (W ) .    $7 1\ .     $ !'?gos+x'7 %/.Gv |+ $% =Jh#q ,0*%$Pu #BI[z 1 <>8: s~%C%?X i.w#'7U @ 8*V3)@E@"?208iz)+26> B?P)"zX l#y8  )";@|.(P!%r;C7( &` 9  ! , ,!G!IZ!!/!!!!"7"?"@F""""" "#HM_9abY+ dFL Q%E$1@RSD6KN-)2`0=\/]PO :*.(CVJWG'T[87?I <543UB^Z;, &>A "c!X %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Convert for deviceConvert this media using a device presetDaniel G. Taylor Description:Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Fetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Make:Mime Type : Model:No valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Search for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :You may only pass one filename for --source-info!_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2011-01-17 18:56+0000 Last-Translator: Daniel Koć Language-Team: Polish MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d kanał(y): %(rate)dHz @ %(depth)d bitów (int) %(channels)d kanał(y): %(rate)dHz @ %(width)d bitów (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d kl/s Dźwięk: Kodek: Obraz:%(min)d:%(sec)02d%(name)s: %(description)s%prog [opcje] [plik1 plik2 plik3 …]%prog [opcje] plik_wejściowy [plik_wejściowy plik_wejściowy …]Usuwanie przeplotuPodgląd na żywoŹródłaNapisyTranskoder multimediów dla środowiska GNOME.Dodatkowe informacje:Preferencje programu AristaNarzędzie do transkodowania AristaTranskoder Arista Interfejs graficzny transkodera Arista Strona domowa programu AristaProgram Arista został wydany na warunkach licencji GNU LGPL 2.1. Tekst tej licencji znajduje się na stronie: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlTłumaczenia programu Arista dokonywane są w serwisie launchpad.net. Strona tłumaczeń znajduje się pod adresem: https://translations.launchpad.net/arista/trunk/+pots/aristaDźwięk:Autor:Dostępne urządzenia:Nie udało się znaleźć %(path)s w żadnej znanej lokalizacji!Wybór katalogu źródłowego…Wybór pliku źródłowego…Porządkowanie i opróżnianie buforów...Konwertuj dla urządzeniaKonwertuj ten plik, używając szablonu urządzeń.Daniel G. Taylor Opis:Profil dla urządzenia %(name)s został zainstalowany poprawnie.Urządzenie na którym plik ma być odtwarzany [domyślnie: computer]Przeszukiwanie %(filename)sWyszukiwanie informacji o pliku...Nie pokazuj stanu i czasu pozostałego do końca transkodowaniaKodowanie %(filename)s dla %(device)s (%(preset)s)Kodowanie... %(percent)i%% (pozostało %(time)s)Błąd wejścia!Błąd!Pobieranie %(location)sCzcionka napisów:Font wykorzystywany do dodawania napisówWymuś usunięcie przeplotu (Deinterlacing)Znaleziono element w kolejce! Kolejka to %(queue)sOgólneID:BezczynnośćPlik wejściowy %(infile)s nie zawiera prawidłowych strumieni!Instaluje pobrany plik profilu urządzeńInstalacja zakończona powodzeniemZłapano przerwanie. Trwa porządkowanie... (aby natychmiast przerwać proszę skorzystać ze skrótu klawiszowego CTRL+C)Zadanie zakończoneDługość: Szybkość odświeżania podglądu:Załadowano urządzenie %(device)s (%(presets)d presets)Producent:Typ MIME: Model:Nie znaleziono prawidłowego tytułu DVD!Nie rozpoznany plik multimedialny!Nieprawidłowa wartość całkowita lub ułamek: %(value)s!Nie zamontowane.Inne nieobsługiwane strumienie multimedialne:Nazwa pliku wyjściowego [automatycznie]Informacje o profilu:Profil kodowania [domyślny]Profile:Wystąpił błąd przy obliczaniu przewidywanego czasu do zakończenia operacji!Przetwarzanie %(job_count)d zadań…Szukaj nośników optycznych i urządzeń przechwytującychWybór napisówPokaz informacje na temat dostępnych urządzeń [domyślnie: brak]Pokaż informacje na temat pliku źródłowego i wyjdźPokaż podgląd podczas transkodowaniaPokaż dokładne informacje o pracy programu (do analizy)Prosty interfejsWłaściwości pliku wejściowegoŹródło:Rozpoczynanie przebiegu %(pass)d z %(total)dPlik z napisami do dodaniaNapisy do dodania:Wystąpił błąd podczas pobierania i instalacji %(location)s: %(error)sKolejka do transkodowania: Nie można utworzyć łańcucha przetwarzania! NieznaneNieznana wersja V4L: %(version)s!Nieznane URI ikonki %(uri)sWersja:Obraz:Można podać tylko jedną nazwę pliku dla opcji --source-info!_Edytuj_PlikPomo_c_Widokdomyślnyarista-0.9.7/locale/ar/0000755000175000017500000000000011577653227014220 5ustar dandan00000000000000arista-0.9.7/locale/ar/LC_MESSAGES/0000755000175000017500000000000011577653227016005 5ustar dandan00000000000000arista-0.9.7/locale/ar/LC_MESSAGES/arista.mo0000644000175000017500000000260611577650641017626 0ustar dandan00000000000000xy)$3X`iou{0Fd v)01 D R `k r     Live PreviewSourcesAdditional information :Arista PreferencesAvailable devices:Choose Source File...Daniel G. Taylor Live preview framerate:Show live preview during transcodingSource:Version:_Edit_File_Help_ViewProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-10-26 19:43+0000 Last-Translator: Abdullah Al-Sabi Language-Team: Arabic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) إستعراضالمصادرمعلومات إضافية :خصائص Aristaالأجهزة المتوفرة:إختيار ملف مصدر...Daniel G. Taylor عدد الإطارات في العرض الحيأظهر المحتوى أثناء التحويلالمصدر:النسخة:تحريرملفمساعدةعرضarista-0.9.7/locale/sl/0000755000175000017500000000000011577653227014234 5ustar dandan00000000000000arista-0.9.7/locale/sl/LC_MESSAGES/0000755000175000017500000000000011577653227016021 5ustar dandan00000000000000arista-0.9.7/locale/sl/LC_MESSAGES/arista.mo0000644000175000017500000003570511577650641017650 0ustar dandan00000000000000, <>&7e$'*0[av.!:T`)Sfxnu!    (+E;[ #  /: I>TN(&4Ez)     .A`y$!19.M| : $'Lb$r'  + '9a7y .# / 5BI)_+ $ 6B T an#P 3=q !,4 E Q0_*$   # D [ s B    !%!D>!!! ! !!!!1""""""""####>$>$7,%d%k%t%}%%$%5%D&I&O&"b&& &&3&&''2'['e<(()))+))w*ux***++ &+3+:+2R+:+ +B+$,,,A,T,s,,',,, ,9-V;--6-&->.C.K.)]... ....5.",/O/ g/(/&//1/=03Q000000;0 11 81Y1s1011*11 22)222 62+@20l22;2 2 2+3923(l33 333)3%3#4/=4m4%|4#4 44455&95`5)p5[5 526$J6o66)6&606"7*7@7 Q7]74u737#78"8@8O8&T8!{888O8 9%@9f9#n99R9 ::: (:5:U:^:5;D; K;U;r;"z;; ;;;;|#,e0l4awTor3="$:x6>zuqQ^+%OS/g.']sHh@1F5I2CZ*m< ;LE-)[R{v? ~d( `&N\bAfKy}!_87k iPGJM t DcYnpWXBj9VU %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%(spacing)s- %(name)s%(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]0.9.7DeinterlacingDevice Preset ResetLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Add a file to be transcodedAdd a new presetAdditional information :All device presets that ship with Arista Transcoder can be reset to their original settings. Warning: this will potentially overwrite user modifications.All parameters to --crop/-c must be non negative integers. %i is negative, aborting.Amount of pixels to crop before transcoding Specify as: Top Right Bottom Left, default: NoneAre you sure you want to reset your device presets? Doing so will permanently remove any modifications you have made to presets that ship with or share a short name with presets that ship with Arista!Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Audio OptionsAudio codec:Author email:Author name:Author:Available devices:Can't find %(path)s in any known prefix!Can't find %(path)s that can be written to!Can't query position!Cannot add conversion to queue because of missing elements!Channels:Choose Directory...Choose File...Choose Preset Icon...Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Codec HelpCodec options:Container:Conversion of %(filename)s to %(device)s %(preset)s %(action)sConversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCopyright 2008 - 2011 Daniel G. TaylorCouldn't import udev- or HAL-based device discovery!CreateCreate ConversionDaniel G. Taylor Delete presetDescription:Destination:Device PresetDevice info:Device not found!Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingDownload new presets from the webEffect:Encoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!ExportExport PresetExport of '%(name)s' complete.Export of '%(shortname)s' with %(count)d presets complete.Extension:Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sFramerate:GeneralGet PresetsHeight:ID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]PreferencesPreset PropertiesPreset info:Preset name:Preset not found!Preset to encode to [default]Presets:Problem calculating time remaining!Problem importing preset. This file does not appear to be a valid Arista preset!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sRender embedded SSA subtitlesReset PresetsReset completeReset presets to factory defaultsSaving preset to disk...Search for optical media and capture devicesSearch:Select A Destination...Select SubtitlesShort name:Show _ToolbarShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file encodingSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sUse --info device_name preset_name for more information on a preset.Version:Video :Video OptionsVideo codec:View or edit presetWidth:You are about to export %(count)d presets with the short name '%(shortname)s'. If you want to only export %(name)s then please first change the short name. Do you want to continue?You may only pass one filename for --source-info!_Edit_File_Get New Presets..._Help_Install Device Preset..._ViewcanceleddefaultfinishedtoProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2011-06-16 22:49+0000 Last-Translator: Primoz Verdnik Language-Team: Slovenian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d kanalov(s) : %(rate)dHz @ %(depth)dbitov (float) %(channels)d kanalov(s) : %(rate)dHz @ %(width)dbitov (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Zvok: Kodek : Video:%(min)d:%(sec)02d%(name)s: %(description)s%(spacing)s- %(name)s%(description)s%prog [možnosti] [datoteka1 datoteka2 datoteka3 ...]%prog [možnosti] vhodnadatoteka [vhodnadatoteka vhodnadatoteka ...]0.9.7RazpletanjeReset prednastavitev napravPredogledViriPodnapisiPrekodirnik večpredstavnih vsebin za namizje GNOMEDodaj datoteko za pretvorboDodaj novo prednastavitevDodatne informacije:Vse prednastavitve naprav, ki so priložene prekodirniku Arista je možno ponastaviti na izvirne nastavitve. Opozorilo: to lahko potencialno prepiše uporabnikove spremembe.Vsi parametri --crop/-c morajo biti ne-negativna cela števila. %i je negativno, prekinjam.Količina odrezanih pikslov pred kodiranje. Izberi v smislu: Zgoraj Desno Spodaj Levo, privzeto: brezSte prepričani, da želite resetirati prednastavitve naprav? To bo nepreklicno odstranilo vse modifikacije, ki ste jih nemara naredili prednastavitvam, s katerimi pride Arista, ali tistim, ki si z njimi delijo kratko ime.Preference programa AristaPrekodirnik AristaArista prekodirnik Uporabniški vmesnik za Arista prekodirnik Arista na spletuArista je objavljena pod pogoji GNU LGPL 2.1. Prosim, poglejte: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista je prevedena z orodjem launchpad.net na naslovu: https://translations.launchpad.net/arista/trunk/+pots/aristaZvok :Možnosti zvokaZvočni kodek:E-pošta avtorja:Ime avtorja:Avtor:Razpoložljive naprave:%(path)s ni moč najti v nobeni od znanih predpon!%(path)s, v katerega bi bilo moč pisati ni mogoče najti!Pozicijska poizvedba ni mogoča!Pretvorbe ni mogoče dodati v vrsto zaradi manjkajočih elementov!Kanali:Izberi direktorij...Izberi datoteko...Izberi ikono prednastavitve...Izberi direktorij izvora...Izberi datoteko vira...Čistim in splaknujem medpomnilnike....Pomoč pri kodekihMožnosti kodeka:Vsebovalnik:Pretvorba %(filename)s v %(device)s %(preset)s %(action)sPretvorba datoteke %(filename)s za %(device)s %(preset)s ni uspela! Razlog: %(reason)sPretvori za napravoPretvori ta medij s pomočjo prednastavitve za napravoCopyright 2008 - 2011 Daniel G. TaylorUvoz udev- ali odkrivanje naprav s pomočjo HAL ni bil mogoč.UstvariUstvari pretvorboDaniel G. Taylor Izbriši prednastavitevOpis:DestinacijaPrednastavitev napraveInformacije o napravi:Naprave ni moč najti!Prednastavitev naprave %(name)s uspešno nameščena.Kodiranje za napravo [računalnik]Odkrivanje %(filename)sOdkrivanje informacij o datotekiNe prikazuj statusa in preostalega časaPresnami nove prednastavitve iz spletaUčinek:Kodiranje %(filename)s za %(device)s (%(preset)s)Kodiranje %(filename)s za %(device)s (%(preset)s) spodletelo!Kodiranje... %(percent)i%% (preostalo še %(time)s)Napaka na vhodu!Napaka!IzvoziIzvozi prednastavitevIzvoz '%(name)s' končan.Izvoz '%(shortname)s' z %(count)d prednastavitvami končan.Razširitev:Razširjanje %(filename)sVrnitev na odkrivanje HAL napravPridobivanje %(location)sPisava za izris:Katera pisava naj se uporabi za izris podnapisovVsili razpletanje viraNajden element v vrsti! Vrsta je %(queue)sŠt. slik na sekundoSplošnoDobi prednastavitveVišina:ID:NedejavnoVhod %(infile)s ne vsebuje veljavnih tokov!Namesti presneto datoteko prednastavitve napraveNamestitev uspešnaUjeta prekinitev. Čiščenje... (Ctrl-C za prisilni izhod)Delo končanoDolžina: Število sličic na sekundo med predogledomNaložena naprava %(device)s (%(presets)d prednastavitev)Najdaljši najden naslov je %(filename)sZnamka:Mime tip: Model:Ni cevovoda za poizvedbo!Za %(name)s ni definiranih prednastavitevVeljavnega DVD naslova ni moč najti!Datoteke medija ni moč prepoznati!Neveljavno celo število ali ulomek: %(value)s!Ni nameščen.Drug nepodprt večpredstavnostni tok:Ime izhodne datoteke [avtomatično]PreferenceLastnosti prednastavitveInformacije o prednastavitvi:Ime prednastavitvePrednastavitve ni moč najti!Prednastavitev za kodiranje [privzeto]Prednastavitve:Težava pri računanju preostalega časa!Težave pri uvozu prednastavitve. Ta datoteka ni videti kot veljavna prednastavitev Ariste.Procesiram %(job_count)d jobs...Vnos vrste %(infile)s -> %(preset)s -> %(outfile)sIzriši vgnezdene podnapise tipa SSAResetiraj prednastavitvePonastavljanje končanoPovrni na privzete tovarniške nastavitveShranjevanje prednastavitve na disk...Išči po optičnih medijih in napravah za zajemIšči:Izberi destinacijo...Izberi podnapiseKratko ime:Pokaži _orodno vrsticoPrikaži informacije o napravah, ki so na voljo [ne]Prikaži informacije o vhodni datoteki in zaključiPokaži predogled med prekodiranjemPrikaži verbozen (debug) izpisPreprost uporabniški vmesnikLastnosti viraVir:Začetek prehoda %(pass)d od %(total)dKodna tabela datoteke s podnapisiDatoteka s podnapisi za izrisPodnapisi za izris:Med pridobivanjem in nameščanjem %(location)s je prišlo do napake: %(error)sČakalna vrsta za prekodiranje: Cevovoda ni bilo moč skonstruirati! NeznanoNeznana V4L različica %(version)s!Neznan URI naslov ikone %(uri)sUporabi --info ime_naprave ime_prednastavitve za več informacij o prednastavitvi.Različica:Video:Možnosti videaVideo kodek:Poglej ali uredi prednastavitevŠirina:Izvozili boste %(count)d prednastavitev s kratkim imenom '%(shortname)s'. Če želite izvoziti samo %(name)s, potem prosimo najprej spremenite kratko ime. Želite nadaljevati?Za --source-info lahko podate lahko samo eno datoteko_Uredi_DatotekaDobi nove _prednastavitve...Po_moč_Namesti prednastavitev naprave..._Pogledpreklicanoprivzetokončanodoarista-0.9.7/locale/eu/0000755000175000017500000000000011577653227014227 5ustar dandan00000000000000arista-0.9.7/locale/eu/LC_MESSAGES/0000755000175000017500000000000011577653227016014 5ustar dandan00000000000000arista-0.9.7/locale/eu/LC_MESSAGES/arista.mo0000644000175000017500000000617011577650631017634 0ustar dandan00000000000000-=<>7](;RZbu) $  &#/S*d "(<>73 k s |         1 : B ] )}  &      & / %> d <z !    " @ J R [ g q  % $(! '#*- ") + ,& %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)sLive PreviewSourcesSubtitlesAdditional information :Arista Transcoder Arista Transcoder GUI Audio :Author:Available devices:Choose Source File...Daniel G. Taylor Description:Font to render:Font to use when rendering subtitlesGeneralID:IdleLength : Mime Type : Model:Presets:Problem calculating time remaining!Select SubtitlesShow information about input file and exitSource:Subtitle file to renderSubtitles to render:Transcode queue: UnknownUnknown V4L version %(version)s!Version:Video :_Edit_File_Help_ViewProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2009-11-10 20:11+0000 Last-Translator: nikhov Language-Team: Basque MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Bideo:%(min)d:%(sec)02d%(name)s: %(description)sAurrez IkustaraziJatorriakAzpitituluakInformazio gehigarria :Arista Transcoder Arista Transcoder GUI Audioa :Egilea:Dispositibo erabilgarriak:Jatorrizko artxiboa aukeratu...Daniel G. Taylor Deskribapena:Renderizatzeko letra-tipoa:Subtituluak renderizatzeko letra-tipoaOrokorraID:Ez-aktiboLuzera : Mime Type : Modeloa:Aurrezarpenak:Arazoa gainerako denbora kalkulatzen!Azpitituloak aukeratuJatorrizko artxiboari buruzko informazioa erakutsi eta irtenJatorria:Renderizatzeko subtitulu artxiboaRenderizatzeko azpitituloak:Eraldaketa ilara: EzezagunaV4L bertsio %(version)s ezezaguna!Bertsioa:Bideo :_Editatu_Fitxategia_Laguntza_Ikusiarista-0.9.7/locale/pt_BR/0000755000175000017500000000000011577653227014624 5ustar dandan00000000000000arista-0.9.7/locale/pt_BR/LC_MESSAGES/0000755000175000017500000000000011577653227016411 5ustar dandan00000000000000arista-0.9.7/locale/pt_BR/LC_MESSAGES/arista.mo0000644000175000017500000002256311577650637020243 0ustar dandan00000000000000nP <Q > 7     1 'K *s     .  / B T g ~ n u s {  (    # N* y ( 4 ) .!Po$19.2asz$$' HPT+Y'7 .(#W{ )+  8$Ej # 3,/\0m*$ &#.RjB 5>1Fx~:B<}7 08*i 53HZmv}D$ 9SNs8G)` 3'' #45X<1+,Xn*%, 14Cx8 6 /? o v   - ) )!2+! ^!(l! !!!!$"$&"7K"3""<"6#2?# r####%###$:.$i$&$ $%$!$$%: %G%O%X% _%k%aTS3mWM C] 9I@Qn#XPFDh\GE$1_B4 2!jf?8& +' [Y"OdZH ;.=kJ(l)cL`K6*7/be<g-0:%A,R^U5iNV> %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCouldn't import udev- or HAL-based device discovery!Daniel G. Taylor Description:Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :You may only pass one filename for --source-info!_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-12-22 03:09+0000 Last-Translator: Adriano Steffler Language-Team: Brazilian Portuguese MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d canais(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d canais(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [arquivo1 arquivo2 arquivo3 ...]%prog [options] infile [infile infile ...]DesentrelaçamentoAmostra de videoFontesLegendasUm transcodificador multimídia para o GNOME desktop.Informação adicional :Preferências AristaArista TranscoderArista Transcoder Arista Transcoder GUI Homepage do AristaArista é liberado sob a licença GNU LGPL 2,1 Por Favor veja: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista é traduzida através do launchpad.net. Por favor, veja: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Autor:Dispositivos disponíveis:Não foi possível encontrar %(path)s em qualquer prefixo conhecido!Não é possível obter a posição!Escolha a Pasta Fonte...Escolher arquivo fonte...Limpando e resetando buffers...Conversão de %(filename)s do %(device)s %(preset)s falhou! Motivo: %(reason)sConverter para o dispositivoConverter esta mídia utilizando um dispositivo de pré-Não foi possível importar udev ou descobrir um dispositivo HAL-based!Daniel G. Taylor Descrição:Dispositivo de pré %(name)s instalado com sucesso.Dispositivo para codificar [computador]Descobrindo %(filename)sDescobrindo informações de arquivo...Não exibir status e tempo restanteCodificando %(filename)s para %(device)s (%(preset)s)Convertendo %(filename)s for %(device)s (%(preset)s) falhou!Codificando.., %(percent)i%% (%(time)s restantes)Erro com entrada!Erro!Extraindo %(filename)sRecuando para descoberta de dispositivo HALBuscando %(location)sFonte para render:Fonte para usar quando renderizar LegendasForça de desentrelaçamento da fonteEncontrado item na lista! Lista é %(queue)sGeralID:InativoEntrada %(infile)s não contem um stream válido!Instalar um dispositivo de pré-download de arquivosInstalação Bem-SucedidaInterrompido. Limpando... (Ctrl-C para fechar à força)Tarefa finalizadaDuração: Framerate de amostra de video:Dispositivo %(device)s carregado (%(presets)d presets)O mais longo título encontrado é %(filename)sMarca:Tipo Mime: Modelo:Nenhum pipeline para consulta!Nenhum pré-ajuste foi definido para %(name)sNenhum título válido de DVD encontrado!Não é um arquivo de mídia reconhecido!Não é um inteiro ou fração válido: %(value)s!Não montado.Outros fluxo Multimedia não suportados:Nome do arquivo de saída [auto]Informação de perfil:Preset para codificar [padrão]Pré-definições:Problema ao calcular tempo restante!Processando %(job_count)d tarefas...Fila de entrada %(infile)s -> %(preset)s -> %(outfile)sProcurar por midias opticas e capturar dispositivosSelecionar LegendasExibir informações sobre dispositivos disponíveis [false]Exibir informações sobre arquivo de entrada e saídaExibir amostra de video durante transcodificaçãoMapa detalhado (debug) de saídaSimples interface do usuárioPropriedades da FonteFonte:Iniciando passe %(pass)d de %(total)dFicheiro de legendas para processarLegendas para render:Houve um erro ao buscar e instalar %(location)s: %(error)sTranscodificar fila: Não é possível construir pipeline! DesconhecidoVersão V4L %(version)s desconhecida!URI de icone desconhecido %(uri)sVersão:Video :Você só pode passar um nome de arquivo em --source-info!_Editar_Arquivo_Ajuda_Visualizarpadrãoarista-0.9.7/locale/de/0000755000175000017500000000000011577653227014206 5ustar dandan00000000000000arista-0.9.7/locale/de/LC_MESSAGES/0000755000175000017500000000000011577653227015773 5ustar dandan00000000000000arista-0.9.7/locale/de/LC_MESSAGES/arista.mo0000644000175000017500000003645011577650644017623 0ustar dandan00000000000000, <>&7e$'*0[av.!:T`)Sfxnu!    (+E;[ #  /: I>TN(&4Ez)     .A`y$!19.M| : $'Lb$r'  + '9a7y .# / 5BI)_+ $ 6B T an#P 3=q !,4 E Q0_*$   # D [ s B    !%!D>!!! ! !!!!1""""""""####7$9$7%W%_%g%p%%$%+%(%&&$1&V&o&~&8&%&& '%'l'uP(()))))}*~*+ + +-+@+Q+X+3m+?+&+I,R,[,l,,,, , ,- -B!-[d--/-& .H0.y..).. . . . ///+/ [/|/9/*/,/&0:.0Ei0*000 0(1!.1EP111#111027N2A2 2 222333 3%@3f3I333(31 4.>4m4 t44$4*4#4465M5/`55 55 555666E?6g6-6>7#Z7~774707*8H8O8b8 u88889829':9b999'9999R9N:*h: :#::S:5;>;E; Y;f;;;IY< <<<<<< == =$=|#,e0l4awTor3="$:x6>zuqQ^+%OS/g.']sHh@1F5I2CZ*m< ;LE-)[R{v? ~d( `&N\bAfKy}!_87k iPGJM t DcYnpWXBj9VU %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%(spacing)s- %(name)s%(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]0.9.7DeinterlacingDevice Preset ResetLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Add a file to be transcodedAdd a new presetAdditional information :All device presets that ship with Arista Transcoder can be reset to their original settings. Warning: this will potentially overwrite user modifications.All parameters to --crop/-c must be non negative integers. %i is negative, aborting.Amount of pixels to crop before transcoding Specify as: Top Right Bottom Left, default: NoneAre you sure you want to reset your device presets? Doing so will permanently remove any modifications you have made to presets that ship with or share a short name with presets that ship with Arista!Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Audio OptionsAudio codec:Author email:Author name:Author:Available devices:Can't find %(path)s in any known prefix!Can't find %(path)s that can be written to!Can't query position!Cannot add conversion to queue because of missing elements!Channels:Choose Directory...Choose File...Choose Preset Icon...Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Codec HelpCodec options:Container:Conversion of %(filename)s to %(device)s %(preset)s %(action)sConversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCopyright 2008 - 2011 Daniel G. TaylorCouldn't import udev- or HAL-based device discovery!CreateCreate ConversionDaniel G. Taylor Delete presetDescription:Destination:Device PresetDevice info:Device not found!Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingDownload new presets from the webEffect:Encoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!ExportExport PresetExport of '%(name)s' complete.Export of '%(shortname)s' with %(count)d presets complete.Extension:Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sFramerate:GeneralGet PresetsHeight:ID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]PreferencesPreset PropertiesPreset info:Preset name:Preset not found!Preset to encode to [default]Presets:Problem calculating time remaining!Problem importing preset. This file does not appear to be a valid Arista preset!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sRender embedded SSA subtitlesReset PresetsReset completeReset presets to factory defaultsSaving preset to disk...Search for optical media and capture devicesSearch:Select A Destination...Select SubtitlesShort name:Show _ToolbarShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file encodingSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sUse --info device_name preset_name for more information on a preset.Version:Video :Video OptionsVideo codec:View or edit presetWidth:You are about to export %(count)d presets with the short name '%(shortname)s'. If you want to only export %(name)s then please first change the short name. Do you want to continue?You may only pass one filename for --source-info!_Edit_File_Get New Presets..._Help_Install Device Preset..._ViewcanceleddefaultfinishedtoProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2011-06-17 18:50+0000 Last-Translator: Wolfgang Stöggl Language-Team: German MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d Kanäle: %(rate)dHz @ %(depth)dbits (int) %(channels)d Kanäle: %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d BpS Audio: Codec: Video:%(min)d:%(sec)02d%(name)s: %(description)s%(spacing)s- %(name)s%(description)s%prog [Optionen] [Datei1 Datei2 Datei3 …]%prog [Optionen] Datei [Datei Datei …]0.9.7DeinterlacingGeräteprofil ZurückstellungEchtzeit-VorschauQuellenUntertitelEin Multimedia-Umwandler für die GNOME-Arbeitsumgebung.Mediendatei zum umwandeln hinzufügenGeräteprofil hinzufügenZusätzliche Informationen:Alle mit Arista-Konverter gelieferten Geräteprofile können auf ihre ursprünglichen Einstellungen zurückgesetzt werden. Warnung: Dies überschreibt vom Benutzer vorgenommene Änderungen.Alle Werte für --crop/-c müssen nicht negative, ganze Zahlen sein. %i ist negativ, daher wird abgebrochen.Anzahl an Pixeln, die vor dem Umwandeln zugeschnitten werden sollen. Angabe: Oben Rechts Unten Links, Standard: KeineSind Sie sicher, dass Sie Ihre Geräteprofile zurücksetzen möchten? Auf diese Weise gehen sämtliche Änderungen an den Geräteprofilen, die mit Arista geliefert werden oder den Kurznamen mit diesen Profilen teilen, verloren!Arista-EinstellungenArista-KonverterArista-Konverter Arista Konvertor GUI Arista-WebseiteArista ist unter der GNU LGPL 2.1 veröffentlicht. Nachzulesen unter: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista wird über Launchpad.net übersetzt. Siehe: https://translations.launchpad.net/arista/trunk/+pots/arista/de/+translateAudio:Audio EinstellungenAudio-Codec:E-Mail des Autors:Name des Autors:Autor:Verfügbare Geräte:Konnte %(path)s in keinem bekannten Präfix finden!Konnte keinen Pfad %(path)s finden der geschrieben werden kann!Konnte die Position nicht verarbeiten!Konnte Konvertierung wegen vermisste Elemente nicht zur Queue hinzufügenKanäle:Ordnerauswahl...Datei auswählen...Voreinstellungsicon wählen...Quellordner auswählen …Quelldatei auswählen …Aufräumen und Puffer leeren …Codec HilfeCodec einstellungen:Container:Konvertierung von %(filename)s zu %(device)s %(preset)s %(action)sKonvertierung von %(filename)s zu %(device)s %(preset)s fehlgeschlagen! Ursache: %(reason)sFür Gerät konvertierenDieses Medium anhand eines Profils konvertierenCopyright 2008 - 2011 Daniel G. TaylorHAL- oder udev-basierte Geräteerkennung konnte nicht importiert werden!ErzeugeKonversion ErstellenDaniel G. Taylor Voreinstellung löschenBeschreibung:Zielordner:GeräteprofilGeräte-Info:Gerät wurde nicht gefunden!Geräteprofil %(name)s erfolgreich installiert.Zielgerät auswählen [computer]Untersuche %(filename)sDatei-Informationen werden untersuchtUntersuchen der …Status und noch benötigte Zeit ausblendenNeue Voreinstellungen vom Internet nachladenEffekt:%(filename)s wird für %(device)s (%(preset)s) umgewandeltKodierung von %(filename)s für %(device)s %(preset)s fehlgeschlagen!Encodiere... %(percent)i%% (noch %(time)s)Fehler mit der EingabeFehler!ExportierenKonvertierungsvoreinstellung exportieren'%(name)s' erfolgreich exportiert'%(shortname)s' mit %(count)d voreinstellungen erfolgreich exportiertDateierweiterung:%(filename)s werden extrahiertSchalte um auf HAL-GeräteerkennungLade %(location)sSchriftart für die Untertitel:Schriftart, die für die Untertitel benutzt wirdZeilenentflechtung der Quelle erzwingen (Deinterlacing)Objekt in der Warteschlange gefunden! Warteschlange ist %(queue)sBildfrequenz:AllgemeinGeräteprofile nachladenHöhe:ID:InaktivEingabe %(infile)s enthält keine gültigen Spuren!Heruntergeladenes Profil installierenInstallation erfolgreichUnterbrechung abgefangen. Räume auf … (Ctrl-C um Beenden zu erzwingen)Auftrag erledigtLänge: Bildwiederholrate der Echtzeit-Vorschau:Geladenes Gerät %(device)s (%(presets)d Profile)Längster gefundener Titel lautet %(filename)sMarke:Mime-Typ: Modell:Keine Weiterleitung zum Verarbeiten!Für %(name)s sind keine Profile definiertKeine gültiger DVD-Titel gefunden!Mediendatei nicht erkannt!Keine gültige Ganzzahl oder Bruchteil von: %(value)s!Nicht eingehängt.Andere, nicht unterstützte Multimedia-Spuren :Ausgabedateiname [automatisch]EinstellungenVoreinstellung EigenschaftenProfil-Info:Voreinstellungsname:Profil wurder nicht gefunden!Umwandlungsprofil [default]Profile:Bei der Berechnung der verbleibenden Zeit ist ein Fehler aufgetreten!Probleme beim importieren des Geräteprofils. Diese Datei ist nicht ein gültiges Arista Geräteprofil!%(job_count)d Aufträge werden bearbeitet …Warteschlangen-Eintrag %(infile)s -> %(preset)s -> %(outfile)sEingebettete SSA-Untertitel rendernGeräteprofile zurückstellenZurückstellung ist fertigEinstellungen auf Vorgabeeinstellungen zurücksetzenKonvertierungsvoreinstellung wird gespeichert...Optische Medien und Aufnahmegeräte suchenSuche:Zielordner WählenUntertitel wählenKurzname:Zeige WerkzeugleisteInformationen über verfügbare Geräte anzeigen [false]Informationen über die Eingabedatei anzeigen und beendenEchtzeit-Vorschau während der Umwandlung anzeigenDetaillierte (debug) Ausgabe aktivierenEinfache BenutzeroberflächeQuelleinstellungenQuelle:Starte Durchgang %(pass)d von %(total)dUntertitel-KodierungUntertitel-Datei:Untertitel-Datei:Ein Fehler ist beim Laden und Installieren von %(location)s aufgetreten: %(error)sWarteschlange umwandeln: Konnte die Weiterleitung nicht erstellen! UnbekanntUnbekannte V4L Version %(version)s!Unbekannter Symbol-Pfad %(uri)sBenütze --info gerät profil um mehr Information über ein Geräterprofil zu sehenVersion:Video:Video EinstellungenVideo-Codec:Voreinstellung bearbeitenBreite:Sie sind dabei, %(count)d Voreinstellungen mit dem Kurznamen »%(shortname)s« zu exportieren. Wenn Sie nur %(name)s exportieren möchten, so sollten Sie zuerst den Kurznamen ändern. Möchten Sie fortfahren?Sie können der Option »--source-info« nur einen Dateinamen übergeben!_Bearbeiten_DateiNeue Voreinstellungen nachladen_HilfeVoreinstellung installieren_AnsichtabgebrochenVorgabeabgeschlossenbisarista-0.9.7/locale/ca/0000755000175000017500000000000011577653227014201 5ustar dandan00000000000000arista-0.9.7/locale/ca/LC_MESSAGES/0000755000175000017500000000000011577653227015766 5ustar dandan00000000000000arista-0.9.7/locale/ca/LC_MESSAGES/arista.mo0000644000175000017500000002360511577650642017612 0ustar dandan00000000000000nP <Q > 7     1 'K *s     .  / B T g ~ n u s {  (    # N* y ( 4 ) .!Po$19.2asz$$' HPT+Y'7 .(#W{ )+  8$Ej # 3,/\0m*$ &#.RjB 5>1Fx~8B:{7  -6*d9":Tl1uvI0 :W8s-CEQ) 8*Kv,&=\(6$(Q!s:%4 F N ] .e 7 $ \ N! _!*j!C!5! " "'"$."7S"'"'"," #)#&@# g#-##4#+#9'$1a$$;$3$7%(U%~%%%1%"%&G*&r&%& &.&#&''4"'W'^'f' m' y'aTS3mWM C] 9I@Qn#XPFDh\GE$1_B4 2!jf?8& +' [Y"OdZH ;.=kJ(l)cL`K6*7/be<g-0:%A,R^U5iNV> %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCouldn't import udev- or HAL-based device discovery!Daniel G. Taylor Description:Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :You may only pass one filename for --source-info!_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-08-27 06:53+0000 Last-Translator: David Planella Language-Team: Catalan MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d canals: %(rate)d Hz @ %(depth)d bits (int) %(channels)d canals: %(rate)d Hz @ %(width)d bits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Àudio: Còdec: Vídeo:%(min)d:%(sec)02d%(name)s: %(description)s%prog [opcions] [fitxer1 fitxer2 fitxer3 ...]%prog [opcions] fitxer [fitxer fitxer ...]DesentrellaçatPrevisualització en viuOrígensSubtítolsUn transcodificador multimèdia per a l'escriptori GNOME.Informació addicional:Preferències de l'AristaTranscodificador AristaTranscodificador Arista Interfície gràfica del transcodificador Arista Pàgina inicial de l'AristaL'Arista és publicat sota la llicència GNU LPGL 2.1. Vegeu: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlL'Arista es tradueix a través del launchpad.net. Vegeu: https://translations.launchpad.net/arista/trunk/+pots/aristaÀudio:Autor:Dispositius disponibles:No es pot trobar %(path)s en cap prefix conegut.No es pot consultar la posició.Trieu el directori origen...Trieu un fitxer d'origen...S'estan netejant i buidant les memòries intermèdies...La conversió del fitxer %(filename)s a la predefinició %(preset)s del dispositu %(device)s ha fallat. El motiu fou: %(reason)sConversió a dispositiuConverteix aquest suport utilitzant una predefinició de dispositiuNo s'ha pogut importar el descobriment de dispositius basat en l'Udev o en el HALDaniel G. Taylor Descripció:S'ha instal·lat la predefinició %(name)s correctament.Dispositiu al qual codificar a [ordinador]S'està recopilant %(filename)sS'està recopilant informació del fitxer...No mostris l'estat ni el temps restantS'està codificant %(filename)s per a %(device)s (%(preset)s)La codificació del fitxer %(filename)s per al dispositiu %(device)s (%(preset)s) ha fallat.S'està codificant... %(percent)i%% (manquen %(time)s)S'ha produït un error en l'entrada.S'ha produït un errorS'està extraient el fitxer %(filename)sEs recorrerà com a alternativa al descobriment de dispositius mitjançant el HALS'estan obtenint %(location)sTipus de lletra a renderitzar:Tipus de lletra a utilitzar quan es renderitzin subtítolsForça el desentrellaçat de l'origenS'ha trobat l'element a la cua. La cua és %(queue)sGeneralIdentificador:InactiuL'entrada %(infile)s no conté fluxos vàlids.Instal·la un fitxer de predefinició que s'hagi baixatLa instal·lació fou satisfactòriaS'ha capturat una interrupció. S'està netejant... (premeu Ctrl-C per a forçar la sortida)Tasca realitzadaLongitud: Imatges per segon de la previsualització:S'ha carregat el dispositiu %(device)s (%(presets)d predefinicions)El títol més llarg que s'ha trobat és %(filename)sFabricant:Tipus MIME: Model:No hi ha cap conducte per consultar.No hi ha cap predefinició definida amb el nom %(name)sNo s'ha trobat cap títol de DVD vàlidNo s'ha reconegut el fitxer multimèdiaNo és un enter o fracció vàlid: %(value)sSense muntar.Altres fluxos multimèdia no compatibles:Nom del fitxer de sortida [automàtic]Informació de la predefinició:Predefinició per codificar a [predeterminat]Predefinicions:S'ha produït un error en calcular el temps restant.S'estan processant %(job_count)d tasques...Element de la cua %(infile)s -> %(preset)s -> %(outfile)sCerca un suport òptic o un dispositiu de capturaSelecciona els subtítolsMostra informació sobre els dispositius disponibles [fals]Mostra informació sobre el fitxer d'entrada i surtMostra la previsualització durant la transcodificacióMostra la sortida detallada (depuració)Interfície d'usuari senzillaPropietats de l'origenOrigen:Està començant la passada %(pass)d de %(total)dFitxer de subtítols a renderitzarSubtítols a renderitzar:S'ha produït un error en obtenir i instal·lar %(location)s: %(error)sCua de transcodificació: No s'ha pogut construir el conducte. DesconegutLa versió %(version)s del V4L és desconegudaURI %(uri)s de la icona desconegudaVersió:Vídeo:Només podeu passar un nom de fitxer a --source-info_Edita_FitxerA_juda_Visualitzaper defectearista-0.9.7/locale/id/0000755000175000017500000000000011577653227014212 5ustar dandan00000000000000arista-0.9.7/locale/id/LC_MESSAGES/0000755000175000017500000000000011577653227015777 5ustar dandan00000000000000arista-0.9.7/locale/id/LC_MESSAGES/arista.mo0000644000175000017500000002237011577650627017624 0ustar dandan00000000000000nP <Q > 7     1 'K *s     .  / B T g ~ n u s {  (    # N* y ( 4 ) .!Po$19.2asz$$' HPT+Y'7 .(#W{ )+  8$Ej # 3,/\0m*$ &#.RjB 5>1Fx~<1>n7'+*S~ /"4G^srg oz?$N=4?) D3N$,19:.t'/,\:{*748H  1. ) 7 ? 2[  % 6 !*!C! _! l!!"!!5!4"R"8a"3"0""" "#-#=#$E#j##J##+# +$&6$ ]$~$$8$$$ $$ $aTS3mWM C] 9I@Qn#XPFDh\GE$1_B4 2!jf?8& +' [Y"OdZH ;.=kJ(l)cL`K6*7/be<g-0:%A,R^U5iNV> %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCouldn't import udev- or HAL-based device discovery!Daniel G. Taylor Description:Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :You may only pass one filename for --source-info!_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2011-05-25 23:52+0000 Last-Translator: zaenalarifin Language-Team: Indonesian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Kodec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlasiPratampil-LangsungSumberTerjemahansuatu multimedia transcoder untuk destop GNOME.Tambahan informasi :Arista PreferensiArista TranscoderArista Transcoder Arista Transcoder GUI Halamanrumah AristaArista adalah dirilis dibawah GNU LGPL 2.1. Silahkan lihat: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista adalah diterjemahkan melalui launchpad.net. Silahkan lihat: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Pengarang:Disediakan perangkat:Tidak dapat mencari %(path)s dalam suatu prefix yang diketahui!Tidak dapat query posisi!Pilih Sumber Tujuan...Pilih Sumber Berkas...Membersihkan dan flushing buffers...Konversi dari %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sKonversi untuk perangkatKonvert media ini menggunakan suatu perangkat presetTidak dapat mengimpor udev- atau HAL-based perangkat discovery!Daniel G. Taylor Gambaran:Perangkat yang ditetapkan %(name)s sukses dipasang.Perangkat untuk encode ke [computer]Discovering %(filename)sDiscovering info berkas...Jangan tampilkan status dan waktu mengulangiEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Gagal dengan inputnya!Gagal!MengEkstrak %(filename)sFalling back ke HAL perangkat discoveryFetching %(location)sHuruf untuk render:Huruf untuk digunakan ketika rendering subtitelTenaga deinterlasi dari sumberDitemukan perkakas dalam antrian! Antrian adalah %(queue)sLazimID:Nganggur-terdiamInput %(infile)s memuat tidak sah streams!Install suatu unduhan perangkat berkas yang ditampilkanPemasangan BerhasilInterrupt caught. Membersihkan... (Ctrl-C to force exit)Pekerjaan selesaiPanjang : Pratampil langsung bingkai-rate:Memuat perangkat %(device)s (%(presets)d presets)Terpanjang titel ditemukan adalah %(filename)sMembuat:Mime Jenis : Peraga:Bukan pipeline untuk query!Tidak ada preset yang telah defined untuk %(name)sTidak sah DVD titel ditemukan!Tidak suatu yang diakui media berkas!Tidak suatu integer atau fraction yang sah: %(value)s!Tidak didaki.Yang lain non-dukungan Multimedia stream :Keluaran nama berkas [auto]Info Preset:Preset untuk encode ke [default]Perangkat-ditampilkan:Masalah kalkulasi waktu remaining!Proses %(job_count)d kerjaan...Antrian entry %(infile)s -> %(preset)s -> %(outfile)sMencari untuk optik media dan menangkap perangkatnyaPilih SubtitelTampilkan informasi sekitar disediakan perangkat [false]Tampilkan informasi sekitar input berkas dan keluarTampilkan pratampil langsung sewaktu transcodingTampilkan verbose (debug) keluaranPraktis UISumber PropertiSumber:Starting telah %(pass)d ke %(total)dSubtitel berkas untuk renderSubtitel untuk render:Disini ada suatu kesalahan fetching dan pemasangan %(location)s: %(error)sTranscode mengantri: Tidak digunakan untuk konstruksi pipeline! Tidak tahuTidak diketahui V4L versi %(version)s!Tidak diketahui icon URI %(uri)sVersi:Video :Kamu mungkin hanya satu nama-berkas untuk --sumber-info!_Gubah_Berkas_Bantu-tolong_LihatBawaan-semulaarista-0.9.7/locale/zh_TW/0000755000175000017500000000000011577653227014651 5ustar dandan00000000000000arista-0.9.7/locale/zh_TW/LC_MESSAGES/0000755000175000017500000000000011577653227016436 5ustar dandan00000000000000arista-0.9.7/locale/zh_TW/LC_MESSAGES/arista.mo0000644000175000017500000002205311577650637020262 0ustar dandan00000000000000nP <Q > 7     1 'K *s     .  / B T g ~ n u s {  (    # N* y ( 4 ) .!Po$19.2asz$$' HPT+Y'7 .(#W{ )+  8$Ej # 3,/\0m*$ &#.RjB 5>1Fx~?`B7 & 7CU'o*  +/?Sd)v fx  6+OI*8) =*G r!99%5_ $?.^)$ G C P[5t%  ( 9 Z +y $   " !,!$#O#f##m## # #6# # $ $ $$$aTS3mWM C] 9I@Qn#XPFDh\GE$1_B4 2!jf?8& +' [Y"OdZH ;.=kJ(l)cL`K6*7/be<g-0:%A,R^U5iNV> %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCouldn't import udev- or HAL-based device discovery!Daniel G. Taylor Description:Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :You may only pass one filename for --source-info!_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-06-24 15:06+0000 Last-Translator: Cheng-Chia Tseng Language-Team: Chinese (Traditional) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d channels(s) : %(rate)dHz @ %(depth)d 位元 (int) %(channels)d channels(s) : %(rate)dHz @ %(width)d 位元 (浮動) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps 音訊: 編解碼器: 視訊:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]去交錯即時預覽來源字幕為 GNOME 桌面設計的多媒體轉碼器額外資訊:Arista 偏好設定Arista 轉碼器Arista 轉碼器 Arista 轉碼器圖形化使用者介面 Arista 主頁Arista 依據 GNU LGPL 2.1 發行。 請見: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista 透過 launchpad.net 來進行翻譯。請查看: https://translations.launchpad.net/arista/trunk/+pots/arista音訊:作者:可用的裝置:在任何已知的前綴路徑內找不到 %(path)s!無法查詢位置!選擇來源目錄...選擇來源檔...正在清理並沖刷緩衝..轉換給 %(device)s 的 %(filename)s (%(preset)s) 失敗!原因:%(reason)s為裝置進行轉換使用裝置預先設置來轉換此媒體無法匯入以 udev 或 HAL 為基礎的裝置探索!Daniel G. Taylor 描述:%(name)s 裝置預先設置成功安裝。要編碼到的裝置 [computer]正在探索 %(filename)s正在探索檔案資訊...不要顯示狀態和剩餘時間正在為 %(device)s 編碼 %(filename)s 檔 (%(preset)s)為 %(device)s 編碼 %(filename)s (%(preset)s) 失敗!正在編碼... %(percent)i%% (剩餘時間 %(time)s)輸入有錯誤!錯誤!正在抽取 %(filename)s正退回至 HAL 裝置探索正在擷取 %(location)s要繪製的字型:當繪製字幕時要使用的字型強制將來源進行去交錯在佇列內找到項目!佇列為 %(queue)s一般ID:閒置%(infile)s 輸入包含無效的串流!安裝下載的裝置預先設置檔安裝成功捕捉到中斷訊號。正在清理中... (使用 Ctrl-C 強制離開)工作完成長度: 即時預覽畫格率:已載入裝置 %(device)s (%(presets)d 預先設置)找到的最長標題為 %(filename)s製作:Mime 類型: 模組:沒有導管可以查詢!沒有定義過 %(name)s 的預先設置找不到有效的 DVD 標題!無法辨識的媒體檔案!不是有效的整數或片段:%(value)s!未掛載。其他未支援的多媒體串流:輸出檔案名稱 [自動]預先設置資訊:要編碼的預先設置 [default]預先設置:計算剩餘時間時發生問題!正在處理 %(job_count)d 項工作...佇列條目 %(infile)s -> %(preset)s -> %(outfile)s搜尋光學媒體並捕捉裝置選取字幕顯示關於可用裝置的資訊 [false]顯示關於輸入檔的資訊並離開在轉碼期間顯示即時預覽顯示冗長(除錯)輸出簡潔使用者介面來源屬性來源:正在開始傳遞 %(pass)d,共 %(total)d要繪製的字幕檔要繪製的字幕:擷取與安裝 %(location)s 時發生錯誤:%(error)s轉碼佇列: 無法建構導管! 未知不明的 V4L 版本 %(version)s!不明的圖示 URI %(uri)s版本:視訊:您只能傳遞一個檔名給 --source-info 參數!編輯(_E)檔案(_F)幫助(_H)檢視(_V)預設arista-0.9.7/locale/ru/0000755000175000017500000000000011577653227014244 5ustar dandan00000000000000arista-0.9.7/locale/ru/LC_MESSAGES/0000755000175000017500000000000011577653227016031 5ustar dandan00000000000000arista-0.9.7/locale/ru/LC_MESSAGES/arista.mo0000644000175000017500000003111711577650642017652 0ustar dandan00000000000000L|H <I > 7     ) 'C *k      .  - @ R e | n u q y (  5#K oNz(&4,a)h   .3$L1q9. %, KV$n$'$,48+='i7 . #;_ ery)+ $)N f r# 3,LT e q0*$ &8#@d|B .GP Xe1lFjHG B M Zhz'*#6Hb6z3$6(Mv!   (Z06 "/ -@ Gn  t 6?!bv!&!f"g")v"!""")"Q#=g###0#I#BD$W$C$#% <%J%+Y%%!%N% &',&9T&L&I& %' 0'>'B'VY'Y'# (.(((=)QD)[))* *1+*8]*)*,*e*S+Wl+-++,6",Y,Bi,<,6,c - -!--7-Z.T\.?.9.!+/#M/q/9/</-/M(0/v0.0040/!1 Q1 _1k1 1S1 1 11 22$2<2 " z;M5Q2^}<1r@`Pp_UYH]!$eaXwZ9gbsRv.?%T\(86D {F~ c tN7*O/fm-j'Kh0n3Jyio+V=l#C:E S[qBd4>xuAWIG)&,Lk| %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]0.9.7DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Audio codec:Author name:Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Channels:Choose Directory...Choose File...Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Container:Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCopyright 2008 - 2011 Daniel G. TaylorCouldn't import udev- or HAL-based device discovery!CreateDaniel G. Taylor Delete presetDescription:Destination:Device not found!Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!ExportExport of '%(name)s' complete.Extension:Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralHeight:ID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]PreferencesPreset info:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSearch:Select SubtitlesShort name:Show _ToolbarShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :Video codec:Width:You may only pass one filename for --source-info!_Edit_File_Help_ViewcanceleddefaultfinishedProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2011-06-17 08:10+0000 Last-Translator: Alexandr Bogovik Language-Team: Russian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d каналов(s) : %(rate)dГц @ %(depth)dбит (int) %(channels)d каналов(s) : %(rate)dГц @ %(width)dбит (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d кадров/сек Звук: Кодек: Видео:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]0.9.7ДеинтерлейсингПредварительный просмотрИсточникиСубтитрыМультимедиа-конвертер для GNOMEДополнительная информация :Параметры AristaArista TranscoderПерекодировщик Arista Arista Transcoder GUI Домашняя страница AristaArista выпущена под лицензией GNU LGPL 2.1. Дополнительная информация: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista переведена с помощью launchpad.net. Дополнительная информация: https://translations.launchpad.net/arista/trunk/+pots/aristaЗвук:Аудиокодек:Автор:Автор:Доступные устройства:Не удалось найти %(path)s в любом известном префиксе!Не получается узнать позицию!Каналы:Выберите каталог...Выберите файл...Выберите исходную папку...Выберите исходный файл...Выполняется очистка и запись буферов...Контейнер:Не удалось преобразовать %(filename)s для %(device)s %(preset)s! Причина: %(reason)sПреобразовать для устройстваПреобразовать источник используя профиль устройстваCopyright 2008 - 2011 Daniel G. TaylorНе удалось использовать поиск устройств через udev или HAL!СоздатьDaniel G. Taylor Удалить настройкуОписание:Сохранить в:Устройство не найдено!Профиль устройства %(name)s успешно установлен.Устройство для кодирования [computer]Обнаружение %(filename)sПолучение данных о файле...Не показывать статус и оставшееся времяКодирование %(filename)s для %(device)s (%(preset)s)Ошибка при кодировании %(filename)s для %(device)s (%(preset)s)!Кодирование... %(percent)i%% (осталось %(time)s)Ошибка ввода!Ошибка!ЭкспортЭкспорт '%(name)s' завершён.Расширение:Извлечение %(filename)sБудет использован поиск устройств через HALПолучение %(location)sШрифт для рендеринга:Шрифт для рендеринга субтитровПринудительный деинтерлейсинг источникаНайдена позиция в очереди! Очередь %(queue)sОбщиеВысота:ID:ПростаиваетИсточник %(infile)s не содержит корректных потоков!Установить скачанный файл с профилем устройстваУспешная установкаПроизошло прерывание. Выполняется очистка... (нажмите Ctrl-C для принудительного выхода)Задача выполненаДлительность: Частота кадров при предпросмотреЗагружено устройство %(device)s (%(presets)d профилей)Обнаружено слишком длинное название файла %(filename)sПроизводитель:MIME-тип : Модель:Нет запрашиваемого канала!Не определены профили для %(name)sНе найден заголовок DVD!Неопознанный медиафайл!Не является допустимым целочисленным или дробью: %(value)s!Не подключен.Другой неподдерживаемый мультимедийный поток :Имя выводимого файла [auto]ПараметрыДанные профиля:Профиль для кодирования [default]Профили:Ошибка расчёта оставшегося времени!Обрабатывается %(job_count)d заданий...Очередь %(infile)s -> %(preset)s -> %(outfile)sИскать оптические носители и устройства видеозахватаПоиск:Выберите субтитрыКраткое имя:Показать панель _инструментовПоказать информацию о доступных устройствах [false]Показать информацию об исходном файле и выйтиПредпросмотр во время кодированияПоказать полные данные отладкиПростой интерфейсСвойства источникаИсточник:Начинается проход %(pass)d из %(total)dФайл с субтитрами для рендерингаСубтитры для рендеринга:Ошибка получения и установки %(location)s: %(error)sОчередь конвертирования: Невозможно создать pipeline! НеизвестныйНеизвестная версия V4L %(version)s!Неизвестный URI значка %(uri)sВерсия:Видео:Видеокодек:Ширина:Вы можете создать только одно имя для --source-info!_Правка_Файл_Справка_Видотмененопо умолчаниюзавершеноarista-0.9.7/locale/hu/0000755000175000017500000000000011577653227014232 5ustar dandan00000000000000arista-0.9.7/locale/hu/LC_MESSAGES/0000755000175000017500000000000011577653227016017 5ustar dandan00000000000000arista-0.9.7/locale/hu/LC_MESSAGES/arista.mo0000644000175000017500000001113211577650633017633 0ustar dandan00000000000000;O< >F7&.7fnu6) .K]dz$7    + B O X *i $       . 6 ? G M S Y _ g < =6 7t         6, c {    yK)  65@v(2  I js*?;1/m  $29AI6! & /#*9+1:$. 8302)"(' 7-;,5 %4  %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)sLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Choose Source File...Daniel G. Taylor Description:Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Fetching %(location)sFont to render:Font to use when rendering subtitlesGeneralID:IdleInterrupt caught. Cleaning up... (Ctrl-C to force exit)Length : Mime Type : Model:Not a valid integer or fraction: %(value)s!Not mounted.Presets:Select SubtitlesShow information about input file and exitShow live preview during transcodingShow verbose (debug) outputSource PropertiesSource:Subtitle file to renderSubtitles to render:Transcode queue: UnknownVersion:Video :_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-06-22 14:40+0000 Last-Translator: johnny Language-Team: Hungarian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d csatorna : %(rate)dHz @ %(depth)dbits (egész) %(channels)d csatorna : %(rate)dHz @ %(width)dbits (lebegő) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Kodek : Video:%(min)d:%(sec)02d%(name)s: %(description)sÉlő előnézetForrásokFeliratokMultimédia átalakító a GNOME asztali környezethezTovábbi információk:Arista beállításaiArista TranscoderArista Transcoder Az Arista weboldalaAz Arista a GNU LGPL 2.1. hatálya alá tartozik. További információ: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlAz Arista a launchpad.net segítségével lett lefordítva. https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Szerző:Elérhető eszközök:Forrásfájl kiválasztása...Daniel G. Taylor Leírás:Kódolás... %(percent)i%% (%(time)s van még hátra)Hiba a bemenetenHiba!Olvasás a következőből: %(location)sRenderelendő betűtípus:A feliratok rendereléséhez használt betűtípusÁltalánosID:ÜresjáratMegszakítás érkezett. Takarítás... (Ctrl-C az azonnali kilépéshez)Hossz : Mime típus : Modell:Érvénytelen egész vagy tört: %(value)sNincs csatlakoztatvaBeállítások:FElirat kiválasztásaInformáció megjelenítése a bemeneti fájlról és kilépésFolyamatos előnézet megjelenítése átalakítás közbenBővebb (hibakeresési) kimenet megjelenítéseForrás beállításaiForrás:A renderelendő feliratfájlRenderelendő feliratok:Átalakítási sor: IsmeretlenVerzió:Video :S_zerkesztés_Fájl_Súgó_Nézetalapértelmezésarista-0.9.7/locale/da/0000755000175000017500000000000011577653227014202 5ustar dandan00000000000000arista-0.9.7/locale/da/LC_MESSAGES/0000755000175000017500000000000011577653227015767 5ustar dandan00000000000000arista-0.9.7/locale/da/LC_MESSAGES/arista.mo0000644000175000017500000002214611577650627017615 0ustar dandan00000000000000nP <Q > 7     1 'K *s     .  / B T g ~ n u s {  (    # N* y ( 4 ) .!Po$19.2asz$$' HPT+Y'7 .(#W{ )+  8$Ej # 3,/\0m*$ &#.RjB 5>1Fx~;S=7 /'I*q .=MaiurR Xd/{!Oc=w;) 1()Z!0>+Fr'+"#?clp8x/B ; G!R3t)  !9 L k 0  ,   !,,!Y!&m!!!/!-!"0'"%X" ~"""""'" #'#TE######$ $/$ A$K$P$X$]$aTS3mWM C] 9I@Qn#XPFDh\GE$1_B4 2!jf?8& +' [Y"OdZH ;.=kJ(l)cL`K6*7/be<g-0:%A,R^U5iNV> %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCouldn't import udev- or HAL-based device discovery!Daniel G. Taylor Description:Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :You may only pass one filename for --source-info!_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-12-22 13:27+0000 Last-Translator: Nicholas Christian Langkjær Ipsen Language-Team: Danish MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d kanaler(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d kanaler(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Lyd: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewKilderUnderteksterEn multimedia omkoder til GNOMEMere information:Arista IndstillingerArista OmkoderArista Omkoder Arista Omkoder GUI Arista's HjemmesideArista er udgivet under GNU LGPL 2.1 Se venligst: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista er oversat gennem launchpad.net. Se venligst: https://translations.launchpad.net/arista/trunk/+pots/aristaLyd :Ophavsmand:Enheder til rådighed:Kan ikke finde %(path)s i nogen kendt præfiks!Kan ikke forespørge om position!Vælg Kildemappe...Vælg Kildefil...Rydder op og tømmer buffere...Omkodning af %(filename)s til %(device)s %(preset)s fejlede! Årsag: %(reason)sKonverter til enhedKonverter dette medie ved hjælp af en enhedsforudindstillingKunne ikke importere udev- or HAL-baseret enhedsopdagelse!!Daniel G. Taylor Beskrivelse:Enhedsforudindstilling %(name)s blev installeret.Enhed som der skal omkodes til [computer]Opdager %(filename)sOpdager fil information...Vis ikke status og resterende tidOmkoder %(filename)s til %(device)s (%(preset)s)Omkodning af %(filename)s til %(device)s (%(preset)s) fejlede!Omkoder... %(percent)i%% (%(time)s tilbage)Fejl med input!Fejl!Udpakker %(filename)sFalder tilbage til HAL enheds opdagelseHenter %(location)sSkrifttype som skal bruges:Skrifttype som skal bruges til underteksterTving deinterlacing af kildeFandt fil i kø! Køen er %(queue)sGenereltID:InaktivInput %(infile)s indeholder ingen brugbare datastrømme!Installer en hentet enhedsforudindstillings filInstallation VellykketInterrupt modtaget. Rydder op... (Ctrl+C for at tvinge afslutning)Job udførtLængde : Live preview billeder per sekund:Har indlæst enhed %(device)s (%(presets)d presets)Den længste fundne title er %(filename)sFabrikat:Mime Type : Model:Ingen pipeline til forespørgsel!Ingen forudindstillinger er blevet defineret for %(name)sIngen gyldig DVD title fundet!Ikke en genkendt mediefil!Ikke en valid integer eller fraktion: %(value)s!Ikke monteret.Anden ikke-understøttet multimedie strøm :Navn på outputfil [auto]Forudindstillings information:Forudindstillet til at indkode til [default]Forudindstillinger:Problem med at beregne resterende tid!Forarbejder %(job_count)d jobs...Kø fil %(infile)s -> %(preset)s -> %(outfile)sSøg efter optiske medier og optagelsesudstyrVælg UnderteksterVis information om tilgængelige enheder [false]Vis information om inputfil og afslutVis live preview under omkodningVis detaljeret (debug) outputEnkel UIKilde IndstillingerKilde:Begynder på pass %(pass)d af %(total)dUndertekstfil som skal brugesUndertekster som skal bruges:Der var opstod en fejl under hentningen og installationen af %(location)s: %(error)sKonverter kø: Kan ikke konstruere pipeline! UkendtUkendt V4L %(version)s!Ukendt ikon URI %(uri)sVersion:Video :Du må kun angive et filnavn for --source-info!_Redigér_Fil_Hjælp_Visstandardarista-0.9.7/locale/bg/0000755000175000017500000000000011577653227014206 5ustar dandan00000000000000arista-0.9.7/locale/bg/LC_MESSAGES/0000755000175000017500000000000011577653227015773 5ustar dandan00000000000000arista-0.9.7/locale/bg/LC_MESSAGES/arista.mo0000644000175000017500000002276611577650640017624 0ustar dandan00000000000000_ 7 AIR[m'.' @ S e x  n u      # N K (^ ) .   $ 1D 9v .    $ 5 K $[  '    + '+7C{ . ) 6$Ch # 3,<0M*~$ #2JB_  R  + 8FX>rT/q*+$P v $1*BwR2v)t[$ ?1Oq?VHX $O&@!g>EQ`ioVS*1y\& =M\  7-, CH < (  P!5R!F!_! /"aP"R"S#3Y##(##:#(!$)J$xt$#$7%7I% % %% % % %% ,R@F6 #!.L%>2=ZJW_9+4EV /Y N;A)?\G '1:&T ]SI[DQ5<HPKOB-U3X7$8C(^*M"0 %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetDaniel G. Taylor Description:Device preset %(name)s successfully installed.Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Make:Mime Type : Model:No presets have been defined for %(name)sNot a recognized media file!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-10-09 18:14+0000 Last-Translator: Svetoslav Stefanov Language-Team: Bulgarian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d кадри за секунда Звук: Кодек: Видео:%(min)d:%(sec)02d%(name)s: %(description)s%prog [параметри] [файл1 файл2 файл3 ...]РазплиганеЖив прегледИзточнициСубтитриМултимедиен транскодер за работната среда GNOMEДопълнителна информация :Настройки на AristaТранскодер AristaТранскодер Arista ГПИ на транскодера Arista Домашна страница на AristaArista се издава под лиценза GNU LGPL 2.1. Моля погледнете: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista се превежда чрез launchpad.net. Моля погледнете: https://translations.launchpad.net/arista/trunk/+pots/aristaЗвук :Автор:Налични устройства:Изберете папка - източник...Избор на изходен файл...Почистване и изпразване на буферитеКонвертирането на %(filename)s в %(device)s %(preset)s се провали! Причина: %(reason)sКонвертиране за устройствоКонвертиране на тази медия, с използване на шаблон за устройствоDaniel G. Taylor Описание:Шаблонът за устройство %(name)s е инсталиран успешно.Откриване на %(filename)sОткриване на информация за файла...Да не се показва състояние и оставащо времеКодиране на %(filename)s за %(device)s (%(preset)s)Козирането на %(filename)s в %(device)s (%(preset)s) се провали!Кодиране... %(percent)i%% (оставащо време %(time)s)Грешка с входа!Грешка!Извличане на %(filename)sВръщане към откриване на устройство чрез HALПолучаване на %(location)sФонт за показване:Шрифт за субтитрите при показванеЗадължително разплитане на източникаОткрит е елемент в опашката! Опашката е %(queue)sОбщиИД:БездействиеВходният файл %(infile)s не съдържа валидни потоци!Инсталиране на изтеглен шаблон за устройствоИнсталацията е успешнаПодадено е прекъсване. Почистване... (Ctrl-C за принудително излизане)Задачата е изпълненаПродължителност: Кадрова честота на живия преглед:Заредено устройство %(device)s (%(presets)d шаблона)Make:Тип : Модел:Не са зададени шаблони за %(name)sНеразпознат медиен файл!Не е монтирано.Друг неподдържан мултимедиен поток :Име на изходен файл [автоматично]Информация за шаблонаШаблониПроблем с пресмятането на оставащото време!Обработка на %(job_count)d задачи...Запис в опашката %(infile)s -> %(preset)s -> %(outfile)sТърсене за оптична медия и устройства за прихващанеИзбор на субтитриПоказване на информация за наличните устройства [false]Показване информация за входния файл и изходПоказване на жив преглед по време на кодиранеПоказване на подробен изходПрост интерфейсСвойства на източникаИзточник:Стартиране на етап %(pass)d от %(total)dСубтитри за показванеСубтитри за показване:Възникна грешка при получаването и инсталирането на %(location)s: %(error)sОпашка за кодиране Неизвестна версия на V4L %(version)s!Неизвестен адрес на икона %(uri)sВерсия:Видео :_Редактиране_Файл_Помощ_Изгледпо подразбиранеarista-0.9.7/locale/sv/0000755000175000017500000000000011577653227014246 5ustar dandan00000000000000arista-0.9.7/locale/sv/LC_MESSAGES/0000755000175000017500000000000011577653227016033 5ustar dandan00000000000000arista-0.9.7/locale/sv/LC_MESSAGES/arista.mo0000644000175000017500000001434311577650635017660 0ustar dandan00000000000000Pk<>7E}'. Oh{nu      N 8 (K )t   $ 1 9: .t     $    ' F ^ g .q #      " @ I ,j  *   # 3HZy =g?<")2;M$g- $5Gj]k4 ;G^t[,)% O\x&/A,+X]u2') =2H-{    3<+\+"6O#_ 28+6B"C'$IN5PMD?; AJO=,3F0 ! H*<L/.G %K -4#)7(&9:E>@1 %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]DeinterlacingSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Choose Source Directory...Choose Source File...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetDaniel G. Taylor Description:Device to encode to [computer]Discovering %(filename)sDon't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error!Extracting %(filename)sFetching %(location)sFont to render:Font to use when rendering subtitlesGeneralID:IdleInstall a downloaded device preset fileInstallation SuccessfulJob doneLength : Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No valid DVD title found!Not a recognized media file!Not mounted.Preset to encode to [default]Presets:Processing %(job_count)d jobs...Search for optical media and capture devicesSelect SubtitlesShow information about input file and exitSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:Transcode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Version:Video :_Edit_File_Help_ViewdefaultProject-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2011-01-12 22:09+0000 Last-Translator: Daniel Nylander Language-Team: LANGUAGE MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d kanal(er) : %(rate)d Hz @ %(depth)d bitar (int) %(channels)d kanal(er) : %(rate)d Hz @ %(width)d bitar (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d bilder/s Ljud: Kodek : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [flaggor] [fil1 fil2 fil3 ...]AvflätningKällorUndertexterEn multimediaomkodare för GNOME-skrivbordet.Ytterligare information :Inställningar för AristaOmkodaren AristaOmkodaren Arista Webbplats för AristaArista ges ut under licensen GNU LGPL 2.1. Besök: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista översätts via launchpad.net. Besök: https://translations.launchpad.net/arista/trunk/+pots/aristaLjud :Upphovsman:Tillgängliga enheter:Välj källkatalog...Välj källfil...Konvertering av %(filename)s till %(device)s %(preset)s misslyckades! Anledning: %(reason)sKonvertera för enhetKonvertera detta media med ett enhetsförvalDaniel G. Taylor Beskrivning:Enhet att koda till [dator]Identifierar %(filename)sVisa inte status och återstående tidKodar %(filename)s för %(device)s (%(preset)s)Kodningen %(filename)s för %(device)s (%(preset)s) misslyckades!Kodar... %(percent)i%% (%(time)s återstår)Fel!Extraherar %(filename)sHämtar %(location)sTypsnitt att rendera:Typsnitt att använda vid rendering av undertexterAllmäntID:OverksamInstallera en hämtad enhetsförvalsfilInstallationen lyckadesJobbet är färdigtSpeltid : Läste in enheten %(device)s (%(presets)d förval)Längsta titeln som hittades är %(filename)sTillverkare:Mime-typ : Modell:Ingen giltig dvd-titel hittades!Inte en känd mediafil!Inte monterad.Förval att koda till [standard]Förval:Behandlar %(job_count)d jobb...Sök efter optiska media och fångstenheterVälj undertexterVisa information om indatafilen och avslutaEnkelt användargränssnittKällegenskaperKälla:Startar pass %(pass)d av %(total)dUndertextfil att renderaUndertexter att rendera:Omkodningskö: Kunde inte konstruera rörledning! OkändOkänd V4L-version %(version)s!Version:Video :R_edigera_Arkiv_Hjälp_Visastandardarista-0.9.7/locale/kn/0000755000175000017500000000000011577653227014226 5ustar dandan00000000000000arista-0.9.7/locale/kn/LC_MESSAGES/0000755000175000017500000000000011577653227016013 5ustar dandan00000000000000arista-0.9.7/locale/kn/LC_MESSAGES/arista.mo0000644000175000017500000000174711577650627017645 0ustar dandan00000000000000\ '/5&@)Z< Live PreviewSourcesArista PreferencesArista homepageLive preview framerate:Source:_EditProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-01-05 17:54+0000 Last-Translator: Chandan (ಚಂದನ್) Language-Team: Kannada MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) ನೇರ ಮುನ್ನೋಟಮೂಲಗಳುಅರಿಸ್ಟಾದ ಪ್ರಾಶಸ್ತ್ಯಗಳುಅರಿಸ್ಟಾ ಮುಖಪುಟನೇರ ಮುನ್ನೋಟದ ಫ್ರೇಮ್ ದರಮೂಲ:ಸಂಪಾದನೆ (_E)arista-0.9.7/locale/ro/0000755000175000017500000000000011577653227014236 5ustar dandan00000000000000arista-0.9.7/locale/ro/LC_MESSAGES/0000755000175000017500000000000011577653227016023 5ustar dandan00000000000000arista-0.9.7/locale/ro/LC_MESSAGES/arista.mo0000644000175000017500000000553611577650634017653 0ustar dandan00000000000000$<5\01ET.enuK) $19=BI,R$ "(0! 5;N`s     )    ( / 1@ r :  '   & . 7 @ H U  "  !#$ Live PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Arista PreferencesArista TranscoderArista Transcoder Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Choose Source File...Daniel G. Taylor Description:GeneralID:IdleModel:Presets:Search for optical media and capture devicesSelect SubtitlesShow live preview during transcodingSource:UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-04-20 01:24+0000 Last-Translator: dinamic Language-Team: Romanian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) Previzualizare instantaneeSurse SubtitrăriTranscoder multumedia pentru spaţiul de lucru GNOME.Preferinţe AristaArista TranscoderArista Transcoder Pagina de start AristaArista este distribuit sub licenţă GNU LGPL 2.1 Vă rugăm să consultaţi: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista este tradus prin launchpad.net. Vă rugăm să consultaţi: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Autor:Dispozitive disponibile:Alege Fişierul Sursă...Daniel G. Taylor Descriere:GeneraleIdentificator:InactivModel:Preconfigurări:Caută medii optice şi de dispozitive de captareSelectează subtitrăriArată previzualizarea instantanee în timpul transcodăriSursă:NecunoscutVersiunea V4L necunoscută %(version)s!Icon necunoscut URI %(uri)sVersiune:Video :_Editare_Fișier_Ajutor_Vizualizareimplicitarista-0.9.7/locale/jv/0000755000175000017500000000000011577653227014235 5ustar dandan00000000000000arista-0.9.7/locale/jv/LC_MESSAGES/0000755000175000017500000000000011577653227016022 5ustar dandan00000000000000arista-0.9.7/locale/jv/LC_MESSAGES/arista.mo0000644000175000017500000002233511577650633017645 0ustar dandan00000000000000nP <Q > 7     1 'K *s     .  / B T g ~ n u s {  (    # N* y ( 4 ) .!Po$19.2asz$$' HPT+Y'7 .(#W{ )+  8$Ej # 3,/\0m*$ &#.RjB 5>1Fx~</>l7'**R}4 0BUlt}v~3  "PC?8)& P2[&&1<B. (&.;j3+<94L  3* # 1 8 -T  & (  ( '!C!#Y!}!"!!3!2"6"8E"3~"1"!" ##&#$.#S#o#B##(# $"$=$[$b$Bj$$$$$ $aTS3mWM C] 9I@Qn#XPFDh\GE$1_B4 2!jf?8& +' [Y"OdZH ;.=kJ(l)cL`K6*7/be<g-0:%A,R^U5iNV> %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCouldn't import udev- or HAL-based device discovery!Daniel G. Taylor Description:Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :You may only pass one filename for --source-info!_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2011-05-25 22:00+0000 Last-Translator: zaenalarifin Language-Team: Javanese MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Suworo: Kodek : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]NgejalinPratampil langsungSumber-sumbereTeks-terjemahanSakwijine multimedia transcoder kanggo destop GNOME.Tambahan informasi :Arista PreferensiArista TranscoderArista Transcoder Arista Lintaskode GUI Pekarangan omah AristaArista yoiku dirilis ninggon GNU LGPL 2.1. Sumonggo deloken: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista yoiku diterjemahno lewat launchpad.net. Sumonggo ndelok: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Disediakno prangkat-prangkat:Rakiso ngGoleki %(path)s ning sakwiji known prefix!Rakiso query posisi!Mileh Sumber Folder-tujuan...Mileh Sumber Brekas...Ngresiki lan flushing buffers...Konversi seko %(filename)s ring %(device)s %(preset)s failed! Reason: %(reason)sKonversi kanggo prangkatKonversi media iki ngGunakno sakwijine prangkat sing ditampilkeRakiso ngimpor udev- utowo HAL-based prangkat discovery!Daniel G. Taylor Gambarane:Prangkat sing ditampilno %(name)s sukses kepasang.Prangkat kanggo encode ning [computer]Discovering %(filename)sDiscovering brekas info...Ojo tampilno statuse lan wektu mundureEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s kanggo %(device)s (%(preset)s) keliru!Encoding... %(percent)i%% (%(time)s remaining)Kekeliruan karo inpute!Kekhilafan!ngEkstrak %(filename)sFalling back ning HAL prangkat discoveryMbatak %(location)sHuruf kanggo render:Huruf sing digunakno naliko rendering subtitelKekuatan ngejalin seko sumbereDitemukno bekakas ning queue! Queue yoiku %(queue)sLazimID:NganggurInput %(infile)s ngemomot rakvalid streams!Install sakwijine downloatan prangkat sing ditampilno brekasPemasangane SuksesInterrupt caught. Ngresiki... (Ctrl-C to force exit)Kerjaan rampungDowone : Bingkai-rate pratampil langsung:Ngemomote prangkat %(device)s (%(presets)d presets)Longest title ditemukno yoiku %(filename)sngGawe:Mime Jenis : Model:Ogak pipeline kanggo query!Ora presets diduweni definisine seko %(name)sOra sah DVD titel ditemukno!Ora sakwijine recognized media brekas!Ora sah integer utowo fraksi: %(value)s!Ora dirangkul.Liyane non-pendukung Multimedia stream :Metunane nami brekas [auto]Info sing ditampilke:Preset kanggo encode ning [default]Prangkat-tujuan:Masalah kalkulasi wektu mundurane!Prosese %(job_count)d jobs...Antri entry %(infile)s -> %(preset)s -> %(outfile)sNgGoleki kanggo media optike lan nyekhel prangkateMileh SubtitelTampilno informasi sekitare disediakno prangkate [false]Tampilno informasi sekitare mlebune brekas lan metuNampilno pratampil langsung pas wektu transcodingTampilno verbose (debug) metunanePraktis UISumbere Sifat-sifateSumber:Ngawiti pass %(pass)d seko %(total)dSubtitle brekas ring renderTeks-terjemahan kanggo render:There was an error fetching and installing %(location)s: %(error)sTranscode antrian: Rak dienggo kanggo konstruksi pipeline! RakdireteniRakdireteni V4L versi %(version)s!Rak direteni ikon URI %(uri)sVersi:Video :Kowe mungkin mung ngelewati siji nami-brekas kanggo --sumber-info!_ngGubah_Brekas_Nulungi_Ndhelokgawan-aslinearista-0.9.7/locale/th/0000755000175000017500000000000011577653227014231 5ustar dandan00000000000000arista-0.9.7/locale/th/LC_MESSAGES/0000755000175000017500000000000011577653227016016 5ustar dandan00000000000000arista-0.9.7/locale/th/LC_MESSAGES/arista.mo0000644000175000017500000000711311577650624017636 0ustar dandan00000000000000$<5\019BVevnu4) (5E]n  $*22RFrGc e t  1 N ? )^  @ 9 ' <E  K @ > 9_ 1    $8 ! $ " # Audio: Video:Live PreviewSourcesSubtitlesArista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Choose Source Directory...Choose Source File...Daniel G. Taylor Description:Font to render:Installation SuccessfulSelect SubtitlesSource PropertiesSource:Subtitle file to renderSubtitles to render:Transcode queue: Unknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-06-08 05:37+0000 Last-Translator: SiraNokyoongtong Language-Team: Thai MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) เสียง: วิดีโอ:ตัวอย่างแหล่งคำบรรยายปรับแต่ง AristaArista เครื่องแปลงรหัสข้อมูลArista เครื่องแปลงรหัสข้อมูล Arista เครื่องแปลงรหัสข้อมูล แบบกราฟิก Arista เผยแพร่ภายใต้ GNU LGPL 2.1. โปรดดู: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista ถูกแปลผ่าน launchpad.net โปรดดู: https://translations.launchpad.net/arista/trunk/+pots/aristaเสียง :ผู้แต่ง:อุปกรณ์ที่ใช้ได้:เลือกไดเรกทอรีแหล่งข้อมูล...เลือกแฟ้มแหล่งข้อมูล...Daniel G. Taylor คำอธิบาย:แบบอักษรที่จะเรนเดอร์:การติดตั้งเสร็จสิ้นเลือกคำบรรยายคุณสมบัติแหล่งข้อมูลแหล่ง:แฟ้มคำบรรยายที่จะเรนเดอร์คำบรรยายที่จะเรนเดอร์:คิวการแปลงรหัสข้อมูล: ไม่รู้จัก V4L รุ่น %(version)s!ไม่ทราบ URI ไอคอน %(uri)sรุ่น:วิดีโอ :แ_ก้ไขแ_ฟ้ม_วิธีใช้มุ_มมองปริยายarista-0.9.7/locale/tr/0000755000175000017500000000000011577653227014243 5ustar dandan00000000000000arista-0.9.7/locale/tr/LC_MESSAGES/0000755000175000017500000000000011577653227016030 5ustar dandan00000000000000arista-0.9.7/locale/tr/LC_MESSAGES/arista.mo0000644000175000017500000001531111577650636017652 0ustar dandan00000000000000Uql019B*Kv.,?VnfuK S [ n  #  ) . < U $n 1 9 . . @ G _ u $    + '  7' _ h r .   )   4 $A f ~  3 ,  0*7$b # 7PYagmsy "*0[q9 "#<`t/) D0P*W@:7{7 = J9T.G %%.1T /%-&Tp6* 3+-5Y ( 4%? e    < '&)D!L#H RQC59>"P8=0($/GBK1 *E72.;-F@?JTAIMO:S +46 N%3,U Audio: Codec : Video:%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Convert for deviceDaniel G. Taylor Description:Device preset %(name)s successfully installed.Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFetching %(location)sFont to render:Font to use when rendering subtitlesGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Make:Mime Type : Model:No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Presets:Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:Transcode queue: UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-09-12 06:22+0000 Last-Translator: 58zarali Language-Team: Turkish MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) Ses: Codec : Görüntü:%prog [options] infile [infile infile ...]AyrıştırmakCanlı ÖnizlemeKaynaklarAltyazılarGNOME masaüstü için çoklu ortam dönüştürücüsü.Ek açıklama :Arista TercihleriArista DönüştürücüArista Dönüştürücü Arista Dönüştürücü Arayüzü Arista ana sayfasıArista GNU LGPL 2.1 lisansı ile yayımlanmıştır. Daha fazla bilgi için: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista launchpad.net vasıtası ile tercüme edilmiştir. Daha fazla bilgi için: https://translations.launchpad.net/arista/trunk/+pots/aristaSes :Yazar:Uygun aygıtlarKaynak Dizin Seçiniz...Kaynak Dosya SeçGereksiz dosyalar ve ara bellek temizleniyor...Aygıt için dönüştürDaniel G. Taylor Açıklama:Aygıt ayarları %(name)s başarıyla yüklendi.%(filename)s inceleniyorDosya bilgileri inceleniyor.Durum ve kalan zaman bilgilerini gösterme%(filename)s dosyası %(device)s için (%(preset)s) önayarı ile dönüştürülüyor.%(device)s (%(preset)s) için kodlama %(filename)s başarısız!Dünüştürülüyor... %(percent)i%% (%(time)s kaldı)Hatalı giriş!Hata!Çıkartılıyor %(filename)sAlınıyor %(location)sİşlenecek yazı tipi:İşlenilecek altyazı çeşidiGenelKimlik (ID):Beklemede%(infile)s girdi dosyası geçerli bir akış içermiyor!İndirilen aygıt ayar dosyalarını yükleyinYükleme BaşarılıDurdurma algılandı. Temizleniyor... (Kapatmaya zorlamak için Ctrl-C)İş tamamSüre : Canlı önizleme resim karesi hızı:Yüklenen aygıt %(device)s (%(presets)d presets)DerleMime tipi : Model:Henüz %(name)s için ayar tanımlanmamıştırGeçerli DVD başlığı bulunamadı!Geçerli ortam dosyası değil!Bağlanmamış.Diğer desteklenmeyen çoklu ortam akışı :Çıkış dosya adı [auto]Önayar bilgisiAyarlar:Kuyruk girişi %(infile)s -> %(preset)s -> %(outfile)sOptik medya ve yakalama aygıtlarını araAltyazı SeçUygun cihazlar hakkında bilgileri göster. [false]Girdi dosyası bilgilerini göster ve çıkDönüştürme sırasında canlı önizlemeyi gösterBasit ArayüzKaynak ÖzellikleriKaynak:Geçiş başlıyor %(pass)d of %(total)dİşlenilecek altyazı dosyasıİşlenilecek altyazı:Dönüştürme kuyruğu: BilinmeyenBilinmeyen V4L sürümü %(version)s!Tanımlanamayan ikon URI %(uri)sSürüm:Video :_Düzenle_Dosya_Yardım_Görünümvarsayılanarista-0.9.7/locale/it/0000755000175000017500000000000011577653227014232 5ustar dandan00000000000000arista-0.9.7/locale/it/LC_MESSAGES/0000755000175000017500000000000011577653227016017 5ustar dandan00000000000000arista-0.9.7/locale/it/LC_MESSAGES/arista.mo0000644000175000017500000002233411577650645017644 0ustar dandan00000000000000nP <Q > 7     1 'K *s     .  / B T g ~ n u s {  (    # N* y ( 4 ) .!Po$19.2asz$$' HPT+Y'7 .(#W{ )+  8$Ej # 3,/\0m*$ &#.RjB 5>1Fx~:(<c7'*Fq'-@WmgmCKS;l QoHF) E5R)!*1:G1!,6F%}.:2#%V/| *4$( M X e n 0 !  # !(!!J!b!#{!!)!&!,!6%"\"7r"0")"# #(# <#"F##i##:## # $%%$K$ i$s$-{$ $ $$ $ $aTS3mWM C] 9I@Qn#XPFDh\GE$1_B4 2!jf?8& +' [Y"OdZH ;.=kJ(l)cL`K6*7/be<g-0:%A,R^U5iNV> %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCouldn't import udev- or HAL-based device discovery!Daniel G. Taylor Description:Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :You may only pass one filename for --source-info!_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2011-05-18 19:11+0000 Last-Translator: emaTux Language-Team: Italian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d canale(i) : %(rate)dHz @ %(depth)dbits (int) %(channels)d canale(i) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [opzione] [file1 file2 file3 ...]%prog [opzione] infile [infile infile ...]DeinterlacciamentoAnteprima LiveSorgentiSottotitoliUn codificatore multimediale per GNOME.Informazioni aggiuntiveImpostazioni di AristaArista TranscoderArista Transcoder Arista Transcoder GUI Homepage AristaArista è distribuito con licenza GNU LGPL 2.1. Vedi: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista è tradotto tramite launchpad.net. Vedi: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Autore:Dispositivi disponibili:Impossibile trovare %(path)s in nessun percorso conosciuto!Impossibile trovare posizione!Scegli la Cartella d'origineScegli File Sorgente...Pulizia e svuotamento buffers...Conversione di %(filename)s per %(device)s %(preset)s fallito! Motivo: %(reason)sConverti per il dispositivoConverti questo file usando delle impostazioni (preset) del dispositivo.Impossibile importare udev- o HAL- come servizio scoperta dispositivi!Daniel G. Taylor Descrizione:Preset Dispositivo %(name)s installato correttamente.Dispositivo per la codifica di [computer]Apertura %(filename)sRecupero informazioni sul file...Non mostrare lo stato e il tempo rimanenteCodifica %(filename)s per %(device)s (%(preset)s)Codifica %(filename)s per %(device)s (%(preset)s) fallito!Conversione... %(percent)i%% (%(time)s rimanente)Errore con il file di ingresso!Errore!Estrazione %(filename)salla scoperta HAL del dispositivoRecupero %(location)sCarattere da renderizzareCarattere da utilizzare per renderizzare i sottotitoliForza deinterlacciamento del sorgenteTrovato elemento in coda! La coda è %(queue)sGeneraleID:InattivoIl file in ingresso %(infile)s non contiene tracce valide!Installa un nuovo dispositivo da un file scaricatoInstallazione Completata con successoInterruzione. Pulizia... (Ctrl-C to force exit)compito terminatoDurata : Fotogrammi al secondo per l'anteprima liveCaricato dispositivo %(device)s (%(presets)d preset)Titolo lungo trovato in %(filename)sCreazione:Tipo file : Modello:Nessuna pipeline!Nessuna impostazione(preset) scelta per %(name)sNessun titolo DVD valido trovato!Non è un file riconosciuto!Non è un numero valido: %(value)s!Non montato.Altro stream multimediale non supportatoNome file Output [auto]Informazioni sul preset:Preset per la codifica di [default]Preset:Poblema nel calcolare il tempo rimanente!Elaborazione %(job_count)d processo...Coda %(infile)s -> %(preset)s -> %(outfile)sCerca dispositivi ottici e periferiche di acquisizioneSeleziona SottotitoliMostra informazioni sui dispositivi disponibili [false]Mostra informazioni sul file di ingresso ed esciMostra anteprima live durante la codificaMostra output di debugUI SempliceProprietà SorgenteSorgente:Inizio passo %(pass)d di %(total)dFile di sottotitoli da renderizzareSottotitoli da renderizzare:Errore nel recuperare e installare %(location)s: %(error)sCoda di codifica: Impossibile costruire pipeline! SconosciutoVersione V4L %(version)s sconosciuta!URI icona sconosciuto %(uri)sVersione:Video :Puoi inserire solo un nome per --source-info!_Modifica_Archivio_Aiuto_Visualizzapredefinitoarista-0.9.7/locale/templates/0000755000175000017500000000000011577653227015614 5ustar dandan00000000000000arista-0.9.7/locale/templates/arista.pot0000644000175000017500000003334411577650624017630 0ustar dandan00000000000000#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-06-15 20:24-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2011-06-20 13:56+0000\n" "X-Generator: Launchpad (build 13242)\n" "Language: \n" #: ui/about.ui:11 msgid "Copyright 2008 - 2011 Daniel G. Taylor" msgstr "" #: ui/about.ui:12 msgid "A multimedia transcoder for the GNOME desktop." msgstr "" #: ui/about.ui:14 msgid "Arista homepage" msgstr "" #: ui/about.ui:15 msgid "" "Arista is released under the GNU LGPL 2.1.\n" "Please see:\n" "\n" "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html" msgstr "" #: ui/about.ui:20 msgid "" "Arista is translated through launchpad.net. Please see:\n" "\n" "https://translations.launchpad.net/arista/trunk/+pots/arista" msgstr "" #: ui/add.ui:10 ui/main.ui:216 msgid "Create Conversion" msgstr "" #: ui/add.ui:36 msgid "Source:" msgstr "" #: ui/add.ui:48 msgid "Destination:" msgstr "" #: ui/add.ui:62 msgid "Search:" msgstr "" #: ui/add.ui:95 msgid "Select A Destination..." msgstr "" #: ui/add.ui:152 msgid "Add a new preset" msgstr "" #: ui/add.ui:174 msgid "Delete preset" msgstr "" #: ui/add.ui:214 msgid "Create" msgstr "" #: ui/add.ui:252 msgid "View or edit preset" msgstr "" #: ui/codec.ui:10 msgid "Codec Help" msgstr "" #: ui/main.ui:25 msgid "Arista Transcoder" msgstr "" #: ui/main.ui:44 msgid "_File" msgstr "" #: ui/main.ui:66 msgid "_Get New Presets..." msgstr "" #: ui/main.ui:78 msgid "_Install Device Preset..." msgstr "" #: ui/main.ui:117 msgid "_Edit" msgstr "" #: ui/main.ui:146 msgid "_View" msgstr "" #: ui/main.ui:157 msgid "Show _Toolbar" msgstr "" #: ui/main.ui:173 msgid "_Help" msgstr "" #: ui/main.ui:213 msgid "Add a file to be transcoded" msgstr "" #: ui/main.ui:229 msgid "Download new presets from the web" msgstr "" #: ui/main.ui:231 msgid "Get Presets" msgstr "" #: ui/main.ui:245 ui/main.ui:247 msgid "Preferences" msgstr "" #: ui/main.ui:300 msgid "Idle" msgstr "" #: ui/main.ui:360 ui/prefs.ui:189 msgid "Live Preview" msgstr "" #: ui/prefs.ui:14 msgid "Arista Preferences" msgstr "" #: ui/prefs.ui:76 msgid "Search for optical media and capture devices" msgstr "" #: ui/prefs.ui:92 msgid "Sources" msgstr "" #: ui/prefs.ui:123 msgid "Show live preview during transcoding" msgstr "" #: ui/prefs.ui:148 msgid "Live preview framerate:" msgstr "" #: ui/prefs.ui:224 msgid "" "All device presets that ship with Arista Transcoder\n" "can be reset to their original settings. Warning: this\n" "will potentially overwrite user modifications." msgstr "" #: ui/prefs.ui:243 msgid "Reset Presets" msgstr "" #: ui/prefs.ui:272 msgid "Device Preset Reset" msgstr "" #: ui/prefs.ui:289 ui/preset.ui:483 msgid "General" msgstr "" #: ui/preset.ui:78 msgid "Preset Properties" msgstr "" #: ui/preset.ui:146 msgid "Short name:" msgstr "" #: ui/preset.ui:158 arista-transcode:298 msgid "Version:" msgstr "" #: ui/preset.ui:172 msgid "Author email:" msgstr "" #: ui/preset.ui:186 msgid "Author name:" msgstr "" #: ui/preset.ui:200 arista-transcode:295 msgid "Model:" msgstr "" #: ui/preset.ui:214 arista-transcode:294 msgid "Make:" msgstr "" #: ui/preset.ui:228 arista-transcode:296 msgid "Description:" msgstr "" #: ui/preset.ui:242 msgid "Preset name:" msgstr "" #: ui/preset.ui:414 arista-transcode:305 msgid "Container:" msgstr "" #: ui/preset.ui:442 arista-transcode:304 msgid "Extension:" msgstr "" #: ui/preset.ui:503 arista-transcode:306 msgid "Video codec:" msgstr "" #: ui/preset.ui:527 ui/preset.ui:916 msgid "Codec options:" msgstr "" #: ui/preset.ui:594 arista-transcode:307 msgid "Width:" msgstr "" #: ui/preset.ui:631 ui/preset.ui:724 ui/preset.ui:818 ui/preset.ui:1022 msgid "to" msgstr "" #: ui/preset.ui:673 arista-transcode:315 msgid "Framerate:" msgstr "" #: ui/preset.ui:687 arista-transcode:311 msgid "Height:" msgstr "" #: ui/preset.ui:766 msgid "Effect:" msgstr "" #: ui/preset.ui:871 msgid "Video Options" msgstr "" #: ui/preset.ui:892 arista-transcode:319 msgid "Audio codec:" msgstr "" #: ui/preset.ui:983 arista-transcode:320 msgid "Channels:" msgstr "" #: ui/preset.ui:1082 msgid "Audio Options" msgstr "" #: ui/preset.ui:1107 msgid "Export" msgstr "" #: ui/props.ui:8 msgid "Source Properties" msgstr "" #: ui/props.ui:41 msgid "Select Subtitles" msgstr "" #: ui/props.ui:53 msgid "Subtitles to render:" msgstr "" #: ui/props.ui:60 msgid "Font to render:" msgstr "" #: ui/props.ui:88 msgid "Subtitles" msgstr "" #: ui/props.ui:109 msgid "Force deinterlacing of source" msgstr "" #: ui/props.ui:122 msgid "Deinterlacing" msgstr "" #: arista-gtk:134 #, python-format msgid "Unknown icon URI %(uri)s" msgstr "" #: arista-gtk:409 msgid "Cleaning up and flushing buffers..." msgstr "" #: arista-gtk:512 #, python-format msgid "Input %(infile)s contains no valid streams!" msgstr "" #: arista-gtk:526 msgid "Error with input!" msgstr "" #: arista-gtk:589 msgid "Error!" msgstr "" #: arista-gtk:589 #, python-format msgid "" "Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: " "%(reason)s" msgstr "" #: arista-gtk:620 msgid "Job done" msgstr "" #: arista-gtk:620 #, python-format msgid "Conversion of %(filename)s to %(device)s %(preset)s %(action)s" msgstr "" #: arista-gtk:624 msgid "canceled" msgstr "" #: arista-gtk:624 msgid "finished" msgstr "" #: arista-gtk:728 arista-gtk:1266 msgid "Choose Source File..." msgstr "" #: arista-gtk:744 msgid "" "Problem importing preset. This file does not appear to be a valid Arista " "preset!" msgstr "" #: arista-gtk:753 msgid "Installation Successful" msgstr "" #: arista-gtk:753 #, python-format msgid "Device preset %(name)s successfully installed." msgstr "" #: arista-gtk:869 msgid "" "Are you sure you want to reset your device presets? Doing so will " "permanently remove any modifications you have made to presets that ship with " "or share a short name with presets that ship with Arista!" msgstr "" #: arista-gtk:973 msgid "Device Preset" msgstr "" #: arista-gtk:1077 #, python-format msgid "Unknown V4L version %(version)s!" msgstr "" #: arista-gtk:1085 arista-gtk:1101 arista-gtk:1103 arista-gtk:1265 msgid "Choose File..." msgstr "" #: arista-gtk:1090 arista-gtk:1309 msgid "Choose Directory..." msgstr "" #: arista-gtk:1310 msgid "Choose Source Directory..." msgstr "" #: arista-gtk:1407 msgid "Cannot add conversion to queue because of missing elements!" msgstr "" #: arista-gtk:1820 msgid "Saving preset to disk..." msgstr "" #: arista-gtk:1828 #, python-format msgid "" "You are about to export %(count)d presets with the short name " "'%(shortname)s'. If you want to only export %(name)s then please first " "change the short name. Do you want to continue?" msgstr "" #: arista-gtk:1838 msgid "Export Preset" msgstr "" #: arista-gtk:1858 #, python-format msgid "Export of '%(shortname)s' with %(count)d presets complete." msgstr "" #: arista-gtk:1863 #, python-format msgid "Export of '%(name)s' complete." msgstr "" #: arista-gtk:1873 msgid "Choose Preset Icon..." msgstr "" #: arista-gtk:2223 msgid "%prog [options] [file1 file2 file3 ...]" msgstr "" #: arista-gtk:2224 msgid "Arista Transcoder GUI " msgstr "" #: arista-gtk:2228 arista-transcode:203 msgid "Show verbose (debug) output" msgstr "" #: arista-gtk:2230 arista-transcode:190 msgid "Preset to encode to [default]" msgstr "" #: arista-gtk:2232 arista-transcode:192 msgid "Device to encode to [computer]" msgstr "" #: arista-gtk:2234 msgid "Simple UI" msgstr "" #: arista-transcode:82 #, python-format msgid "Encoding... %(percent)i%% (%(time)s remaining)" msgstr "" #: arista-transcode:97 #, python-format msgid "Encoding %(filename)s for %(device)s (%(preset)s)" msgstr "" #: arista-transcode:100 arista-transcode:134 msgid "default" msgstr "" #: arista-transcode:114 #, python-format msgid "Starting pass %(pass)d of %(total)d" msgstr "" #: arista-transcode:131 #, python-format msgid "Encoding %(filename)s for %(device)s (%(preset)s) failed!" msgstr "" #: arista-transcode:166 msgid "Interrupt caught. Cleaning up... (Ctrl-C to force exit)" msgstr "" #: arista-transcode:171 msgid "%prog [options] infile [infile infile ...]" msgstr "" #: arista-transcode:172 msgid "Arista Transcoder " msgstr "" #: arista-transcode:175 msgid "Show information about available devices [false]" msgstr "" #: arista-transcode:178 msgid "Subtitle file to render" msgstr "" #: arista-transcode:181 msgid "Render embedded SSA subtitles" msgstr "" #: arista-transcode:183 msgid "Subtitle file encoding" msgstr "" #: arista-transcode:185 msgid "Font to use when rendering subtitles" msgstr "" #: arista-transcode:187 msgid "" "Amount of pixels to crop before transcoding Specify as: Top Right Bottom " "Left, default: None" msgstr "" #: arista-transcode:194 msgid "Output file name [auto]" msgstr "" #: arista-transcode:197 msgid "Show information about input file and exit" msgstr "" #: arista-transcode:200 msgid "Don't show status and time remaining" msgstr "" #: arista-transcode:206 msgid "Install a downloaded device preset file" msgstr "" #: arista-transcode:209 msgid "Reset presets to factory defaults" msgstr "" #: arista-transcode:247 msgid "Available devices:" msgstr "" #: arista-transcode:255 #, python-format msgid "%(name)s: %(description)s" msgstr "" #: arista-transcode:261 #, python-format msgid "%(spacing)s- %(name)s%(description)s" msgstr "" #: arista-transcode:267 msgid "Use --info device_name preset_name for more information on a preset." msgstr "" #: arista-transcode:273 msgid "Device not found!" msgstr "" #: arista-transcode:283 msgid "Preset not found!" msgstr "" #: arista-transcode:287 msgid "Preset info:" msgstr "" #: arista-transcode:289 msgid "Device info:" msgstr "" #: arista-transcode:293 msgid "ID:" msgstr "" #: arista-transcode:297 msgid "Author:" msgstr "" #: arista-transcode:302 msgid "Presets:" msgstr "" #: arista-transcode:338 msgid "You may only pass one filename for --source-info!" msgstr "" #: arista-transcode:350 msgid "Discovering file info..." msgstr "" #: arista-transcode:359 msgid "Reset complete" msgstr "" #: arista-transcode:377 #, python-format msgid "" "All parameters to --crop/-c must be non negative integers. %i is negative, " "aborting." msgstr "" #: arista-transcode:406 #, python-format msgid "Processing %(job_count)d jobs..." msgstr "" #: arista-nautilus.py:143 msgid "Convert for device" msgstr "" #: arista-nautilus.py:144 msgid "Convert this media using a device preset" msgstr "" #: arista/discoverer.py:229 #, python-format msgid "Discovering %(filename)s" msgstr "" #: arista/discoverer.py:263 msgid "Mime Type :\t" msgstr "" #: arista/discoverer.py:266 msgid "Length :\t" msgstr "" #: arista/discoverer.py:267 msgid "\tAudio:" msgstr "" #: arista/discoverer.py:267 msgid "" "\n" "\tVideo:" msgstr "" #: arista/discoverer.py:269 msgid "Video :" msgstr "" #: arista/discoverer.py:270 #, python-format msgid "\t%(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps" msgstr "" #: arista/discoverer.py:277 arista/discoverer.py:293 msgid "\tCodec :" msgstr "" #: arista/discoverer.py:279 msgid "Audio :" msgstr "" #: arista/discoverer.py:281 #, python-format msgid "\t%(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float)" msgstr "" #: arista/discoverer.py:287 #, python-format msgid "\t%(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int)" msgstr "" #: arista/discoverer.py:296 msgid "Other unsuported Multimedia stream :" msgstr "" #: arista/discoverer.py:298 msgid "Additional information :" msgstr "" #: arista/__init__.py:54 msgid "0.9.7" msgstr "" #: arista/__init__.py:55 msgid "Daniel G. Taylor " msgstr "" #: arista/presets.py:85 #, python-format msgid "Not a valid integer or fraction: %(value)s!" msgstr "" #: arista/presets.py:191 #, python-format msgid "No presets have been defined for %(name)s" msgstr "" #: arista/presets.py:515 #, python-format msgid "Loaded device %(device)s (%(presets)d presets)" msgstr "" #: arista/presets.py:580 #, python-format msgid "Extracting %(filename)s" msgstr "" #: arista/presets.py:603 #, python-format msgid "Fetching %(location)s" msgstr "" #: arista/presets.py:613 #, python-format msgid "There was an error fetching and installing %(location)s: %(error)s" msgstr "" #: arista/queue.py:58 #, python-format msgid "Queue entry %(infile)s -> %(preset)s -> %(outfile)s" msgstr "" #: arista/queue.py:147 msgid "Transcode queue: " msgstr "" #: arista/queue.py:184 #, python-format msgid "Found item in queue! Queue is %(queue)s" msgstr "" #: arista/queue.py:193 msgid "Not a recognized media file!" msgstr "" #: arista/transcoder.py:191 msgid "No valid DVD title found!" msgstr "" #: arista/transcoder.py:196 #, python-format msgid "Longest title found is %(filename)s" msgstr "" #: arista/transcoder.py:624 msgid "Unable to construct pipeline! " msgstr "" #: arista/transcoder.py:716 arista/transcoder.py:727 msgid "Unknown" msgstr "" #: arista/transcoder.py:721 msgid "Can't query position!" msgstr "" #: arista/transcoder.py:723 msgid "No pipeline to query!" msgstr "" #: arista/transcoder.py:742 #, python-format msgid "%(min)d:%(sec)02d" msgstr "" #: arista/transcoder.py:747 msgid "Problem calculating time remaining!" msgstr "" #: arista/utils.py:88 #, python-format msgid "Can't find %(path)s in any known prefix!" msgstr "" #: arista/utils.py:129 #, python-format msgid "Can't find %(path)s that can be written to!" msgstr "" #: arista/inputs/haldisco.py:279 arista/inputs/udevdisco.py:218 msgid "Not mounted." msgstr "" #: arista/inputs/__init__.py:40 msgid "Falling back to HAL device discovery" msgstr "" #: arista/inputs/__init__.py:44 msgid "Couldn't import udev- or HAL-based device discovery!" msgstr "" arista-0.9.7/locale/sr/0000755000175000017500000000000011577653227014242 5ustar dandan00000000000000arista-0.9.7/locale/sr/LC_MESSAGES/0000755000175000017500000000000011577653227016027 5ustar dandan00000000000000arista-0.9.7/locale/sr/LC_MESSAGES/arista.mo0000644000175000017500000002705511577650630017653 0ustar dandan00000000000000nP <Q > 7     1 'K *s     .  / B T g ~ n u s {  (    # N* y ( 4 ) .!Po$19.2asz$$' HPT+Y'7 .(#W{ )+  8$Ej # 3,/\0m*$ &#.RjB 5>1Fx~?vA9 2 ? M[mPX1 Qr?&%!)"K)n,]   h53;3,Bvo*euw8 &f03!<C* Dn ] I![! {!#!J!%!#"UB"4"G" # #&#C6#`z#;#c${$$8$U$F:%%% %A%N%AF&@&M&'E2'1x'7'C'&(UD(.(S(L)!j)c)\)MM*P*>*++ I+5U+9+)++#o,A,,2,8- T- b-lo--- ...aTS3mWM C] 9I@Qn#XPFDh\GE$1_B4 2!jf?8& +' [Y"OdZH ;.=kJ(l)cL`K6*7/be<g-0:%A,R^U5iNV> %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetCouldn't import udev- or HAL-based device discovery!Daniel G. Taylor Description:Device preset %(name)s successfully installed.Device to encode to [computer]Discovering %(filename)sDiscovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFalling back to HAL device discoveryFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulInterrupt caught. Cleaning up... (Ctrl-C to force exit)Job doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Longest title found is %(filename)sMake:Mime Type : Model:No pipeline to query!No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Queue entry %(infile)s -> %(preset)s -> %(outfile)sSearch for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Starting pass %(pass)d of %(total)dSubtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: Unable to construct pipeline! UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :You may only pass one filename for --source-info!_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2011-03-17 11:57+0000 Last-Translator: Мирослав Николић Language-Team: Ubuntu Serbian Translators MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) Language: Serbian (sr) %(channels)d канал(а) : %(rate)dHz @ %(depth)dbits (int) %(channels)d канал(а) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d к/с Аудио: Кодек : Видео:%(min)d:%(sec)02d%(name)s: %(description)s%prog [опције] [датотека1 датотека2 датотека3 ...]%prog [опције] улдатотека [улдатотека улдатотека...]РаспетљавањеПреглед уживоИзвориПреводиГномов мултимедијални транскодер.Додатне информације:Ариста — подешавањаАриста транскодерАриста транскодер Ариста транскодер ГУИ Матична страница АристеАриста је објављен под ГНУ МОЈЛ 2.1. Молим погледајте: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlАриста се преводи на ланчпад.нету. Молим погледајте: https://translations.launchpad.net/arista/trunk/+pots/aristaАудио :Аутор:Доступни уређаји:Не могу да пронађем „%(path)s“ у било ком познатом префиксу!Не могу да испитам позицију!Изаберите директоријум извора...Изаберите датотеку извора...Чистим и испирам бафер...Конверзија „%(filename)s“ у „%(device)s %(preset)s“ није успела! Разлог: %(reason)sКонвертовање за уређајКонвертуј овај медиј користећи претподешавање уређајаНе могу да увезем откривање уређаја засновано на удеву или ХАЛу!Данијел Г. Тејлор Опис:Претподешавање уређаја „%(name)s“ је успешно инсталирано.Уређај за кодирање [рачунар]Налазим „%(filename)s“Налазим информације о датотеци...Не приказује стање и преостало времеКодирам „%(filename)s“ за „%(device)s“ (%(preset)s)Кодирање „%(filename)s“ за „%(device)s“ (%(preset)s) није успело!Кодирам... %(percent)i%% (преостало време: %(time)s)Грешка са улазом!Грешка!Извлачим „%(filename)s“Враћам се назад на ХАЛ откривање уређајаПреузимам „%(location)s“Фонт за исцртавање:Фонт за коришћење приликом исцртавања преводаПрисили распетљавање извораПронашао сам ставку у реду! Ред је %(queue)sОпштеИД:МирoвањеУлаз „%(infile)s“ садржи неисправан ток!Инсталира преузету датотеку претподешавања уређајаИнсталација је успешно обављенаУхваћен је прекид. Чистим... („Ctrl-C“ да присилите излаз)Посао је обављенТрајање: Проток кадрова прегледа уживо:Учитан уређај „%(device)s“ (%(presets)d претподешавања)Најдужи пронађени наслов је „%(filename)s“Произвођач:МИМЕ тип: Модел:Нема процесног ланца за испитивање!Нису дефинисана претподешавања за „%(name)s“Нисам пронашао исправан ДВД наслов!Није препозната медијска датотека!Није исправан цео број или разломак: %(value)s!Није монтиран.Ток осталих неподржаних мултимедија :Име излазне датотеке [ауто]Информације о претподешавању:Претподешавање за кодирање [основно]Претподешавања:Проблем приликом рачунања преосталог времена!Обрађујем %(job_count)d посла...Ставка реда „%(infile)s“ —> „%(preset)s“ —> „%(outfile)s“Тражи оптичке медије и уређаје за снимањеИзаберите преводеПриказује информације о доступним уређајима [нетачно]Приказује информације о улазној датотеци и излазиПрикажи преглед уживо за време конверзијеПриказује опширан излаз (отклањање грешака)Једноставан кориснички интерфејсСвојства извораИзвор:Започињем корак %(pass)d од %(total)dДатотека превода за исцртавањеПреводи за исцртавање:Дошло је до грешке приликом преузимања и инсталирања „%(location)s“: %(error)sРед транскодовања: Не могу да изградим процесни ланац! НепознатоНепознато В4Л издање %(version)s!Непозната адреса иконе „%(uri)s“Издање:Видео :Можете да проследите само једно име датотеке за „--source-info“!Уре_ђивање_ДатотекаПомо_ћПре_гледосновноarista-0.9.7/locale/ja/0000755000175000017500000000000011577653227014210 5ustar dandan00000000000000arista-0.9.7/locale/ja/LC_MESSAGES/0000755000175000017500000000000011577653227015775 5ustar dandan00000000000000arista-0.9.7/locale/ja/LC_MESSAGES/arista.mo0000644000175000017500000001420711577650643017620 0ustar dandan00000000000000JlePQYbk.);NenuuZbj}#N(! )J t .  $ 1 9 .Z      $  # + / +4 '`      , " $3 X t ~        " * 0 6 < B J   "#F] nW| -G'!\Ht)R*B0mPW5G} %% 6',T[ _EiW  '(1 Z!h?<?[k {#*!1B KV g u <!D =H($?FG)& ,A678.@ ; ->3E B0+:I#C25"/%'*491J Audio: Codec : Video:%(name)s: %(description)sDeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert this media using a device presetDaniel G. Taylor Description:Device preset %(name)s successfully installed.Discovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulJob doneLength : Live preview framerate:Model:Not mounted.Preset info:Presets:Search for optical media and capture devicesSelect SubtitlesShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Subtitle file to renderSubtitles to render:Transcode queue: UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-11-17 04:30+0000 Last-Translator: Hiroshi Tagawa Language-Team: Japanese MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) 音声: コーデック : 動画:%(name)s: %(description)sインターレース解除プレビューソース字幕GNOME デスクトップ向けのマルチメディア・トランスコーダです。追加情報 :Arista 設定Arista TranscoderArista Transcoder Arista Transcoder GUI Arista ホームページArista は GNU LGPL 2.1 のもとでリリースされています。 こちらをご覧ください: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista は launchpad.net を通して翻訳されています。こちらをご覧ください: https://translations.launchpad.net/arista/trunk/+pots/arista音声 :作者:利用可能なデバイス:ソースディレクトリを選択...ソースファイルを選択...クリーンナップ中...%(filename)s の %(device)s %(preset)s への変換に失敗しました! 原因: %(reason)sメディアをデバイスプリセットを使用して変換しますDaniel G. Taylor 説明:デバイスプリセット %(name)s のインストールが完了しました。ファイル情報を探しています...ステータスと残り時間を表示しない%(filename)s を %(device)s (%(preset)s) 向けにエンコードしています%(filename)s の %(device)s (%(preset)s) 向けのエンコードに失敗しました!エンコード中... %(percent)i%% (残り %(time)s)入力エラー!エラー!%(filename)s を展開しています%(location)s を取得していますフォント:字幕を挿入するときに使用するフォント強制的にインターレース解除一般ID:待機中%(infile)s には有効なストリームが含まれていません!ダウンロードしたデバイスプリセット・ファイルをインストールインストール完了完了長さ : プレビューのフレームレート:モデル名:マウントされていませんプリセット情報:プリセット:光学メディアとキャプチャデバイスを検索する字幕を選択エンコーディング中にプレビューを表示するデバッグ情報を表示シンプル UIソース設定ソース:挿入する字幕ファイル字幕ファイル:トランスコード・キュー: 不明不明な V4L バージョン %(version)s!不明なアイコン URI %(uri)sバージョン:動画 :編集(_E)ファイル(_F)ヘルプ(_H)表示(_V)標準arista-0.9.7/locale/el/0000755000175000017500000000000011577653227014216 5ustar dandan00000000000000arista-0.9.7/locale/el/LC_MESSAGES/0000755000175000017500000000000011577653227016003 5ustar dandan00000000000000arista-0.9.7/locale/el/LC_MESSAGES/arista.mo0000644000175000017500000001072011577650632017620 0ustar dandan000000000000002C<HIQZc'}.6I[nu~2)H r$ +% Q#^*$!*28>DJ #  % H?  !   k )Z  . / ' )  & / +E )q  5 g &M t &*4@7+xa!c(NV!2 T^ m{ ($/ 2.'- * +!"&, #10 )% Audio: Codec : Video:%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista homepageArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Choose Source Directory...Choose Source File...Daniel G. Taylor Description:Discovering file info...Don't show status and time remainingError with input!Error!GeneralIdleInstallation SuccessfulJob doneModel:No valid DVD title found!Not a valid integer or fraction: %(value)s!Not mounted.Problem calculating time remaining!Select SubtitlesShow information about input file and exitShow live preview during transcodingShow verbose (debug) outputSource PropertiesSource:UnknownVersion:Video :_Edit_File_Help_ViewProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2010-10-27 08:45+0000 Last-Translator: Charis Kouzinopoulos Language-Team: Greek MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) Ήχος: Αποκωδικοποιητής : Βίντεο:%(name)s: %(description)s%prog [επιλογές] [αρχείο1 αρχείο2 αρχείο3 ...]ΑπόπλεξηΠροεπισκόπησηΠηγέςΥπότιτλοιΈνας μετατροπέας πολυμέσων για την επιφάνεια εργασίας GNOME.Επιπλέον πληροφορίες :Προτιμήσεις AristaΠρόγραμμα Μετατροπής AristaΠρόγραμμα Μετατροπής Arista Αρχική σελίδα του AristaΤο Arista μεταφράζεται μέσω του launchpad.net. Παρακαλούμε δείτε: https://translations.launchpad.net/arista/trunk/+pots/aristaΉχος :Συγγραφέας:Διαθέσιμες συσκευές:Επιλογή Καταλόγου Πηγής...Επιλογή Αρχείου Πηγής...Daniel G. Taylor Περιγραφή:Εύρεση πληροφοριών αρχείου...Να μην εμφανίζεται η κατάσταση και ο χρόνος που απομένειΣφάλμα με την είσοδο!Σφάλμα!ΓενικάΑνενεργόΕπιτυχής EγκατάστασηΗ εργασία ολοκληρώθηκεΜοντέλο:Δε βρέθηκε έγκυρος τίτλος DVD!Μη έγκυρος ακέραιος ή κλάσμα: %(value)s!Δεν είναι προσαρτημένο.Σφάλμα κατά τον υπολογισμό του υπολοιπόμενου χρόνου!Επιλογή ΥποτίτλωνΕμφάνιση πληροφοριών για το αρχείο εισόδου και έξοδοςΕμφάνιση προεπισκόπησης κατά τη μετατροπήΕμφάνιση αναλυτικής εξόδου (για αποσφαλμάτωση)Προτιμήσεις ΠηγήςΠηγή:ΆγνωστοΈκδοση:Βίντεο :Ε_πεξεργασίαΑρ_χείοΒοή_θειαΠ_ροβολήarista-0.9.7/locale/ia/0000755000175000017500000000000011577653227014207 5ustar dandan00000000000000arista-0.9.7/locale/ia/LC_MESSAGES/0000755000175000017500000000000011577653227015774 5ustar dandan00000000000000arista-0.9.7/locale/ia/LC_MESSAGES/arista.mo0000644000175000017500000000072611577650645017622 0ustar dandan00000000000000$,89Project-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2011-06-18 04:02+0000 Last-Translator: FULL NAME Language-Team: Interlingua MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) arista-0.9.7/locale/cs/0000755000175000017500000000000011577653227014223 5ustar dandan00000000000000arista-0.9.7/locale/cs/LC_MESSAGES/0000755000175000017500000000000011577653227016010 5ustar dandan00000000000000arista-0.9.7/locale/cs/LC_MESSAGES/arista.mo0000644000175000017500000002045511577650626017636 0ustar dandan00000000000000d<\<>75 = F O a '{ *     . F _ r    n u-    (    #6 NZ  ( )  . K j $ 1 9 .CU\t$' +'Bj . ) :+W $ # %,Fs0*$ !+=E]Br   &,2:<> ;J'1!$F \j&yx$+4BwK(:B)}E-#"%F3l=1!(B[-q)6 +(Bk -6  3)R#|8 -)?0X 0'2!611h'$ " 2 DI      ! ! ! #!%KP;ab- dIO T'H&/CUVG+NQ0*5`3?A]2^SR <4,1)MFXYJ (\B:!L >876W9E_[=. @D"$c#Z %(channels)d channels(s) : %(rate)dHz @ %(depth)dbits (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d x %(height)d @ %(rate_num)d/%(rate_den)d fps Audio: Codec : Video:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [options] infile [infile infile ...]DeinterlacingLive PreviewSourcesSubtitlesA multimedia transcoder for the GNOME desktop.Additional information :Arista PreferencesArista TranscoderArista Transcoder Arista Transcoder GUI Arista homepageArista is released under the GNU LGPL 2.1. Please see: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista is translated through launchpad.net. Please see: https://translations.launchpad.net/arista/trunk/+pots/aristaAudio :Author:Available devices:Can't find %(path)s in any known prefix!Can't query position!Choose Source Directory...Choose Source File...Cleaning up and flushing buffers...Conversion of %(filename)s to %(device)s %(preset)s failed! Reason: %(reason)sConvert for deviceConvert this media using a device presetDaniel G. Taylor Description:Device preset %(name)s successfully installed.Device to encode to [computer]Discovering file info...Don't show status and time remainingEncoding %(filename)s for %(device)s (%(preset)s)Encoding %(filename)s for %(device)s (%(preset)s) failed!Encoding... %(percent)i%% (%(time)s remaining)Error with input!Error!Extracting %(filename)sFetching %(location)sFont to render:Font to use when rendering subtitlesForce deinterlacing of sourceFound item in queue! Queue is %(queue)sGeneralID:IdleInput %(infile)s contains no valid streams!Install a downloaded device preset fileInstallation SuccessfulJob doneLength : Live preview framerate:Loaded device %(device)s (%(presets)d presets)Make:Mime Type : Model:No presets have been defined for %(name)sNo valid DVD title found!Not a recognized media file!Not a valid integer or fraction: %(value)s!Not mounted.Other unsuported Multimedia stream :Output file name [auto]Preset info:Preset to encode to [default]Presets:Problem calculating time remaining!Processing %(job_count)d jobs...Search for optical media and capture devicesSelect SubtitlesShow information about available devices [false]Show information about input file and exitShow live preview during transcodingShow verbose (debug) outputSimple UISource PropertiesSource:Subtitle file to renderSubtitles to render:There was an error fetching and installing %(location)s: %(error)sTranscode queue: UnknownUnknown V4L version %(version)s!Unknown icon URI %(uri)sVersion:Video :_Edit_File_Help_ViewdefaultProject-Id-Version: arista Report-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2011-06-15 20:24-0400 PO-Revision-Date: 2011-02-10 18:21+0000 Last-Translator: Michal Chlup Language-Team: Czech MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Launchpad-Export-Date: 2011-06-20 13:56+0000 X-Generator: Launchpad (build 13242) %(channels)d kanál(ů) : %(rate)dHz @ %(depth)dbitů (int) %(channels)d channels(s) : %(rate)dHz @ %(width)dbits (float) %(width)d × %(height)d při %(rate_num)d/%(rate_den)d fps Zvuk: Kodek: Obraz:%(min)d:%(sec)02d%(name)s: %(description)s%prog [options] [file1 file2 file3 ...]%prog [volby] VstSoubor [VstSoubor VstSoubor ...]Odstranění prokládáníŽivý náhledZdrojeTitulkyMultimediální transkodér pro GNOME.Další informace:Nastavení AristyTranskodér AristaTranskodér Arista GUI transkodéru Arista Domovská stránka AristyArista je vytvořena pod GNU LGPL 2.1. Prosím, podívejte se na: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.htmlArista je překládána přes launchpad.net. Prosím, podívejte se na: https://translations.launchpad.net/arista/trunk/+pots/aristaZvuk:Autor:Dostupná zařízení:Nemohu najít %(path)s v žádném známém prefixu!Nelze získat pozici!Zvolte zdrojovou složkuVyberte zdroj souboru...Pročišťování paměti ..Konverze %(filename)s pro %(device)s %(preset)s selhala! Důvod: %(reason)sPřevést pro zařízeníPřevést tento soubor za použití nastavení zařízeníDaniel G. Taylor Popis:Soubor předvolby zařízení %(name)s byl úspěšně nainstalován.Zařízení pro enkódování do [počítač]Zkoumají se informace o souboru...Nezobrazovat stav a zbývající časKóduje se %(filename)s pro %(device)s (%(preset)s)Kódování %(filename)s pro %(device)s (%(preset)s) selhalo!Kódování... %(percent)i%% (%(time)s remaining)Chyba ve vstupu!Chyba!Extrahuje se %(filename)sStahování %(location)sPísmo k vykreslení:Font použitý během renderování titulků.Vynutit odstranění prokládání zdrojeByla nalezena položka ve frontě! Fronta je %(queue)sObecnéID:NečinnýVstup %(infile)s neobsahuje platné proudy!Instalovat soubor předvoleb zařízeníInstalace byla úspěšnáÚkol splněnDélka: Počet snímků za vteřinu živého náhleduZavedené zařízení %(device)s (%(presets)d presets)Výrobek:MIME typ: Model:Pro %(name)s nebyla definována žádná předvolbaNebyl nalezen žádný platný titul DVD!Mediální soubor nebyl rozpoznán!Neplatná celočíselná hodnota nebo zlomek: %(value)s!Nepřipojeno.Další nepodporovaný multimediální proud:Název výstupního souboru [automaticky]Informace o předvolbě:Přednastavené pro enkódování do [výchozí]Předvolby:Problém při počítání zbývajícího času!Vykonává se %(job_count)d operací...Hledat optická média a zachytávací zařízeníVyberte titulkyZobrazit informace o dostupných zařízeních [false]Zobrazit informace o vstupním souboru a ukončitZobrazit náhled během překódováníZobrazit ukecaný (ladící) výstupJednoduché UIVlastnosti zdrojeZdroj:Soubor s titulky pro renderováníTitulky k vykreslení:Došlo k chybě při stahování a instalaci %(location)s: %(error)sFronta překódování: NeznámýNeznámá verze V4L %(version)s!Neznámá ikona URI %(uri)sVerze:Obraz:Ú_pravy_Soubor_Nápověda_Zobrazitvýchozíarista-0.9.7/arista.desktop0000644000175000017500000000050711516114655015225 0ustar dandan00000000000000[Desktop Entry] Name=Arista Transcoder GenericName=Multimedia Converter Comment=Convert multimedia for all your devices Exec=arista-gtk StartupNotify=true Terminal=false Type=Application Icon=/usr/share/arista/ui/icon.svg Categories=AudioVideo;GNOME;GTK; MimeType=x-content/video-dvd;x-content/video-vcd;x-content/video-svcd; arista-0.9.7/help/0000755000175000017500000000000011577653227013307 5ustar dandan00000000000000arista-0.9.7/help/ac-3.html0000644000175000017500000000126011576404344014710 0ustar dandan00000000000000

AC-3 (Dolby Digital)

AC-3 is a codec used on video DVDs. It supports up to six audio channels.

Options

  • Bitrate (number)
    Set a specific bitrate to control file size. Default is 128000.
    bitrate=128000
arista-0.9.7/help/common.html0000644000175000017500000000216311573745077015470 0ustar dandan00000000000000

Common Options

  • Multi-pass encoding
    Encode in multiple passes, which is useful for bitrate-based encoding. This can be achieved by putting a semicolon between options for differenc passes, for example:
    bitrate=??? pass=1; bitrate=??? pass=2
  • Multi-threading
    For encoders that support multi-threading (using multiple processor cores simultaneously), you can use a special variable which will be replaced by the number of CPU cores.
    %(threads)s
    If an encoder has the option threads then this would look like:
    threads=%(threads)s
arista-0.9.7/help/mp3.html0000644000175000017500000000302411575413236014663 0ustar dandan00000000000000

MP3

An older-generation MPEG1 audio codec, now the most popular audio codec in the world. AAC and Vorbis are better quality, but nearly every device in existence supports MP3.

Options

  • VBR Quality (0 - 9)
    Set a specific audio quality (recommended). Default is 4. Lower numbers are higher quality.
    vbr-quality=2
  • Bitrate (number)
    Set a specific bitrate in kbps to control file size. Default is 128.
    bitrate=196
  • Variable Bitrate (number)
    Set bitrate mode.
    • none: constant bitrate (default)
    • old: old VBR algorithm
    • abr: VBR average bitrate
    • new: Lame's new VBR algorithm (recommended)
    vbr=new
arista-0.9.7/help/mpeg4.html0000644000175000017500000000321011575413255015176 0ustar dandan00000000000000

MPEG4 / DivX / XviD

The original MPEG4 codec, now replaced by H.264. DivX and XviD are names of alternative implementations of the same codec. MPEG4 is still widely used and is widely supported by media players.

Options

  • Quantizer (2 - 31)
    Set a specific visual quality (recommended). Lower is better. Default is 2. Must be used with pass=quant.
    quantizer=15
  • Bitrate (number)
    Set a specific bitrate to control file size. Default is 1800000.
    bitrate=512000
  • Multi-pass mode
    Set the mode of operation for single or multiple passes.
    • cbr: constant bitrate (default)
    • quant: constant quantizer / quality (recommended)
    • pass1: first pass in two-pass mode
    • pass2: second pass in two-pass mode
    pass=quant
arista-0.9.7/help/flac.html0000644000175000017500000000151511576223735015100 0ustar dandan00000000000000

FLAC

The Free Lossless Audio Codec is a completely open, patent and royalty free, professional audio codec that can be used to compress audio data with zero loss in quality. File sizes are typically much larger than Vorbis, MP3, or AAC but smaller than the original raw audio.

Options

  • Quality (0 - 10)
    Set a specific audio quality. Default is 5.
    quality=6
arista-0.9.7/help/404.html0000644000175000017500000000045511575413170014475 0ustar dandan00000000000000

Not Found

No specific help documentation was found for this codec.

arista-0.9.7/help/aac.html0000644000175000017500000000220711575413177014716 0ustar dandan00000000000000

AAC

The MPEG2 / MPEG4 audio codec. Comparable to Vorbis.

Options

  • Bitrate (number)
    Set a specific bitrate to control file size. Default is 128000.
    bitrate=196000
  • Profile>
    Set the AAC encoding profile.
    • 1: Main profile
    • 2: Low complexity profile (worst, default)
    • 3: Scalable sampling rate profile
    • 4: Long term prediction profile (best)
    profile=4
arista-0.9.7/help/mpeg2.html0000644000175000017500000000431111575413247015200 0ustar dandan00000000000000

MPEG2

The MPEG2 video codec. Most widely known for its use on DVDs and digital cable systems. It is an older generation codec and its use is generally discouraged for modern applications.

Options

  • Format (0 - 13)
    Set a format for MPEG encoding
    • 0: Generic MPEG-1 (default)
    • 1: Standard VCD
    • 2: User VCD
    • 3: Generic MPEG-2
    • 4: Standard SVCD
    • 5: User SVCD
    • 6: VCD Stills Sequence
    • 7: SVCD Stills Sequence
    • 8: DVD MPEG-2 for dvdauthor
    • 9: DVD MPEG-2
    • 10: ATSC 480i
    • 11: ATSC 480p
    • 12: ATSC 720p
    • 13: ATSC 1080i
    format=3
  • Bitrate (number)
    Set a specific bitrate in kbps to control file size. Default is 1125.
    bitrate=1500
  • Quantisation
    Set the mode of operation for bitrate management
    • -1: constant bitrate mode
    • 0: average bitrate mode (default)
    • 1 to 31: constant quality mode, with 1 being best
    quantisation=7
arista-0.9.7/help/style.css0000644000175000017500000000071311576250171015150 0ustar dandan00000000000000body { font-size: 10pt; margin: 1em; } h1 { font-size: 150%; text-shadow: 1px 1px 3px #aaa; } h2 { font-size: 120%; text-shadow: 1px 1px 2px #ccc; } pre { margin-left: 1em; } code { background-color: #eee; border: 1px solid #ddd; padding: 0.25em; border-radius: 3px; } iframe { width: 100%; height: 380px; margin: -1em -1em 0em -1em; } .options > ul { list-style: none; padding-left: 0px; } arista-0.9.7/help/flv.html0000644000175000017500000000343111575413206014752 0ustar dandan00000000000000

FLV / Spark / H.263

FLV is an older-generation codec designed for Adobe Flash. It is comparable to MPEG4 / DivX / XviD and Theora. It is commonly only used in the Flash Video container and has been mostly replaced by H.264.

Options

  • Quantizer (0 - 30)
    Set a specific visual quality (recommended). Default is 0.01.
    quantizer=10
  • Bitrate (number)
    Set a specific bitrate to control file size. Default is 300000.
    bitrate=512000
  • Pass
    Set the mode of operation for single or multiple passes.
    • cbr: single pass encoding (default)
    • quant: constant quality mode (recommended)
    • pass1: first of two passes
    • pass2: second of two passes
    pass=quant
  • Threads
    Use multiple threads when encoding.
    threads=2
arista-0.9.7/help/vp8.html0000644000175000017500000000321411575413047014702 0ustar dandan00000000000000

VP8

VP8 is a modern, high quality codec released by Google for WebM. It is comparable to H.264 but is patent and royalty-free.

Options

  • Quality (0 - 10)
    Set a specific visual quality (recommended). Default is 5.
    quality=3.75
  • Bitrate (number)
    Set a specific bitrate to control file size. Default is unset.
    bitrate=512000
  • Multi-pass mode
    Set the mode of operation for single or multiple passes.
    • one-pass: single pass encoding (default)
    • first-pass: first of two passes
    • last-pass: second of two passes
    multipass-mode=one-pass
  • Threads
    Use multiple threads when encoding.
    threads=2
arista-0.9.7/help/vorbis.html0000644000175000017500000000275211575413273015500 0ustar dandan00000000000000

Vorbis

Vorbis is a completely open, patent and royalty free, professional audio codec comparable to MP3 and AAC. It is used for music, games, etc and has become the default audio format for WebM.

Options

  • Quality (0 - 1)
    Set a specific audio quality (recommended). Default is 0.3.
    quality=0.5
  • Bitrate (number)
    Set a specific bitrate to control file size. Default is unset.
    bitrate=128000
  • Min-bitrate (number)
    Set the minimum allowed bitrate. Default is unset.
    min-bitrate=64000
  • Max-bitrate> (number)
    Set the maximum allowed bitrate. Default is unset.
    max-bitrate=192000
arista-0.9.7/help/mp2.html0000644000175000017500000000223211576404736014670 0ustar dandan00000000000000

MP2

MPEG1 Layer 2 audio, later replaced by MP3, is used on video DVDs.

Options

  • Bitrate (number)
    Set a specific bitrate in kbps to control file size. Default is 192.
    bitrate=256
  • Mode
    Set the encoding mode.
    • auto: select automatically
    • stereo: stereo
    • joint: joint stereo (default)
    • dual: dual channel
    • mono: mono
    mode=stereo
arista-0.9.7/help/h.264.html0000644000175000017500000001174111575413216014730 0ustar dandan00000000000000

H.264 / AVC

H.264 / AVC, also known as MPEG4 Part 10 is the latest MPEG video codec. It is comparable to VP8, and while somewhat better in quality it is encumbered by patents and royalty fees. It is currently the most widely supported format.

Options

  • Quantizer (1 - 50)
    Set a specific visual quality (recommended). Default is 21. Must use with pass=quant.
    quantizer=23
  • Bitrate (number)
    Set a specific bitrate in kbps to control file size. Default is 2048 kbps. Must use with pass=cbr, pass1, or pass2.
    bitrate=512
  • Profile
    Set an encoding profile. This may override other options. Defautl is main.
    • baseline: H.264 Baseline Profile
    • main: H.264 Main Profile
    • high: H.264 High Profile
    profile=baseline
  • Speed Preset Set a speed preset. This automatically configures other options listed below. Default is medium.
    • ultrafast
    • superfast
    • veryfast
    • faster
    • fast
    • medium
    • slow
    • slower
    • veryslow
    speed-preset=ultrafast
  • CABAC (boolean)
    Choose between using CABAC or CAVLC. CABAC is better but not supported by all devices (e.g. the ones requiring H.264 Baseline profile). Default is true.
    cabac=false
  • Motion estimation
    Set a motion estimation method.
    • dia: diamond search (fastest, worst)
    • hex: hexagon search (default)
    • umh: uneven multi-hexagonal search (recommended)
    • esa: exhaustive search (slowest, best)
    me=umh
  • Subpixel motion estimation (1 - 6)
    Set a subpixel motion estimation and partition decision quality. The higher the number the slower the encoding and better the final quality. Default is 1.
    subme=5
  • Pass
    Set the mode of operation for single or multiple passes.
    • cbr: Constant bitrate (default)
    • qual: Constant quality (recommended)
    • pass1: first of two passes
    • pass2: second of two passes
    pass=qual
  • Threads
    Use multiple threads when encoding. Default is 0, which automatically chooses the best number for you.
    threads=2
  • Reference frames (1 - 12)
    Set the number of reference frames. Using more will allow frames to reference parts of previous frames. Some devices can only use a limited amount of reference frames. Default is 1. Values over 3 are not recommended.
    ref=3
  • B-frames (0 - 4)
    Set the number of bidirectional reference frames. Some devices don't support this feature. Default is 0. Recommended is 1 or 2.
    bframes=1
arista-0.9.7/help/theora.html0000644000175000017500000000341411575413265015453 0ustar dandan00000000000000

Theora

Theora is an older-generation patent and royalty-free codec comparable to MPEG4 / DivX / XviD. It is based on VP3, which has mostly been superceded by VP8 (used in WebM).

Options

  • Quality (0 - 63)
    Set a specific visual quality (recommended). Default is 48.
    quality=35
  • Bitrate (number)
    Set a specific bitrate in kbps to control file size. Default is unset.
    bitrate=512000
  • Speed level (0 - 3)
    Set the amount of motion vector searching (and the speed of encoding). Default is 1.
    speed-level=2
  • Multi-pass mode
    Set the mode of operation for single or multiple passes.
    • single-pass: single pass encoding (default)
    • first-pass: first of two passes
    • second-pass: second of two passes
    multipass-mode=one-pass